Zwave network down - need help

I am running my ZWave JS outside of Home-assistant in a docker comtainer. The network has been stable for over 6 months, however, my machine is starting to lock up. I decided to move my ZWave JS to a different host assuming as long all the store directory was copied over and mounted to the same location no problem. However, nothing worked after moving my docker container to the new host. I do know I have done this in the past and so not sure what has changed in terms of Zwave JS stack changes. Can we still backup the store mount to a new location and have everything moved over? Or I am missing something in newer versions of ZWaveJS?

I see errors like this in the new host:
zwavejs | 11:43:18.981 CNTRLR [Node 192] The node did not respond after 1 attempts, it is presumed dead
zwavejs | 11:43:18.984 CNTRLR [Node 192] ping failed: The node did not acknowledge the command (ZW0204)
zwavejs | 11:43:18.986 CNTRLR [Node 192] Interview attempt (1/5) failed, node is dead.
zwavejs | 2023-10-29 11:43:18.987 ERROR Z-WAVE: [Node 192] Interview FAILED: The node is dead
zwavejs | 11:43:18.993 DRIVER all queues idle

Any ideas or help is appreciated.
Thanks!

It looks like ZWave JS is not seeing your controller. It may be that the path to the controller in Docker has changed from your previous system. Also, make sure that the Z-Wave keys are correct.

2 Likes

Thanks for that response.
Here is an excerpt from my docker-compose. I don’t think that is the issue

    environment:
      - SESSION_SECRET=secretkey
      - ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db
      - TZ=America/New_York
    devices:
      - '/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave'
    volumes:
      - /home/dd/p/zwave-js/store:/usr/src/app/store

Aren’t the keys in the config? Are you taking about the SESSION_SECRET? I thought those would be stored in the store and be saved on the volume. How do I have make sure the keys are same?

Thanks again.

Everything is in the mounted folder including keys. I’ve moved it around between hosts successfully. As @sota says it’s is the path to your controller and/or the docker run / docker compose isn’t mapping the right device in. Maybe share your docker config.

Ssh into that host do a ls on the USB path. Does it exist?

Here is my full docker-compose

version: ‘3.7’
services:
zwavejs2mqtt:
container_name: zwavejs2mqtt
image: zwavejs/zwavejs2mqtt:8.19.0
restart: unless-stopped
tty: true
stop_signal: SIGINT
environment:
- SESSION_SECRET=secretkey
- ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db
- TZ=America/New_York
# network_mode: host
devices:
- ‘/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave’
volumes:
- /home/dd/p/zwave-js/store:/usr/src/app/store
ports:
- ‘8091:8091’ # port for web interface
- ‘3000:3000’ # port for Z-Wave JS websocket server

ls -ltr /dev/serial/by-id/usb-0658_0200-if00
lrwxrwxrwx. 1 root root 13 Oct 29 12:35 /dev/serial/by-id/usb-0658_0200-if00 → …/…/ttyACM0

@sota how did you determine it was CONTROLLER not working? I don’t see any error in the logs relating ot the CONTROLLER. Here is the top of the logs when container starts…

zwavejs2mqtt | 12:35:43.401 CNTRLR received additional controller information:
zwavejs2mqtt | Z-Wave API version: 5 (legacy)
zwavejs2mqtt | Z-Wave chip type: ZW050x
zwavejs2mqtt | node type Controller
zwavejs2mqtt | controller role: primary
zwavejs2mqtt | controller is the SIS: true
zwavejs2mqtt | controller supports timers: false
zwavejs2mqtt | nodes in the network: 1, 6, 15, 21, 22, 25, 27, 28, 34, 36, 40, 43, 50
zwavejs2mqtt | , 51, 52, 53
zwavejs2mqtt | 12:35:43.453 CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated
zwavejs2mqtt | 12:35:43.455 CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated
zwavejs2mqtt | 12:35:43.457 CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated
zwavejs2mqtt | 12:35:43.461 CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 134
zwavejs2mqtt | 12:35:43.463 CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 257
zwavejs2mqtt | 12:35:43.465 CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 90
zwavejs2mqtt | 12:35:43.468 CNTRLR [Node 001] [Version] firmwareVersions: metadata updated
zwavejs2mqtt | 12:35:43.470 CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.0
zwavejs2mqtt | 12:35:43.472 CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated
zwavejs2mqtt | 12:35:43.474 CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: “3.95.0”
zwavejs2mqtt | 12:35:43.476 CNTRLR [Node 001] [Version] sdkVersion: metadata updated
zwavejs2mqtt | 12:35:43.478 CNTRLR [Node 001] [+] [Version] sdkVersion: “6.51.2”
zwavejs2mqtt | 12:35:43.479 CNTRLR setting serial API timeouts: ack = 1000 ms, byte = 150 ms
zwavejs2mqtt | 12:35:43.496 SERIAL » 0x01050006640f97 (7 bytes)
zwavejs2mqtt | 12:35:43.498 DRIVER » [REQ] [SetSerialApiTimeouts]
zwavejs2mqtt | payload: 0x640f
zwavejs2mqtt | 12:35:43.504 SERIAL « [ACK] (0x06)
zwavejs2mqtt | 12:35:43.508 SERIAL « 0x01050106960f64 (7 bytes)
zwavejs2mqtt | 12:35:43.510 SERIAL » [ACK] (0x06)
zwavejs2mqtt | 12:35:43.513 DRIVER « [RES] [SetSerialApiTimeouts]
zwavejs2mqtt | payload: 0x960f
zwavejs2mqtt | 12:35:43.523 CNTRLR serial API timeouts overwritten. The old values were: ack = 1500 ms, byte = 15
zwavejs2mqtt | 0 ms
zwavejs2mqtt | 12:35:43.524 CNTRLR Interview completed
zwavejs2mqtt | 12:35:43.526 DRIVER Network key for S0 configured, enabling S0 security manager…
zwavejs2mqtt | 12:35:43.532 DRIVER At least one network key for S2 configured, enabling S2 security manager…
zwavejs2mqtt | 12:35:43.546 DRIVER driver ready
zwavejs2mqtt | 2023-10-29 12:35:43.548 INFO Z-WAVE: Z-Wave driver is ready
zwavejs2mqtt | 2023-10-29 12:35:43.551 INFO Z-WAVE: Controller status: Driver ready
zwavejs2mqtt | 12:35:43.553 DRIVER Checking for configuration updates…

I have moved my docker container around too and has worked in the past. But today it is not working. So not sure what has changed.

I even tried to go back to an older backup that I had, but it is still not loading…same kind of error. I am loss of what to try next.

I read this error as ZWave JS is unavle to find the controller (CNTRLR):

Are all your nodes dead or just this one? Also, are you using the WS Server or the MQTT Gateway?

All nodes showing as dead. So nothing is working.
:cry:

Using WS Server

Can you check that your z-wave configuration is pointing at the device you have mapped in docker compose:

Also, you say that you copied the files over to the new system, perhaps if you tried the built-in backup / restore feature in ZWave JS you might have better luck.
Also, were the old and new systems running the same version?

Yes the Z-wave config is pointing to the /dev/zwave.

Created a tar and copied over everything.
I haven’t used build-in backup. It is not even turned on.
Yes same version.

Appreciate you trying to trouble shoot my problems here!
:pray:

Have a look at the controller statistics to see if it’s passing traffic, without too many errors. It should look something like this:

What kind of hardware are you using? OS versions? Any differences between the old and new system?

Yes the diff is flavor of linux

old was ubuntu 22.04
new is centos 9.2
both running docker 24.0.6

Yes, I have a similar problem. I have Aeotec Gen5 1.1 and that works fine. I copied the config to a Gen5+ with the latest firmware, using the windows backup tool, and that worked fine. But with the Gen5+ stick in the raspberry pi I get this same problem. All nodes marked dead. Going back to the old Gen5 stick in the raspberry pi and all works fine.

So some combo of firmware and backup/restore between gen5 and gen5+ doesnt work, or the gen5+ doesnt like the raspberry pi 4.