I've read through all the known issues and literature I could find on the internet and I'm still struggling to get roborock v2 s50 working in home assistant or with python-miio.
I've used various token extraction techniques and the token is correct.
Now home assistant also has issues. After adding parameters to configuration.yaml the device won't show up and there are errors in the log. Namely the errors are:
The token is correct as I have been able to use mirobo in python to read some information?
2019-01-14 23:54:37 WARNING (MainThread) [homeassistant.setup] Setup of recorder is taking over 10 seconds.
2019-01-14 23:54:37 WARNING (MainThread) [homeassistant.setup] Setup of frontend is taking over 10 seconds.
2019-01-14 23:54:38 WARNING (MainThread) [homeassistant.loader] You are using a custom component for climate.xiaomi_miio which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.
2019-01-14 23:54:58 WARNING (MainThread) [homeassistant.components.sensor] Setup of platform yr is taking over 10 seconds.
2019-01-14 23:54:58 WARNING (MainThread) [homeassistant.setup] Setup of config is taking over 10 seconds.
2019-01-14 23:54:58 ERROR (MainThread) [homeassistant.components.sensor.yr] Retrying in 19 minutes:
2019-01-14 23:54:59 ERROR (MainThread) [homeassistant.components.vacuum] Error while setting up platform xiaomi_miio
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity_platform.py", line 128, in _async_setup_platform
SLOW_SETUP_MAX_WAIT, loop=hass.loop)
File "/usr/local/lib/python3.6/asyncio/tasks.py", line 358, in wait_for
return fut.result()
File "/usr/local/lib/python3.6/site-packages/homeassistant/components/vacuum/xiaomi_miio.py", line 122, in async_setup_platform
vacuum = Vacuum(host, token)
File "/usr/local/lib/python3.6/site-packages/miio/vacuum.py", line 47, in __init__
super().__init__(ip, token, start_id, debug)
File "/usr/local/lib/python3.6/site-packages/miio/device.py", line 130, in __init__
self.token = bytes.fromhex(token)
ValueError: non-hexadecimal number found in fromhex() arg at position 29
2019-01-14 23:55:01 WARNING (MainThread) [homeassistant.components.vacuum] Setup of platform xiaomi_miio is taking over 10 seconds.
2019-01-14 23:55:01 DEBUG (SyncWorker_1) [miio.protocol] Unable to decrypt, returning raw bytes: b''
2019-01-14 23:55:02 DEBUG (SyncWorker_1) [miio.device] 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\x05\xc3\x15\x7f\\<\x86\xa5' (total 16)
value = Container:
length = 32
unknown = 0
device_id = b'\x05\xc3\x15\x7f' (total 4)
ts = 2019-01-14 12:55:01
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)
2019-01-14 23:55:02 DEBUG (SyncWorker_1) [miio.device] Discovered 05c3157f with ts: 2019-01-14 12:55:01, token: b'ffffffffffffffffffffffffffffffff'
2019-01-14 23:55:03 INFO (MainThread) [custom_components.climate.xiaomi_miio] Initializing with host 192.168.1.77 (token 37df3...)
2019-01-14 23:55:03 DEBUG (MainThread) [miio.protocol] Unable to decrypt, returning raw bytes: b''
2019-01-14 23:55:03 DEBUG (MainThread) [miio.device] 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\x05\x97\x1e\xe2\x00\x01t\x91' (total 16)
value = Container:
length = 32
unknown = 0
device_id = b'\x05\x97\x1e\xe2' (total 4)
ts = 1970-01-02 02:29:37
offset1 = 0
offset2 = 16
length = 16
checksum = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' (total 16)
2019-01-14 23:55:03 DEBUG (MainThread) [miio.device] Discovered 05971ee2 with ts: 1970-01-02 02:29:37, token: b'00000000000000000000000000000000'
2019-01-14 23:55:05 DEBUG (MainThread) [miio.device] 192.168.1.77:54321 >>: {'id': 1, 'method': 'miIO.info', 'params': []}
2019-01-14 23:55:05 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 >>: {'id': 1, 'method': 'get_status', 'params': []}
2019-01-14 23:55:05 DEBUG (MainThread) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:29:39, id: 1) << {'result': {'life': 95379, 'cfg_time': 0, 'token': '37df3393013a424762038be66f444df7', 'mac': '7C:49:EB:81:94:B5', 'fw_ver': '1.4.1_147', 'hw_ver': 'MW300', 'model': 'lumi.acpartner.v2', 'mcu_fw_ver': '0148', 'wifi_fw_ver': 'SD878x-14.76.36.p84-702.1.0-WM', 'ap': {'rssi': -44, 'ssid': 'MyRepublic 7801', 'bssid': '10:13:31:57:78:01'}, 'netif': {'localIp': '192.168.1.77', 'mask': '255.255.255.0', 'gw': '192.168.1.1', 'gw_mac': '10:13:31:57:78:00'}, 'mmfree': 152552, 'ot': 'ott', 'otu_stat': [296, 302, 132, 5, 126, 1317], 'ott_stat': [2, 0, 1647, 333]}, 'id': 1}
2019-01-14 23:55:05 INFO (MainThread) [custom_components.climate.xiaomi_miio] lumi.acpartner.v2 1.4.1_147 MW300 detected
2019-01-14 23:55:05 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 (ts: 2019-01-14 12:55:05, id: 1) << {'result': [{'msg_ver': 2, 'msg_seq': 9, 'state': 8, 'battery': 100, 'clean_time': 0, 'clean_area': 0, 'error_code': 0, 'map_present': 1, 'in_cleaning': 0, 'in_returning': 0, 'in_fresh_state': 1, 'lab_status': 0, 'fan_power': 60, 'dnd_enabled': 1}], 'id': 1}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 >>: {'id': 2, 'method': 'get_consumable', 'params': []}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 (ts: 2019-01-14 12:55:05, id: 2) << {'result': [{'main_brush_work_time': 222, 'side_brush_work_time': 222, 'filter_work_time': 222, 'sensor_dirty_time': 0}], 'id': 2}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 >>: {'id': 3, 'method': 'get_clean_summary', 'params': []}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 (ts: 2019-01-14 12:55:05, id: 3) << {'result': [0, 0, 0, []], 'id': 3}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 >>: {'id': 4, 'method': 'get_clean_summary', 'params': []}
2019-01-14 23:55:06 DEBUG (SyncWorker_1) [miio.device] 192.168.1.61:54321 (ts: 2019-01-14 12:55:06, id: 4) << {'result': [0, 0, 0, []], 'id': 4}
2019-01-14 23:55:06 DEBUG (SyncWorker_3) [miio.device] 192.168.1.77:54321 >>: {'id': 2, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:55:06 DEBUG (SyncWorker_3) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:29:40, id: 2) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 2}
2019-01-14 23:55:06 ERROR (MainThread) [homeassistant.components.vacuum] xiaomi_miio: Error on device update!
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity_platform.py", line 248, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.6/site-packages/homeassistant/components/vacuum/xiaomi_miio.py", line 378, in update
self.last_clean = self._vacuum.last_clean_details()
File "/usr/local/lib/python3.6/site-packages/miio/vacuum.py", line 194, in last_clean_details
last_clean_id = self.clean_history().ids.pop(0)
IndexError: pop from empty list
2019-01-14 23:56:09 DEBUG (SyncWorker_4) [miio.device] 192.168.1.77:54321 >>: {'id': 3, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:56:14 DEBUG (SyncWorker_4) [miio.device] Retrying with incremented id, retries left: 3
2019-01-14 23:56:14 DEBUG (SyncWorker_4) [miio.protocol] Unable to decrypt, returning raw bytes: b''
2019-01-14 23:56:15 DEBUG (SyncWorker_4) [miio.device] 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\x05\x97\x1e\xe2\x00\x01t\xd9' (total 16)
value = Container:
length = 32
unknown = 0
device_id = b'\x05\x97\x1e\xe2' (total 4)
ts = 1970-01-02 02:30:49
offset1 = 0
offset2 = 16
length = 16
checksum = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' (total 16)
2019-01-14 23:56:15 DEBUG (SyncWorker_4) [miio.device] Discovered 05971ee2 with ts: 1970-01-02 02:30:49, token: b'00000000000000000000000000000000'
2019-01-14 23:56:15 DEBUG (SyncWorker_4) [miio.device] 192.168.1.77:54321 >>: {'id': 104, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:56:15 DEBUG (SyncWorker_4) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:30:49, id: 104) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 104}
2019-01-14 23:57:10 DEBUG (SyncWorker_2) [miio.device] 192.168.1.77:54321 >>: {'id': 105, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:57:10 DEBUG (SyncWorker_2) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:31:44, id: 105) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 105}
2019-01-14 23:58:11 DEBUG (SyncWorker_0) [miio.device] 192.168.1.77:54321 >>: {'id': 106, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:58:11 DEBUG (SyncWorker_0) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:32:45, id: 106) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 106}
2019-01-14 23:59:12 DEBUG (SyncWorker_3) [miio.device] 192.168.1.77:54321 >>: {'id': 107, 'method': 'get_model_and_state', 'params': []}
2019-01-14 23:59:12 DEBUG (SyncWorker_3) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:33:46, id: 107) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 107}
2019-01-15 00:00:12 DEBUG (SyncWorker_1) [miio.device] 192.168.1.77:54321 >>: {'id': 108, 'method': 'get_model_and_state', 'params': []}
2019-01-15 00:00:12 DEBUG (SyncWorker_1) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:34:46, id: 108) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 108}
2019-01-15 00:01:13 DEBUG (SyncWorker_0) [miio.device] 192.168.1.77:54321 >>: {'id': 109, 'method': 'get_model_and_state', 'params': []}
2019-01-15 00:01:13 DEBUG (SyncWorker_0) [miio.device] 192.168.1.77:54321 (ts: 1970-01-02 02:35:47, id: 109) << {'result': ['00000000FFFFFFFF00', '0011101EA0FFFFFFFF', '0'], 'id': 109}
2019-01-15 00:02:14 DEBUG (SyncWorker_3) [miio.device] 192.168.1.77:54321 >>: {'id': 110, 'method': 'get_model_and_state', 'params': []}
2019-01-15 00:02:19 DEBUG (SyncWorker_3) [miio.device] Retrying with incremented id, retries left: 3
2019-01-15 00:02:19 DEBUG (SyncWorker_3) [miio.protocol] Unable to decrypt, returning raw bytes: b''
2019-01-15 00:02:19 DEBUG (SyncWorker_3) [miio.device] 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\x05\x97\x1e\xe2\x00\x01vF' (total 16)
value = Container:
length = 32
unknown = 0
device_id = b'\x05\x97\x1e\xe2' (total 4)
ts = 1970-01-02 02:36:54
offset1 = 0
offset2 = 16
length = 16
checksum = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' (total 16)
I've read through all the known issues and literature I could find on the internet and I'm still struggling to get roborock v2 s50 working in home assistant or with python-miio.
I've used various token extraction techniques and the token is correct.
Using 'mirobo' some informational commands work:
Other control based commands do not:
I don't understand why some of the commands work but not others?
Now home assistant also has issues. After adding parameters to configuration.yaml the device won't show up and there are errors in the log. Namely the errors are:
The token is correct as I have been able to use mirobo in python to read some information?
Really appreciate any guidance that could be offered here