merdok / homebridge-miot

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

No Response for Xiaomi Air Purifier 4 Compact #336

Closed iamweiqian closed 2 years ago

iamweiqian commented 2 years ago

Describe the bug Xiaomi Air Purifier 4 Compact (zhimi.airp.cpa4) is showing No Response all the time. I just bought the air purifier but the Filter Condition is already "Change Soon" and Filter Life is always 0.

Expected behavior It should have on/off button and fan level. The air quality status should be showing Excellent/Good/etc instead of "Unknown".

Your config.json

                {
                    "name": "Xiaomi Smart Air Purifier 4 Compact",
                    "ip": "192.168.0.114",
                    "token": "d30023e2376894bd6de5b8394a90ea89",
                    "deviceId": "533733331",
                    "model": "zhimi.airp.cpa4",
                    "pollingInterval": 10,
                    "deepDebugLog": true,
                    "buzzerControl": false,
                    "ledControl": false,
                    "childLockControl": false,
                    "modeControl": false
                }

Debug log

[12/09/2022, 22:32:48] [miot] [Xiaomi Smart Air Purifier 4 Compact] Starting property polling.
[12/09/2022, 22:33:40] [miot] [Xiaomi Smart Air Purifier 4 Compact] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out
[12/09/2022, 22:34:41] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device found: zhimi.airp.cpa4
[12/09/2022, 22:34:41] [miot] [Xiaomi Smart Air Purifier 4 Compact] Setting up miot device!
[12/09/2022, 22:34:41] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device setup finished! Miot device ready!
[12/09/2022, 22:34:41] [miot] [Xiaomi Smart Air Purifier 4 Compact] Connected to device: zhimi.airp.cpa4
[12/09/2022, 22:34:41] [miot] [Xiaomi Smart Air Purifier 4 Compact] Doing initial property fetch.
[12/09/2022, 22:34:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Starting property polling.
[12/09/2022, 22:35:35] [miot] [Xiaomi Smart Air Purifier 4 Compact] Poll failed 4 times in a row! Stopping polling and trying to reconnect! Reason: Error: Call to device timed out

Screenshots PNG image-BC785238F809-1 IMG_4FB4F5C34043-1

Additional context Even after I disable the buttons below, they are still being shown in the main buttons UI area.

"buzzerControl": false,
"ledControl": false,
"childLockControl": false,
"modeControl": false

IMG_8F933B6338A0-1

merdok commented 2 years ago

Call to device timed out more or less means that the plugin cannot connect to your device. This might have a couple of reason, the most likely are that either the ip address or the token are incorrect.

iamweiqian commented 2 years ago

Call to device timed out more or less means that the plugin cannot connect to your device. This might have a couple of reason, the most likely are that either the ip address or the token are incorrect.

I added the device through MiCloud. All other devices (Mi Standing Fans, Xiaomi Air Purifier 3H, Mi Robot Vacuum-Mop 2) have been working perfectly, except Xiaomi Air Purifier 4 Compact.

merdok commented 2 years ago

The token or ip might be wrong in your MiCloud account. Also some users experienced issues when the smart devices where in a separate IoT network and could not be reached.

iamweiqian commented 2 years ago

The token or ip might be wrong in your MiCloud account. Also some users experienced issues when the smart devices where in a separate IoT network and could not be reached.

I got the IP from router and the token through Android device. Call to device timed out error does not appear now, but the air purifier is still showing "No Response".

[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Model known: zhimi.airp.cpa4!
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device!
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device services
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device services: [
  "air-purifier",
  "environment",
  "filter",
  "alarm",
  "physical-controls-locked",
  "screen",
  "custom-service",
  "aqi"
]
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device properties
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device properties: [
  "air-purifier:on",
  "air-purifier:fault",
  "air-purifier:mode",
  "environment:pm2.5-density",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "filter:filter-left-time",
  "alarm:alarm",
  "physical-controls-locked:physical-controls-locked",
  "screen:brightness",
  "custom-service:moto-speed-rpm",
  "custom-service:country-code",
  "custom-service:favorite-level",
  "custom-service:filter-used-time-dbg",
  "aqi:aqi-updata-heartbeat"
]
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device actions
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device actions: [
  "air-purifier:toggle",
  "filter:reset-filter-life",
  "custom-service:toggle-mode"
]
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Successfully created a AirPurifier device! It is a Xiaomi Air Purifier 4 Compact.
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing accessory!
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Accessory successfully initialized!
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Registering 1 accessories!
[13/09/2022, 01:40:53] [miot] [Xiaomi Smart Air Purifier 4 Compact] Everything looks good! Initiating property polling!
merdok commented 2 years ago

I do not see any error in the log that you posted, that looks perfectly fine. You would need to post a debug log, ideally as described here: https://github.com/merdok/homebridge-miot#debug

iamweiqian commented 2 years ago

I do not see any error in the log that you posted, that looks perfectly fine. You would need to post a debug log, ideally as described here: https://github.com/merdok/homebridge-miot#debug

Debug log

[13/09/2022, 08:19:32] [miot] [Xiaomi Smart Air Purifier 4 Compact] No cached device info found!
[13/09/2022, 08:19:32] [miot] [Xiaomi Smart Air Purifier 4 Compact] Model known: zhimi.airp.cpa4!
[13/09/2022, 08:19:32] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device!
[13/09/2022, 08:19:32] [miot] [Xiaomi Smart Air Purifier 4 Compact] Creating device instance by model: zhimi.airp.cpa4!
[13/09/2022, 08:19:33] Error: listen EADDRINUSE: address already in use :::51809
    at Server.setupListenHandle [as _listen2] (node:net:1372:16)
    at listenInCluster (node:net:1420:12)
    at Server.listen (node:net:1508:7)
    at EventedHTTPServer.listen (/var/lib/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/util/eventedhttp.ts:155:20)
    at HAPServer.listen (/var/lib/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/HAPServer.ts:332:21)
    at Bridge.<anonymous> (/var/lib/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1279:18)
    at step (/var/lib/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:144:27)
    at Object.next (/var/lib/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:125:57)
    at fulfilled (/var/lib/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:115:62)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Not a airconditioner device! Device class could not be found: ../modules/airconditioner/devices/zhimi.airp.cpa4.js
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Not a airer device! Device class could not be found: ../modules/airer/devices/zhimi.airp.cpa4.js
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Not a airfryer device! Device class could not be found: ../modules/airfryer/devices/zhimi.airp.cpa4.js
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Not a airmonitor device! Device class could not be found: ../modules/airmonitor/devices/zhimi.airp.cpa4.js
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] It is a airpurifier device! Found device class at ../modules/airpurifier/devices/zhimi.airp.cpa4.js!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device services
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device services: [
  "air-purifier",
  "environment",
  "filter",
  "alarm",
  "physical-controls-locked",
  "screen",
  "custom-service",
  "aqi"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device properties
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device properties: [
  "air-purifier:on",
  "air-purifier:fault",
  "air-purifier:mode",
  "environment:pm2.5-density",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "filter:filter-left-time",
  "alarm:alarm",
  "physical-controls-locked:physical-controls-locked",
  "screen:brightness",
  "custom-service:moto-speed-rpm",
  "custom-service:country-code",
  "custom-service:favorite-level",
  "custom-service:filter-used-time-dbg",
  "aqi:aqi-updata-heartbeat"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device actions
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device actions: [
  "air-purifier:toggle",
  "filter:reset-filter-life",
  "custom-service:toggle-mode"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing device events
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Device events: [
  "custom-service:fault-motor-stuck",
  "custom-service:childlock-trigger",
  "custom-service:filter-exhausted"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initial properties to monitor: [
  "air-purifier:on",
  "air-purifier:mode",
  "air-purifier:fault",
  "screen:brightness",
  "environment:pm2.5-density",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "filter:filter-left-time",
  "alarm:alarm",
  "physical-controls-locked:physical-controls-locked"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Successfully created a AirPurifier device! It is a Xiaomi Air Purifier 4 Compact.
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Found cached accessory for this device! Unregistering it first!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Initializing accessory!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Creating AirPurifier accessory for device Xiaomi Smart Air Purifier 4 Compact!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Found accessory class at ../modules/airpurifier/AirPurifierAccessory.js!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Accessory successfully initialized!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Final properties to monitor: [
  "air-purifier:on",
  "air-purifier:mode",
  "air-purifier:fault",
  "screen:brightness",
  "environment:pm2.5-density",
  "filter:filter-life-level",
  "filter:filter-used-time",
  "filter:filter-left-time",
  "alarm:alarm",
  "physical-controls-locked:physical-controls-locked"
]
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Registering 1 accessories!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] Everything looks good! Initiating property polling!
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) Start handshake 192.168.0.114
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) Server listening 0.0.0.0:33190
[13/09/2022, 08:19:33] Got SIGTERM, shutting down Homebridge...
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) 192.168.0.114 -> Handshake reply
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) Call 192.168.0.114: miIO.info - {"timeout":5000,"retries":3} - {}
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) Start handshake 192.168.0.114
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) 192.168.0.114 <- (2) {"method":"miIO.info","params":{"timeout":5000,"retries":3},"id":1}
[13/09/2022, 08:19:33] [miot] [Xiaomi Smart Air Purifier 4 Compact] (Protocol) 192.168.0.114 <- !1p��,$4L�;�I��RE��x

When I run miot test <ip> -t <token>

(Protocol) Call 192.168.0.114: miIO.info - {"retries":3,"timeout":5000} - {}
(Protocol) 192.168.0.114 <- Reached maximum number of retries, giving up miIO.info - {"retries":3,"timeout":5000}
Call to device timed out
 ERROR  Could not connect to the device at 192.168.0.114! Make sure the ip and token are correct!

It seems that the either one of the IP and token are incorrect, but I got them from local device, not MiCloud.

merdok commented 2 years ago

Yeah, you need to make sure that miot test will succeed. Maybe it has something to do with your network setup?

merdok commented 2 years ago

Should be fixed in version 1.3.1