How to back up and restore a Z-Wave network
How to back up and restore your Z-Wave network in Home Assistant using Z-Wave JS NVM backups, plus notes for Hubitat and Zigbee-only hubs like the Hue Bridge.
On this page
With a Z-Wave network, the pairing information - which devices belong to the network and their security keys - lives in your controller’s memory. Lose that and you have to factory-reset and re-pair every device by hand. This guide covers how to back up and restore a Z-Wave network in Home Assistant, with notes for Hubitat, and clears up some common misconceptions. If you also run a Zigbee mesh, the process there is different - see how to back up and restore a Zigbee network.
In Home Assistant, backing up Z-Wave is a two-click NVM download on the Z-Wave integration page, and restoring is the same in reverse - including onto a new 800-series stick. Zigbee/Thread hubs like the Hue Bridge and the ZBT-2 have no Z-Wave radio and can’t host or back up a Z-Wave network at all. Take a backup before any major change and keep it off the Home Assistant machine.
What gets backed up
A Z-Wave controller stores its network data (node list, network keys, associations) in non-volatile memory (NVM) on the controller chip itself. A Z-Wave backup is essentially a dump of that NVM. It is not stored as a .zwa or .xml file by Home Assistant - the modern Z-Wave JS backup is a JSON file containing the NVM contents.
Two clarifications before you start. The controller is the radio stick, not your hub box: in Home Assistant your Z-Wave controller is a USB adapter such as the Home Assistant Connect ZWA-2 (Silicon Labs 800-series) or a Zooz ZST39 / ZST10 stick, not the computer it plugs into. And some “hubs” have no Z-Wave radio at all. The Philips Hue Bridge is Zigbee-only and the Home Assistant Connect ZBT-2 is Zigbee plus Thread only, so neither can host or back up a Z-Wave network. For Z-Wave in the Home Assistant world you need a dedicated Z-Wave adapter like the ZWA-2.
How to back up your Z-Wave network in Home Assistant
Home Assistant uses Z-Wave JS, which has a built-in NVM backup and restore in the UI.
- In Home Assistant, go to Settings > Devices & services > Z-Wave (or open the Z-Wave integration page).
- Under Download backup, select Download.
- Z-Wave JS reads the NVM from your Z-Wave adapter and downloads a backup file (JSON) to your browser’s device. Save it somewhere safe - off the Home Assistant machine, ideally.
It’s good practice to take a backup before any major change: migrating to a new adapter, resetting the stick, or upgrading hardware.
Note: a full Home Assistant backup also captures the Z-Wave JS configuration and store. The dedicated NVM download above is what you want specifically for moving the network to a new stick.
How to restore your Z-Wave network in Home Assistant
- Plug in the Z-Wave adapter you want to restore to and make sure Z-Wave JS is pointed at it.
- Go to Settings > Devices & services > Z-Wave.
- Under Restore from backup, select Restore and choose your backup file.
- Z-Wave JS writes the NVM back to the controller. When it finishes, your previously paired devices reappear without re-pairing.
Migrating between different controllers (e.g. 700 to 800 series)
You can restore a backup taken from one stick onto a different one - this is how you migrate to a new adapter like the ZWA-2. Because the 800-series has a different NVM layout than the 700-series, Z-Wave JS detects the target controller’s layout and converts the backup into the correct format during restore. Home Assistant’s built-in restore is the recommended way to do this; it handles the conversion for you.
There is one limit here, and it is narrower than it is usually stated. Migration is routine for 700-to-700, 700-to-800, and 800-to-800 moves, and a 500-series controller can be migrated too: Z-Wave JS can read a 500-series NVM and convert it, as long as that controller is on Z-Wave SDK 6.61 or newer. Aeotec documents exactly this path for moving a full Series 500 or Series 700 network onto an 800-series stick using Z-Wave JS UI. Below SDK 6.61 it gets harder, but it is still not automatically a re-pair. Those older backups omit the fields Z-Wave JS uses to identify the NVM format, so Z-Wave JS will not restore one directly; the backup has to be converted to a newer format first, and HomeSeer documents that conversion as a prerequisite step in its own 800-series migration guide. Excluding and re-including every device is the fallback if that conversion fails - not the automatic outcome. Check the stick’s SDK version before you assume you are facing a full re-pair.
Hubitat users
A Hubitat Elevation hub has its own Z-Wave radio and its own backup mechanism. The free local backup is a .lzf download of the hub database - apps, rules, device entries - and it does not include the Z-Wave radio. Backing up the Z-Wave radio and migrating it to a replacement hub is part of Hubitat’s paid Hub Protect / Cloud Backup subscription. Either way you restore through Hubitat’s own interface: you cannot import a Z-Wave JS NVM file into Hubitat or the other way round, because they are different controller stacks.
A note on older tools
You may see references to Z-Way or the old OpenZWave project. Z-Way is its own separate Z-Wave platform with its own backup format and is not used by Home Assistant. OpenZWave is deprecated and was replaced by Z-Wave JS years ago. For current Home Assistant setups, use the Z-Wave JS backup/restore described above rather than those tools.