merdok / homebridge-miot

Homebridge plugin for devices supporting the Xiaomi miot protocol
MIT License
383 stars 62 forks source link

Air Purifier Property Poll keeps failing #404

Closed Mikunics closed 1 year ago

Mikunics commented 1 year ago

Describe the bug property polling seems to keep failing

Expected behavior property poll should not fail

Your config.json

            "name": "Mi Air Purifier 3/3H",
            "ip": "192.168.1.10",
            "token": "redacted",
            "deviceId": "redacted",
            "model": "zhimi.airpurifier.mb3",
            "pollingInterval": 30,
            "deepDebugLog": true,
            "buzzerControl": false,
            "ledControl": false,
            "childLockControl": false,
            "modeControl": false

Debug log

[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Initializing device services
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Device services: [
  "air-purifier",
  "environment",
  "filter",
  "alarm",
  "indicator-light",
  "physical-controls-locked",
  "button",
  "filter-time",
  "motor-speed",
  "use-time",
  "aqi",
  "rfid",
  "others"
]
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Initializing device properties
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Device properties: [
  "air-purifier:fault",
  "air-purifier:on",
  "air-purifier:fan-level",
  "air-purifier:mode",
  "environment:pm2.5-density",
  "environment:relative-humidity",
  "environment:temperature",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "alarm:alarm",
  "indicator-light:brightness",
  "indicator-light:on",
  "physical-controls-locked:physical-controls-locked",
  "button:button-pressed",
  "filter-time:filter-max-time",
  "filter-time:filter-hour-debug",
  "motor-speed:motor-strong",
  "motor-speed:motor-high",
  "motor-speed:motor-med",
  "motor-speed:motor-med-l",
  "motor-speed:motor-low",
  "motor-speed:motor-silent",
  "motor-speed:motor-favorite",
  "motor-speed:motor-speed",
  "motor-speed:motor-set-speed",
  "motor-speed:favorite-fan-level",
  "use-time:use-time",
  "aqi:purify-volume",
  "aqi:average-aqi",
  "aqi:average-aqi-cnt",
  "aqi:aqi-zone",
  "aqi:sensor-state",
  "aqi:aqi-goodh",
  "aqi:aqi-runstate",
  "aqi:aqi-state",
  "aqi:aqi-updata-heartbeat",
  "rfid:rfid-tag",
  "rfid:rfid-factory-id",
  "rfid:rfid-product-id",
  "rfid:rfid-time",
  "rfid:rfid-serial-num",
  "others:app-extra",
  "others:main-channel",
  "others:slave-channel",
  "others:cola",
  "others:buttom-door",
  "others:reboot-cause",
  "others:hw-version",
  "others:iic-error-count",
  "others:manual-level",
  "others:country-code",
  "others:temperature-unit",
  "others:device-serial-number"
]
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Initializing device actions
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Device actions: [
  "filter:reset-filter-life",
  "button:toggle",
  "button:toggle-mode"
]
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Successfully created a AirPurifier device! It is a Xiaomi Mi Air Purifier 3H.
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Initializing accessory!
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Accessory successfully initialized!
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Registering 1 accessories!
[12/10/2022, 1:13:36 AM] [miot] [Mi Air Purifier 3/3H] Everything looks good! Initiating property polling!

Property Poll Repeatedly Failing

[12/10/2022, 1:16:00 AM] [miot] [Mi Air Purifier 3/3H] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[12/10/2022, 1:17:00 AM] [miot] [Mi Air Purifier 3/3H] Device found! Setting up miot device from local connection!
[12/10/2022, 1:17:00 AM] [miot] [Mi Air Purifier 3/3H] Connected to device: zhimi.airpurifier.mb3
[12/10/2022, 1:17:00 AM] [miot] [Mi Air Purifier 3/3H] Doing initial property fetch.
[12/10/2022, 1:17:12 AM] [miot] [Mi Air Purifier 3/3H] Starting property polling.
[12/10/2022, 1:19:24 AM] [miot] [Mi Air Purifier 3/3H] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[12/10/2022, 1:20:25 AM] [miot] [Mi Air Purifier 3/3H] Device found! Setting up miot device from local connection!
[12/10/2022, 1:20:25 AM] [miot] [Mi Air Purifier 3/3H] Connected to device: zhimi.airpurifier.mb3
[12/10/2022, 1:20:25 AM] [miot] [Mi Air Purifier 3/3H] Doing initial property fetch.
[12/10/2022, 1:20:37 AM] [miot] [Mi Air Purifier 3/3H] Starting property polling.
[12/10/2022, 1:22:49 AM] [miot] [Mi Air Purifier 3/3H] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[12/10/2022, 1:23:49 AM] [miot] [Mi Air Purifier 3/3H] Device found! Setting up miot device from local connection!
[12/10/2022, 1:23:49 AM] [miot] [Mi Air Purifier 3/3H] Connected to device: zhimi.airpurifier.mb3
[12/10/2022, 1:23:49 AM] [miot] [Mi Air Purifier 3/3H] Doing initial property fetch.

Screenshots None

Additional context have other devices connected as well which are working just fine

Home app shows change filter soon warning and controlling the air purifier through home app does not work.

merdok commented 1 year ago

"Call to device timed out" can indicate that your device might be overloaded due to processing to many requests. You can try to reduce the chunk size with the propertyChunkSize to a lower number like 5 and see if that helps.

Mikunics commented 1 year ago

After changing the chunk size, restarting both homebridge and the device, it works alright again. Thanks!