merdok / homebridge-miot

Homebridge plugin for devices supporting the Xiaomi miot protocol
MIT License
388 stars 61 forks source link

Air Purifier 3H becomes unreachable : 'Call devide timed out' #354

Closed romontei closed 1 year ago

romontei commented 1 year ago

Since you closed the previous issue, I want to add some information and be as detailed as possible. So here we are.

Homebridge Server :

homebridge-miot configuration :

After a fresh installation, everything starts fine, but after random period of running time, the air purifier begins to be inaccessible. The purifier does not respond from Homekit, homebridge-miot fails to poll and even from the Xiaomi app the device cannot be accessed. I have to physically unplug the device to bring it back online. I tried for a long time period (2 months) to get the device working without connecting to homebridge-miot, it appears that it never disconnects and was reachable every time, working perfectly fine. Reconnecting the purifier to the plugin causes the device to fail again.

Capture d’écran du 2022-10-07 09-58-03

After enabling the deep debup log and the homebridge debug mode, it seems that the plugin overloads the device with requests, multiplies per second and chains new handshakes in a loop, without respecting the polling interval of 10 seconds. Checking the fan logs shows a quiet sollicitation to the device.

[07/10/2022, 10:23:41] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�"���ɪF{��e-)�=R�n�
[07/10/2022, 10:23:41] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:23:41] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":2737}
[07/10/2022, 10:23:41] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��"��땸�P4��b߿�_
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (0) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":2837}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�"��,H]�I��/�[V�8�}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (0) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":2937}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��"���+/.���q�id�
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":2536,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":2536,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":2537,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4090}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":2537,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4090}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":2637,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4040}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":2637,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4040}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":2737,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4030}
[07/10/2022, 10:23:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":2737,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4030}

[...]

[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}] - {}
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9212}
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�",y�J��5�c�iU��1��
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9213}
[07/10/2022, 10:42:57] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��",5=��d�h�!�

[...]
                                                                                         ���
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}]
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9111}
[07/10/2022, 10:42:59] [miot] [Purificateur] Poll failed 1 times!
[07/10/2022, 10:42:59] [miot] [Purificateur] Poll failed! Error: Error: Call to device timed out
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}]
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9211}
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9212,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9212,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (-30012) busy. | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9212}
[07/10/2022, 10:42:59] [miot] [Purificateur] Poll failed 2 times!
[07/10/2022, 10:42:59] [miot] [Purificateur] Poll failed! Error: Error: busy.
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9213,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9213,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:42:59] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (-30012) busy. | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9213}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8810,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8810,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8811,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8811,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8911,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:43:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8911,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}

[...]

[07/10/2022, 10:56:45] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:56:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (0) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9145}
[07/10/2022, 10:56:45] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��"�
                                                                               h����7L���,Po9�
[07/10/2022, 10:56:46] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 10:56:46] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 10:56:47] [miot] [Purificateur] Splitting properties into chunks. Number of chunks: 2. Chunk size: 14
[07/10/2022, 10:56:47] [miot] [Purificateur] Chunks:  [
 [
  "air-purifier:on",
  "air-purifier:mode",
  "air-purifier:fault",
  "air-purifier:fan-level",
  "environment:pm2.5-density",
  "environment:relative-humidity",
  "environment:temperature",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "alarm:alarm",
  "indicator-light:on",
  "indicator-light:brightness",
  "physical-controls-locked:physical-controls-locked",
  "motor-speed:favorite-fan-level"
 ],
 [
  "motor-speed:motor-speed",
  "motor-speed:motor-favorite",
  "use-time:use-time"
 ]
]
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}] - {}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}] - {}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9146}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�"�
                                                                               j:H�?3E��#��$X�r
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9147}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��"�
                                                                               j!G��{���n��
                                                                                           �q
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9146,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9146,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (-30012) busy. | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9146}
[07/10/2022, 10:56:47] [miot] [Purificateur] Poll failed 3 times!
[07/10/2022, 10:56:47] [miot] [Purificateur] Poll failed! Error: Error: busy.
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9147,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9147,"error":{"code":-30012,"message":"busy."}}
[07/10/2022, 10:56:47] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (-30012) busy. | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9147}
[07/10/2022, 10:56:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}]
[07/10/2022, 10:56:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":9045}
[07/10/2022, 10:56:49] [miot] [Purificateur] Poll failed 4 times!
[07/10/2022, 10:56:49] [miot] [Purificateur] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[07/10/2022, 10:56:49] [miot] [Purificateur] Device diconnected!
[07/10/2022, 10:56:49] [miot] [Purificateur] Trying to reconnect in 60 seconds...
[07/10/2022, 10:56:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}]
[07/10/2022, 10:56:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9145}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8744,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8744,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8745,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8745,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":8845,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 10:56:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":8845,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}

[...]

[07/10/2022, 10:57:49] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:57:49] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: miIO.info - {"timeout":5000,"retries":3} - {}
[07/10/2022, 10:57:49] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:57:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"miIO.info","params":{"timeout":5000,"retries":3},"id":9148}
[07/10/2022, 10:57:49] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�"�
                                                                               ��Q�{$.Q�N3�
                                                                                           >3*E
[07/10/2022, 10:57:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9148,"result":{"life":2986,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":64216,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":30}
[07/10/2022, 10:57:50] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9148,"result":{"life":2986,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":64216,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":30}
[07/10/2022, 10:57:50] [miot] [Purificateur] Device found: zhimi.airpurifier.mb3
[07/10/2022, 10:57:50] [miot] [Purificateur] Setting up miot device!
[07/10/2022, 10:57:50] [miot] [Purificateur] Doing MiCloud setup
[07/10/2022, 10:57:50] [miot] [Purificateur] Device setup finished! Miot device ready!
[07/10/2022, 10:57:50] [miot] [Purificateur] Connected to device: zhimi.airpurifier.mb3
[07/10/2022, 10:57:50] [miot] [Purificateur] Doing initial property fetch.
[07/10/2022, 10:57:50] [miot] [Purificateur] Splitting properties into chunks. Number of chunks: 2. Chunk size: 14
[07/10/2022, 10:57:50] [miot] [Purificateur] Chunks:  [
 [
  "air-purifier:on",
  "air-purifier:mode",
  "air-purifier:fault",
  "air-purifier:fan-level",
  "environment:pm2.5-density",
  "environment:relative-humidity",
  "environment:temperature",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "alarm:alarm",
  "indicator-light:on",
  "indicator-light:brightness",
  "physical-controls-locked:physical-controls-locked",
  "motor-speed:favorite-fan-level"
 ],
 [
  "motor-speed:motor-speed",
  "motor-speed:motor-favorite",
  "use-time:use-time"
 ]
]

[...]

[07/10/2022, 10:58:05] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 10:58:05] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":9352}
[07/10/2022, 10:58:05] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1��"�
                                                                               �d����e0o���> ��
[07/10/2022, 10:58:06] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 10:58:06] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 10:58:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9151,"result":[{"did":"314254012","siid":2,"piid":2,"code":0,"value":false},{"did":"314254012","siid":2,"piid":5,"code":0,"value":0},{"did":"314254012","siid":2,"piid":1,"code":0,"value":0},{"did":"314254012","siid":2,"piid":4,"code":0,"value":1},{"did":"314254012","siid":3,"piid":6,"code":0,"value":6},{"did":"314254012","siid":3,"piid":7,"code":0,"value":51},{"did":"314254012","siid":3,"piid":8,"code":0,"value":21.000000},{"did":"314254012","siid":4,"piid":3,"code":0,"value":84},{"did":"314254012","siid":4,"piid":5,"code":0,"value":542},{"did":"314254012","siid":5,"piid":1,"code":0,"value":false},{"did":"314254012","siid":6,"piid":6,"code":0,"value":true},{"did":"314254012","siid":6,"piid":1,"code":0,"value":2},{"did":"314254012","siid":7,"piid":1,"code":0,"value":false},{"did":"314254012","siid":10,"piid":10,"code":0,"value":0}],"exe_time":330}
[07/10/2022, 10:58:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9151,"result":[{"did":"314254012","siid":2,"piid":2,"code":0,"value":false},{"did":"314254012","siid":2,"piid":5,"code":0,"value":0},{"did":"314254012","siid":2,"piid":1,"code":0,"value":0},{"did":"314254012","siid":2,"piid":4,"code":0,"value":1},{"did":"314254012","siid":3,"piid":6,"code":0,"value":6},{"did":"314254012","siid":3,"piid":7,"code":0,"value":51},{"did":"314254012","siid":3,"piid":8,"code":0,"value":21.000000},{"did":"314254012","siid":4,"piid":3,"code":0,"value":84},{"did":"314254012","siid":4,"piid":5,"code":0,"value":542},{"did":"314254012","siid":5,"piid":1,"code":0,"value":false},{"did":"314254012","siid":6,"piid":6,"code":0,"value":true},{"did":"314254012","siid":6,"piid":1,"code":0,"value":2},{"did":"314254012","siid":7,"piid":1,"code":0,"value":false},{"did":"314254012","siid":10,"piid":10,"code":0,"value":0}],"exe_time":330}
[07/10/2022, 10:58:07] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9152,"result":[{"did":"314254012","siid":10,"piid":8,"code":0,"value":0},{"did":"314254012","siid":10,"piid":7,"code":0,"value":390},{"did":"314254012","siid":12,"piid":1,"code":0,"value":1937100}],"exe_time":570}
[07/10/2022, 10:58:07] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9152,"result":[{"did":"314254012","siid":10,"piid":8,"code":0,"value":0},{"did":"314254012","siid":10,"piid":7,"code":0,"value":390},{"did":"314254012","siid":12,"piid":1,"code":0,"value":1937100}],"exe_time":570}
[07/10/2022, 10:58:07] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9252,"result":[{"did":"314254012","siid":2,"piid":2,"code":0,"value":false},{"did":"314254012","siid":2,"piid":5,"code":0,"value":0},{"did":"314254012","siid":2,"piid":1,"code":0,"value":0},{"did":"314254012","siid":2,"piid":4,"code":0,"value":1},{"did":"314254012","siid":3,"piid":6,"code":0,"value":6},{"did":"314254012","siid":3,"piid":7,"code":0,"value":51},{"did":"314254012","siid":3,"piid":8,"code":0,"value":21.000000},{"did":"314254012","siid":4,"piid":3,"code":0,"value":84},{"did":"314254012","siid":4,"piid":5,"code":0,"value":542},{"did":"314254012","siid":5,"piid":1,"code":0,"value":false},{"did":"314254012","siid":6,"piid":6,"code":0,"value":true},{"did":"314254012","siid":6,"piid":1,"code":0,"value":2},{"did":"314254012","siid":7,"piid":1,"code":0,"value":false},{"did":"314254012","siid":10,"piid":10,"code":0,"value":0}],"exe_time":790}
[07/10/2022, 10:58:07] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":9252,"result":[{"did":"314254012","siid":2,"piid":2,"code":0,"value":false},{"did":"314254012","siid":2,"piid":5,"code":0,"value":0},{"did":"314254012","siid":2,"piid":1,"code":0,"value":0},{"did":"314254012","siid":2,"piid":4,"code":0,"value":1},{"did":"314254012","siid":3,"piid":6,"code":0,"value":6},{"did":"314254012","siid":3,"piid":7,"code":0,"value":51},{"did":"314254012","siid":3,"piid":8,"code":0,"value":21.000000},{"did":"314254012","siid":4,"piid":3,"code":0,"value":84},{"did":"314254012","siid":4,"piid":5,"code":0,"value":542},{"did":"314254012","siid":5,"piid":1,"code":0,"value":false},{"did":"314254012","siid":6,"piid":6,"code":0,"value":true},{"did":"314254012","siid":6,"piid":1,"code":0,"value":2},{"did":"314254012","siid":7,"piid":1,"code":0,"value":false},{"did":"314254012","siid":10,"piid":10,"code":0,"value":0}],"exe_time":790}
[07/10/2022, 10:58:07] [miot] [Purificateur] Successfully updated property chunk! RAW: [{"did":"314254012","siid":2,"piid":2,"code":0,"value":false},{"did":"314254012","siid":2,"piid":5,"code":0,"value":0},{"did":"314254012","siid":2,"piid":1,"code":0,"value":0},{"did":"314254012","siid":2,"piid":4,"code":0,"value":1},{"did":"314254012","siid":3,"piid":6,"code":0,"value":6},{"did":"314254012","siid":3,"piid":7,"code":0,"value":51},{"did":"314254012","siid":3,"piid":8,"code":0,"value":21},{"did":"314254012","siid":4,"piid":3,"code":0,"value":84},{"did":"314254012","siid":4,"piid":5,"code":0,"value":542},{"did":"314254012","siid":5,"piid":1,"code":0,"value":false},{"did":"314254012","siid":6,"piid":6,"code":0,"value":true},{"did":"314254012","siid":6,"piid":1,"code":0,"value":2},{"did":"314254012","siid":7,"piid":1,"code":0,"value":false},{"did":"314254012","siid":10,"piid":10,"code":0,"value":0}]
[07/10/2022, 10:58:07] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":9352,"result":[{"did":"314254012","siid":10,"piid":8,"code":0,"value":0},{"did":"314254012","siid":10,"piid":7,"code":0,"value":390},{"did":"314254012","siid":12,"piid":1,"code":0,"value":1937100}],"exe_time":1000}

The behavior ends up breaking the device and making it inaccessible to anyone.

[07/10/2022, 12:49:02] [miot] [Purificateur] Poll failed 4 times!
[07/10/2022, 12:49:02] [miot] [Purificateur] Device diconnected!
[07/10/2022, 12:49:02] [miot] [Purificateur] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[07/10/2022, 12:49:02] [miot] [Purificateur] Trying to reconnect in 60 seconds...
[07/10/2022, 12:49:02] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}]
[07/10/2022, 12:49:02] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":6436}
[07/10/2022, 12:49:03] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6336,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4020}
[07/10/2022, 12:49:03] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6336,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4020}
[07/10/2022, 12:49:03] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6436,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:03] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6436,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":6538}
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�����"���%�BFD��ߞk�`�{j>
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":6638}
[07/10/2022, 12:49:04] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�������"���%��1�M!�Qs��!����
[07/10/2022, 12:49:06] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:06] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:49:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6437,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6437,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6438,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6438,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (0) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":6738}
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�����"���%���E�yM�!���_�
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (0) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":6838}
[07/10/2022, 12:49:08] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�������"���%���L���?`�$̛
[07/10/2022, 12:49:11] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6538,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:11] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6538,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:11] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6638,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:11] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6638,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}]
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":6738}
[07/10/2022, 12:49:12] [miot] [Purificateur] Poll failed 1 times!
[07/10/2022, 12:49:12] [miot] [Purificateur] Poll failed! Error: Error: Call to device timed out
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}]
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":6838}
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6738,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6738,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6838,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:12] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6838,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
[07/10/2022, 12:49:16] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:16] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:49:26] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:26] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:49:36] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:36] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:49:46] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:46] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:49:56] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:49:56] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:50:02] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:02] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: miIO.info - {"timeout":5000,"retries":3} - {}
[07/10/2022, 12:50:02] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:02] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"miIO.info","params":{"timeout":5000,"retries":3},"id":6839}
[07/10/2022, 12:50:02] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�p�����"���%�ՙ*FaZ��F5�_��
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"miIO.info","params":{"timeout":5000,"retries":3},"id":6939}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�p�����"���%����#-3�W��BGt
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6839,"result":{"life":9720,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":65804,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":50}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6839,"result":{"life":9720,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":65804,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":50}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Data: {"id":6939,"result":{"life":9721,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":65804,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":40}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX -> Message: {"id":6939,"result":{"life":9721,"uid":6447778637,"model":"zhimi.airpurifier.mb3","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":65804,"mac":"X0:X0:X0:X0:X0:X0","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"xxxxxxxxxxxxxxxx","bssid":"X0:X0:X0:X0:X0:X0","rssi":-19,"primary":6},"netif":{"localIp":"XXX.XXX.X.XXX","mask":"255.255.255.0","gw":"XXX.XXX.X.XXX"}},"exe_time":40}
[07/10/2022, 12:50:06] [miot] [Purificateur] Device found: zhimi.airpurifier.mb3
[07/10/2022, 12:50:06] [miot] [Purificateur] Setting up miot device!
[07/10/2022, 12:50:06] [miot] [Purificateur] Doing MiCloud setup
[07/10/2022, 12:50:06] [miot] [Purificateur] Device setup finished! Miot device ready!
[07/10/2022, 12:50:06] [miot] [Purificateur] Connected to device: zhimi.airpurifier.mb3
[07/10/2022, 12:50:06] [miot] [Purificateur] Doing initial property fetch.
[07/10/2022, 12:50:06] [miot] [Purificateur] Splitting properties into chunks. Number of chunks: 2. Chunk size: 14
[07/10/2022, 12:50:06] [miot] [Purificateur] Chunks:  [
 [
  "air-purifier:on",
  "air-purifier:mode",
  "air-purifier:fault",
  "air-purifier:fan-level",
  "environment:pm2.5-density",
  "environment:relative-humidity",
  "environment:temperature",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "alarm:alarm",
  "indicator-light:on",
  "indicator-light:brightness",
  "physical-controls-locked:physical-controls-locked",
  "motor-speed:favorite-fan-level"
 ],
 [
  "motor-speed:motor-speed",
  "motor-speed:motor-favorite",
  "use-time:use-time"
 ]
]
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}] - {}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}] - {}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":6940}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�����"���%����Їf��cO��JQ-
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":6941}
[07/10/2022, 12:50:06] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�������"���%��
��sP��m�����
[07/10/2022, 12:50:06] [miot] [Purificateur] Successfully saved device info!
[07/10/2022, 12:50:06] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:50:06] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:50:10] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:10] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (1) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":7041}
[07/10/2022, 12:50:10] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�����"���%������9�?�CHX�
[07/10/2022, 12:50:10] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX

[...] 

[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}] - {}
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}] - {}
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) Start handshake XXX.XXX.X.XXX
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":8548}
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1p�����"���&-$�N�?�ǀ���`V���
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- (2) {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":8549}
[07/10/2022, 12:50:58] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- !1�������"���&-lx\E5�������
[07/10/2022, 12:51:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}]
[07/10/2022, 12:51:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}],"id":8447}
[07/10/2022, 12:51:00] [miot] [Purificateur] Poll failed 4 times!
[07/10/2022, 12:51:00] [miot] [Purificateur] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[07/10/2022, 12:51:00] [miot] [Purificateur] Device diconnected!
[07/10/2022, 12:51:00] [miot] [Purificateur] Trying to reconnect in 60 seconds...
[07/10/2022, 12:51:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Reached maximum number of retries, giving up get_properties - [{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}]
[07/10/2022, 12:51:00] [miot] [Purificateur] (Protocol) XXX.XXX.X.XXX <- Error during send! (timeout) Call to device timed out | Request: {"method":"get_properties","params":[{"did":"314254012","siid":10,"piid":8},{"did":"314254012","siid":10,"piid":7},{"did":"314254012","siid":12,"piid":1}],"id":8547}

Still, with only the fan connected to the plugin, everything works fine, no queries overloading the device, and a decent polling interval is respected every 10 seconds.

[07/10/2022, 12:58:43] [miot] [Ventilateur] Starting property polling.
[07/10/2022, 12:58:53] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:58:53] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:03] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:03] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:13] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:13] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:23] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:23] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:33] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:33] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:43] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:43] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 12:59:53] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 12:59:53] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
[07/10/2022, 13:00:03] [miot] [Ventilateur] Splitting properties into chunks. Number of chunks: 1. Chunk size: 14
[07/10/2022, 13:00:03] [miot] [Ventilateur] (Protocol) Call XXX.XXX.X.XXX: get_properties - [{"did":"244858701","siid":2,"piid":1},{"did":"244858701","siid":2,"piid":2},{"did":"244858701","siid":2,"piid":4},{"did":"244858701","siid":2,"piid":5},{"did":"244858701","siid":2,"piid":3},{"did":"244858701","siid":3,"piid":1}] - {}
merdok commented 1 year ago

Your device works fine up until some point, that might indicate that it simply gets overloaded by requests, hence that is why i mentioned that the hardware of your air purifier might be weak or has some issues. What exactly i cannot tell because i do not own that device, but as confirmed by someone in the other post, the air purifier works fine with the plugin. I would recommend to first reset your device to get it back to work with the plugin, afterwards consider setting a high pollingInterval like at least 20 seconds. You can also use the propertyChunkSize setting to reduce the number of properties which are beieng synced at once with the device to a low value like 3-4, which drastically reduces load on the device.

Other then that you can try to manually send commands to the device with various property amount to sync. For that you can use the miot cli tools Command for all properties is as follows: miot send yourIp get_properties '[{"did":"314254012","siid":2,"piid":2},{"did":"314254012","siid":2,"piid":5},{"did":"314254012","siid":2,"piid":1},{"did":"314254012","siid":2,"piid":4},{"did":"314254012","siid":3,"piid":6},{"did":"314254012","siid":3,"piid":7},{"did":"314254012","siid":3,"piid":8},{"did":"314254012","siid":4,"piid":3},{"did":"314254012","siid":4,"piid":5},{"did":"314254012","siid":5,"piid":1},{"did":"314254012","siid":6,"piid":6},{"did":"314254012","siid":6,"piid":1},{"did":"314254012","siid":7,"piid":1},{"did":"314254012","siid":10,"piid":10}]'

As a last resort you might want to switch to micloud by setting the forceMiCloud flag to true and specifying your micloud credentials. MiCloud can be a little bit slower when sending commands but should be more stable and also reduce the load on the device.