-
-
Notifications
You must be signed in to change notification settings - Fork 644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: detect an unresponsive stick and reset it #6244
Conversation
39709bf
to
966bfc1
Compare
@zwave-js-bot automerge |
### Breaking changes · [Migration guide](https://zwave-js.github.io/node-zwave-js/#/getting-started/migrating-to-v12) * Remove support for Node.js 14 and 16 (#6245) * Subpath exports are now exposed using the `exports` field in `package.json` instead of `typesVersions` (#5839) * The `"notification"` event now includes a reference to the endpoint that sent the notification (#6083) * Keep separate Supervision session ID counters for each node (#6175) * Validate the device fingerprint before installing firmware update instead of when checking for updates (#6192) * Removed some deprecated methods (#6250) * Managing SUC routes with the non-SUC method variants is no longer allowed (#6251) * "Heal (network)" was renamed to "rebuild routes" to better reflect what it does (#6252) ### Features * Detect an unresponsive stick and reset it (#6244)
### Breaking changes · [Migration guide](https://zwave-js.github.io/node-zwave-js/#/getting-started/migrating-to-v12) * Remove support for Node.js 14 and 16 (#6245) * Subpath exports are now exposed using the `exports` field in `package.json` instead of `typesVersions` (#5839) * The `"notification"` event now includes a reference to the endpoint that sent the notification (#6083) * Keep separate Supervision session ID counters for each node (#6175) * Validate the device fingerprint before installing firmware update instead of when checking for updates (#6192) * Removed some deprecated methods (#6250) * Managing SUC routes with the non-SUC method variants is no longer allowed (#6251) * "Heal (network)" was renamed to "rebuild routes" to better reflect what it does (#6252) * Corrected the argument type for `Driver.constructor`, `updateLogConfig` and `updateOptions` (#6254, #6319) ### Features * Detect an unresponsive stick and reset it (#6244) * The default time after which battery-powered devices with no pending commands are sent back to sleep is now `250 ms` (down from `1000ms`). This timeout is now configurable using the driver option `timeouts.sendToSleep`. This should result in significant battery savings for devices that frequently wake up. (#6312) ### Bugfixes * A bug in the `7.19.x` SDK has surfaced where the controller gets stuck in the middle of a transmission. Previously this would go unnoticed because the failed commands would cause the nodes to be marked dead until the controller finally recovered. Since `v11.12.0` however, Z-Wave JS would consider the controller jammed and retry the last command indefinitely. This situation is now detected and Z-Wave JS attempts to recover by soft-resetting the controller when this happens. (#6296) * Removed auto-disabling of soft-reset capability (#6256) * Default to RF protection state `Unprotected` if not given for `Protection CC` V2+ (#6257) ### Config file changes * Add Heatit Z-Water 2 (#6299) * Add Shelly Wave 1PM (#6280, #6317) * Add Heatit Z-TRM6 (#6263) * Increase poll delay for ZW500D (#6270) * Add fingerprint for Simon IO Master Roller Blind (#6262) * Add HOPPE eHandle ConnectSense (#6269) * Add parameters to Zooz ZEN17 from firmware 1.30 (#6189) * Update Zooz ZEN32 config to the latest firmware, include 800 series (#6283) ### Changes under the hood * Fixed the interpretation of `limit_options` in OpenSmartHouse import script (#6313) * Some Z-Wave JS specific implementation checks are now done using a custom ESLint plugin (#6276, #6279, #6315) * Migrated more Z-Wave JS specific checks to the custom ESLint plugin (#6297, #6302) * Use ESLint to enforce consistent property ordering in config parameters and avoid unnecessary `minValue/maxValue` (#6321, #6322) * `yarn test` now only runs tests affected by changed files by default. This is also done on CI in PRs to speed up check times (#6274) * Upgraded lots of dependencies (#6258)
Hello,
I have a zst10 stick and the issue happens without running home assistant at all (just starting using zwave-js-server is enough). |
See #6341 |
Hm, that's interesting: is it normal for the driver to be reloading every few minutes or so? It makes home assistant unusable. I tried using zwave-js-ui to disable soft resets, but it didn't seem to help with the issue. |
No it's not normal. Please make a driver log, loglevel |
Ack, attached. |
Looks like whenever Z-Wave JS tries to interview node 41, requesting the node's info causes the controller to time out and not send the expected callback, triggering the new "unresponsive controller" detection. That first restarts the stick, which doesn't resolve the issue, then it restarts Z-Wave JS. I'll track that problem in #6371 |
@AlCalzone , does an MQTT event get raised when an unresponsive controller is detected? |
That's a question for https://github.com/zwave-js/zwave-js-ui |
This PR makes use of the previously-added
Unresponsive
controller status by adding a detection for an unresponsive controller (not ACKing serial API commands). When this situation happens, we soft-reset the controller in an attempt to recover. If that does not help either, the driver instance gets destroyed.This should trigger a restart in most applications, which effectively closes and re-opens the serial port.
fixes: #2723