ZWave storing data

Hello all

and thanks to all for this fantastic forum.

My question is related to ZWave and its data and also an info related to zstick5 to zstick7

Which ZWave data is stored in the Controller (in my case Aeotec ZStick gen5) and which ZWave data is stored in Home Assistant? and final question, is there any information or data stored directly on the devices?

I have a VM of home assistant and i’d like to migrate from ZStick gen 5 to Aeotec ZStick gen 7 using backup/restore of ZWaveJSUI.

If i do a snapshot of the vm, unplug stick g5, plug stick g7 and restore data on it, is there some data the will change in the devices? the idea is that if something goes wrong, i’ll restore the snapshot and plug the old g5… is it works?

Thanks a lot

I want to say, backup the S0 key (possibly S1 and S2 if using security) and add these back to the new controller - BUT can’t find the documentation to back this statement up.

I remember carefully copying out the S0 key from an old RaZberry interface when upgrading to a Aeotec ZStick Gen5 (fixed the buggy USB interface in hardwre), but can’t find these values in my production HASS system.

The Z-Wave integration docs do mention the S0 key.

The Z-Wave JS docs (the code HASS uses) show code examples with keys.

The other option is to run the Aeotec Windows tools on the old and new stick - I updated my Gen5 firmware before using it this way (PITA - had to dual-boot out of Linux into Win10). ISTR they have a hardware transfer tool.

My suspicion is transferring S0 is enough, although the Aeotec tools may transfer the state of the Z-Wave mesh network adjacency, this is something HASS will work out itself by running a network discovery/ heal.

Most information related to the zwave network is stored on the controller. This includes the device ID’s, routing table, and paring info that allows the controller to “control” devices. The zwave data in zwavejsUI includes device names (instead of node 02 its living room light), preferences/settings you specify in the program (ie mqtt settings, logging, auth), and most important for securely included devices, the zwave security keys needed to decrypt the secure communications.

Devices will store preferences (device specific), neighbor node ID’s of nearby devices, and direct associations setup with other devices (zwave allows direct association where some commands bypass the controller)

The zwave controller information is stored in the NVM. I know you can backup and restore the NVM to the same controller, and probably even from one zstick gen 5 to another same model zstick gen5, but not sure if you can restore the NVM from the zstick gen 5 to totally different one like a gen7. It was mentioned on github as possible but seemed like there were some bugs - Moving from Z-Stick Gen5 to Z-stick 7 · zwave-js/node-zwave-js · Discussion #2927 · GitHub

The Zwave specification itself has something called a “controller shift”, where you should be able to replace the one controller in the network for another, however zwavejsui does not have the ability to do this from its software. You can try the SI labs software, but most that try it have mixed results, especially with securely included devices. You also end up with a controller that isn’t node 1 anymore, which also usually causes problems. I posted the instructions here

If you get the controller shift to work, you will need to copy the security keys over as mentioned above. There might be an Aeotec tool to move the controller, but I think it only goes from a gen5 to a gen5+ stick, and I don’t think one goes from gen5 to gen7 last I looked. To replace zwave controllers, you generally end up having to exclude and then re include all devices to the new controller.

Tim, ZWave JsUI tools added the ability to backup /restore from a 500 stick to a 700 stick to facilitate upgrades and during the 700 bug last year they assed the ability to downconvert the NVM from a 700 stick to a 500

Ive used it both directions with my personal network which currently has 86 nodes.

You don’t lose anything. You don’t have to tear it down and restart. Short version turn off MQTT and Websockets in zwavejsui, backup the NVM, unplug the stick, plug in new stick and adjust configuration as necessary so zwavejsui sees it, then restore the NVM to the new stick. Restart zwavejsui, then re enable websockets or MQTT, depending on which discovery method you used.

You will most likely need to be aggressive with network repair and do a full interview of everything just to ensure everything is tip top.

Thanks, good to hear that you got it to work. I remembered reading about the bugs, but wasn’t sure if they worked them out.

Thanks to all for support and for very interesting answers!

1 Like