Here are the logs, it looks like the parameter ‘load_power’ is added each time a request is made rather than being in the param list once.
The successful calls are:
2018-05-28 17:11:40 DEBUG (SyncWorker_12) [miio.device] 192.168.0.180:54321 >>: {'id': 1, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power']} 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.protocol] Unable to decrypt, returning raw bytes: b'' 2018-05-28 17:11:40 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\x04A\xbc\xcc\x00\x01p\xb7' (total 16) value = Container: length = 32 unknown = 0 device_id = b'\x04A\xbc\xcc' (total 4) ts = 1970-01-02 02:13:11 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) 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.device] Discovered 0441bccc with ts: 1970-01-02 02:13:11, token: b'00000000000000000000000000000000' 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.device] 192.168.0.180:54321 >>: {'id': 2, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power']} 2018-05-28 17:11:40 DEBUG (SyncWorker_12) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:13:11, id: 1) << {'result': [True, True, 42, 'on', None], 'id': 1} 2018-05-28 17:11:40 DEBUG (SyncWorker_12) [miio.device] 192.168.0.180:54321 >>: {'id': 2, 'method': 'get_power', 'params': []} 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:13:12, id: 2) << {'result': [True, True, 42, 'on', None], 'id': 2} 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.device] 192.168.0.180:54321 >>: {'id': 3, 'method': 'get_power', 'params': []} 2018-05-28 17:11:40 DEBUG (SyncWorker_1) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:13:12, id: 3) << {'result': [4900], 'id': 3} 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [miio.device] Retrying with incremented id, retries left: 3 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [miio.protocol] Unable to decrypt, returning raw bytes: b'' 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [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\x04?\xf8X\x00\x01kG' (total 16) value = Container: length = 32 unknown = 0 device_id = b'\x04?\xf8X' (total 4) ts = 1970-01-02 01:49:59 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) 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [miio.device] Discovered 043ff858 with ts: 1970-01-02 01:49:59, token: b'00000000000000000000000000000000' 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [miio.device] 192.168.0.181:54321 >>: {'id': 104, 'method': 'get_power', 'params': []} 2018-05-28 17:11:44 DEBUG (SyncWorker_7) [miio.device] 192.168.0.181:54321 (ts: 1970-01-02 01:49:59, id: 104) << {'result': [600], 'id': 104} 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [miio.device] Retrying with incremented id, retries left: 3 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [miio.protocol] Unable to decrypt, returning raw bytes: b'' 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [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\x04A\xbc\xcc\x00\x01p\xbd' (total 16) value = Container: length = 32 unknown = 0 device_id = b'\x04A\xbc\xcc' (total 4) ts = 1970-01-02 02:13:17 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) 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [miio.device] Discovered 0441bccc with ts: 1970-01-02 02:13:17, token: b'00000000000000000000000000000000' 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [miio.device] 192.168.0.180:54321 >>: {'id': 104, 'method': 'get_power', 'params': []} 2018-05-28 17:11:45 DEBUG (SyncWorker_12) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:13:17, id: 104) << {'result': [4900], 'id': 104} 2018-05-28 17:11:50 DEBUG (MainThread) [homeassistant.components.switch.xiaomi_miio] Got new state: <ChuangmiPlugStatus power=True, usb_power=True, temperature=42load_power=4900, wifi_led=True> 2018-05-28 17:11:50 DEBUG (MainThread) [homeassistant.components.switch.xiaomi_miio] Got new state: <ChuangmiPlugStatus power=True, usb_power=False, temperature=38load_power=600, wifi_led=True> 2018-05-28 17:11:50 DEBUG (MainThread) [homeassistant.components.switch.xiaomi_miio] Got new state: <ChuangmiPlugStatus power=True, usb_power=True, temperature=42load_power=4900, wifi_led=True>
and when it fails, the calls become:
2018-05-28 17:14:37 DEBUG (SyncWorker_7) [miio.device] 192.168.0.180:54321 >>: {'id': 421, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power']} 2018-05-28 17:14:37 DEBUG (SyncWorker_14) [miio.device] 192.168.0.181:54321 >>: {'id': 521, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power']} 2018-05-28 17:14:37 DEBUG (SyncWorker_13) [miio.device] 192.168.0.181:54321 >>: {'id': 522, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power']} 2018-05-28 17:14:37 DEBUG (SyncWorker_8) [miio.device] 192.168.0.180:54321 >>: {'id': 422, 'method': 'get_prop', 'params': ['on', 'usb_on', 'temperature', 'wifi_led', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power', 'load_power']} 2018-05-28 17:14:38 DEBUG (SyncWorker_8) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:16:09, id: 422) << {'id': 422, 'error': {'code': -30001, 'message': 'Resp invalid json.'}} 2018-05-28 17:14:38 DEBUG (SyncWorker_14) [miio.device] 192.168.0.181:54321 (ts: 1970-01-02 01:52:53, id: 521) << {'id': 521, 'error': {'code': -30001, 'message': 'Resp invalid json.'}} 2018-05-28 17:14:38 DEBUG (SyncWorker_13) [miio.device] 192.168.0.181:54321 (ts: 1970-01-02 01:52:53, id: 522) << {'id': 522, 'error': {'code': -30001, 'message': 'Resp invalid json.'}} 2018-05-28 17:14:38 DEBUG (SyncWorker_7) [miio.device] 192.168.0.180:54321 (ts: 1970-01-02 02:16:09, id: 421) << {'id': 421, 'error': {'code': -30001, 'message': 'Resp invalid json.'}} 2018-05-28 17:14:38 ERROR (MainThread) [homeassistant.components.switch.xiaomi_miio] Got exception while fetching the state: {'code': -30001, 'message': 'Resp invalid json.'} 2018-05-28 17:14:38 ERROR (MainThread) [homeassistant.components.switch.xiaomi_miio] Got exception while fetching the state: {'code': -30001, 'message': 'Resp invalid json.'} 2018-05-28 17:14:38 ERROR (MainThread) [homeassistant.components.switch.xiaomi_miio] Got exception while fetching the state: {'code': -30001, 'message': 'Resp invalid json.'} 2018-05-28 17:14:38 ERROR (MainThread) [homeassistant.components.switch.xiaomi_miio] Got exception while fetching the state: {'code': -30001, 'message': 'Resp invalid json.'} 2