syssi / xiaomi_airconditioningcompanion

Xiaomi Mi and Aqara Air Conditioning Companion integration for Home Assistant
Apache License 2.0
398 stars 94 forks source link

dmaker.airfresh.t2017 not accessible via LAN #150

Closed ursval closed 2 years ago

ursval commented 2 years ago

Hi!

I have a dmaker.airfresh.t2017.

After token retrieval I cut off any internet access from this airfresh using router's capabilities. This is the error I got when tried to get status from the device using miiocti

$ miiocli airfresht2017 --ip <ip> --token <token> status
Error: {'code': -9999, 'message': 'user ack timeout'}

Any control attempts (turn on/off the device, display) resulted in same error
However, info can be recieved

$ miiocli airfresht2017 --ip <ip> --token <token> info
Model: dmaker.airfresh.t2017
Hardware version: esp32
Firmware version: 2.2.1

This issue is definitely caused by internet blockade. If I allow internet access, then status retrieval can be done

$ miiocli -d airfresht2017 --ip <ip> --token <token> status
<debug output>
Power: on
Mode: OperationMode.Sleep
PM2.5: 0
CO2: 530
Temperature: 9
Favorite speed: 300
Control speed: 60
Dust filter life: 99 %, 89 days
PTC: False
PTC status: False
Child lock: False
Buzzer: True
Display: False


The question is why I am not able to get status from airfresh when it is offline?

Additional info (failed status command with debug output)

$ miiocli -d airfresht2017 --ip 192.168.50.50 --token <token> status
INFO:miio.cli:Debug mode active
DEBUG:miio.click_common:Unknown model, trying autodetection. None None
DEBUG:miio.miioprotocol:Got a response: Container: 
    data = Container: 
        data = b'' (total 0)
        value = b'' (total 0)
        offset1 = 32
        offset2 = 32
        length = 0
    header = Container: 
        data = b'!1\x00 \x00\x00\x00\x00\x07f\xf0\x1d\x00\x00\x00\xac' (total 16)
        value = Container: 
            length = 32
            unknown = 0
            device_id = unhexlify('0766f01d')
            ts = 1970-01-01 00:02:52
        offset1 = 0
        offset2 = 16
        length = 16
    checksum = b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' (total 16)
DEBUG:miio.miioprotocol:Discovered 0766f01d with ts: 1970-01-01 00:02:52, token: b'ffffffffffffffffffffffffffffffff'
DEBUG:miio.miioprotocol:192.168.50.50:54321 >>: {'id': 1, 'method': 'miIO.info', 'params': []}
DEBUG:miio.miioprotocol:192.168.50.50:54321 (ts: 1970-01-01 00:02:53, id: 1) << {'id': 1, 'result': {'life': 173, 'uid': 2663313642, 'model': 'dmaker.airfresh.t2017', 'token': '<token>', 'ipflag': 1, 'fw_ver': '2.2.1', 'mcu_fw_ver': '0016', 'miio_ver': '0.0.9', 'hw_ver': 'esp32', 'mmfree': 48912, 'mac': '04:CF:8C:1A:63:34', 'wifi_fw_ver': '', 'ap': {'ssid': 'Home Network', 'bssid': 'F0:2F:74:E3:5A:40', 'rssi': -47, 'primary': 6}, 'netif': {'localIp': '192.168.50.50', 'mask': '255.255.255.0', 'gw': '192.168.50.1'}}, 'exe_time': 50}
DEBUG:miio.device:Detected model dmaker.airfresh.t2017
DEBUG:miio.miioprotocol:192.168.50.50:54321 >>: {'id': 2, 'method': 'get_prop', 'params': ['power', 'mode', 'pm25', 'co2', 'temperature_outside', 'favourite_speed', 'control_speed', 'ptc_on', 'ptc_status', 'child_lock', 'sound', 'display', 'filter_intermediate', 'filter_inter_day', 'filter_efficient']}
DEBUG:miio.miioprotocol:192.168.50.50:54321 (ts: 1970-01-01 00:02:57, id: 2) << {'id': 2, 'error': {'code': -9999, 'message': 'user ack timeout'}, 'exe_time': 4010}
DEBUG:miio.click_common:Exception: {'code': -9999, 'message': 'user ack timeout'}
Traceback (most recent call last):
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/click_common.py", line 51, in __call__
    return self.main(*args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/click_common.py", line 300, in wrap
    kwargs["result"] = func(*args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/click_common.py", line 265, in command_callback
    return miio_command.call(miio_device, *args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/click_common.py", line 212, in call
    return method(*args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/click_common.py", line 179, in _wrap
    return func(self, *args, **kwargs)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/airfresh_t2017.py", line 254, in status
    values = self.get_properties(properties, max_properties=15)
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/device.py", line 232, in get_properties
    values.extend(self.send(property_getter, _props[:max_properties]))
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/device.py", line 107, in send
    command, parameters, retry_count, extra_parameters=extra_parameters
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/miioprotocol.py", line 214, in send
    self._handle_error(payload["error"])
  File "/path/to/venv/venv/lib64/python3.7/site-packages/miio/miioprotocol.py", line 274, in _handle_error
    raise DeviceError(error)
miio.exceptions.DeviceError: {'code': -9999, 'message': 'user ack timeout'}
Error: {'code': -9999, 'message': 'user ack timeout'}

Thank you!

ursval commented 2 years ago

Sorry! Wrong repo. Was too tired... Closing this