Introduction
This guide describes how to switch from the Z-Wave JS official add-on to the Z-Wave JS UI HA Community add-on, without losing any downtime caused by the re-interviewing of nodes.
In this guide, Z-Wave JS UI will henceforth be abbreviated as ZUI.
Who is this guide for?
This guide is for HAOS add-on users who have already installed the official Z-Wave JS add-on and the companion Z-Wave integration, and desire extra functionality that isn’t provided by HA, such as:
- Adding and removing node associations
- Network health diagnostics (testing and route map)
- Testing device config firmware files
- An alternate configuration UI
- Advanced driver code execution
7-Days of downloadable debug logsFrom add-on v0.4.0 you can save log files!- etc.
If you are not using HAOS, this guide is not for you.
When to use this guide?
The official instructions for switching add-ons are available in the integration documentation and are good enough for most people. This is a step-by-step version of those with the additional benefit of preserving the network information to avoid re-interviewing devices.
This guide is helpful when your network is very large, or you have many battery devices. If your network is small or you have very few battery devices, you can probably skip this and avoid all the hassle.
It helps to know a little bit about how the Z-Wave JS driver works. When you add a device to your network, the driver interviews the device for its identity and functionality. This information is permanently stored in a multiple cache files that are loaded each time the driver restarts. Without these cache files, the identity and functionality of the devices are lost after a restart until they are re-interviewed, and during that time HA is unable to control or observe the devices.
If you uninstall the official add-on those cache files are lost. In most cases this isn’t a big deal, re-interviewing can be painless. Mains-powered devices are always interviewed automatically, but battery devices are only interviewed when they wake up. That could be hours or days depending on their configuration. You might have a battery device in the attic that is difficult to access. Or your lock might be unreliable and fail interviews if the distance is too far. Etc.
The official add-ons does not provide a convenient way to export or import only the cache files, so this guide exists to cover that gap. As of v0.4.0 of the official add-on, the driver cache files are exposed to users, which makes it simpler than ever to migrate! If you don’t want to re-interview the devices when switching add-ons, this guide is for you. When completed, from the perspective of HA there will be no difference.
Prerequisites
- Home Assistant OS 11.3
- Home Assistant Core 2024.1.0
- Z-Wave JS add-on v0.4.0
- File editor add-on
- Terminal & SSH add-on
- You have read the How do I switch between the Official Z-Wave JS add-on and the Z-Wave JS UI add-on? instructions in the official docs
- You have read the ZUI add-on installation instructions
The guide should work roughly the same on earlier or later versions of HAOS and HA Core, however screenshots and the locations of things may change. The versions are noted here simply to mark when this guide was written.
There are no requirement outside of HAOS, but the above indicated add-ons are needed.
If you do not understand the difference between integration and add-on, please refer to their definitions in the HA glossary.
Guide
Step 0.1: Install File editor add-on
See installation instructions.
The File editor add-on is used to download the Z-Wave JS cache files to your local PC.
Step 0.2: Install Terminal & SSH add-on
See installation instructions. Don’t forget to enable Advanced mode in your user profile first.
The Terminal & SSH add-on is used to copy the Z-Wave JS cache files from the official add-on.
You can also use the Community Add-on: Advanced SSH & Web Terminal instead if you already have it installed, but these examples will show the official SSH add-on. The same commands can be used.
Step 0.3: Make a backup
Make a full backup of your installation, or a partial backup of the Z-Wave JS add-on, just in case.
Step 1: Save important Z-Wave JS configuration settings
Go to: Settings → Add-ons → Z-Wave JS → Configuration
Copy the USB device path (1) and all security keys (ignore network_key
) (2) somewhere safe, like a text file. These settings are required when installing ZUI.
Under Options, click ...
and select “Edit in YAML” to see this view for easy copy and paste:
Step 2: Disable the Z-Wave JS Integration
Go to: Settings → Devices & services → Z-Wave → ...
→ Disable, then click DISABLE on the next prompt.
The Z-Wave JS add-on is automatically stopped as a result. Confirm this by going back to the add-on page and make sure it’s stopped, as indicated by the red dot. If it’s still running, click STOP.
Step 3: Copy the Z-Wave JS cache files
Go to: Settings → Add-ons → Terminal & SSH and click OPEN WEB-UI.
You will enter a terminal prompt. Enter the following command:
apk add zip && zip -j /homeassistant/zjs.zip /addon_configs/core_zwave_js/cache/*.jsonl
This will create a zip file in your HA config directory containing the Z-Wave JS cache files.
The name of the *.jsonl
files are unique for every Z-Wave network.
Step 4: Download the Z-Wave JS cache zip file
We need to download the zip file created above to restore to ZUI later. We can use the File editor add-on to do this.
Go to: Settings → Add-ons → File editor and click OPEN WEB-UI.
Click the folder icon in the upper left (1) to show the files in your HA config directory.
Scroll down the directory listing and find the zjs.zip
file we just created. Click the ...
next to the filename and Download.
Make note of where you saved the download as it will be needed later.
Step 5: Install ZUI add-on
Install the add-on but do not configure it yet. The current version of the add-on used here is v3.0.2.
Go to: Settings → Add-ons → ADD-ON STORE
Search for Z-Wave JS UI and select it.
Click INSTALL to install it, and wait some time.
Click START. You might need to refresh the add-on page to see it started.
Click “OPEN WEB UI” to open the ZUI page.
Do not configure any settings yet!
Step 6: Import cache files into ZUI
We will import the ZUI cache files we downloaded in step 4. This is the crucial step that restores the Z-Wave network information in order to avoid re-interviewing devices. Make sure you are still in the ZUI web UI from step 5.
Click the hamburger button at the top to the left of Control Panel
Click the Store tab (folder icon) to go to Store browser. It will look like a file browser.
Click the large blue gear button at the bottom of the page
Click the green Restore button
Click the “File” field and choose the zjs.zip
file downloaded earlier.
Click the RESTORE button.
After the restore, you should immediately see all three of the .jsonl
cache files in the Store browser.
Make sure this is the case before proceeding. If you want, you can click on a file to inspect its contents.
Step 7: Configure ZUI
Make sure you are still in the ZUI web UI from steps 5 and 6.
Click the hamburger button at the top to the left of Store
Click the Settings tab (Gear icon)
Expand the Z-Wave panel
- Set Serial Port by using the same device path from step 1. This should be auto-detected and displayed in the pull-down menu. Tip: you should always use a
/dev/device/by-id
path to avoid issues with path changes. - Set all the S0 and S2 keys via copy and paste from step 1. Be sure to match the keys exactly (S2 Authenticated to S2 Authenticated, etc.).
Optional settings:
- Set Log Level to Debug
- Set Log to file to On
The log settings are recommended for future troubleshooting of issues. If your storage is write-sensitive, such as an SD card, you may want to leave them disabled.
If you are using a VM and a 500-series controller, you may need to disable the “Soft Reset” setting. A Soft Reset of a 500-series will cause a USB reset, and the VM will lose connection. If pass-through is not configured for hot-plugging, the USB stick will never re-connect and Z-Wave JS will fail to start.
Don’t forget to scroll to the bottom of the web UI and click SAVE. This will restart ZUI and it may take up to a minute or longer to load depending on the size of your Z-Wave network.
Step 8: Verify configuration
Navigate to the Control Panel via the same hamburger menu. Eventually the node table rows will start filling up with all of the nodes.
A correct migration will show all of the nodes with valid manufacturer, product, and product code fields (1), and there should be no “Unknown” ones. The interview status should also be “Complete” (2).
Note that ZUI will switch to a compact mode if the window width is too narrow. Expand the window width to see the table view as shown above.
If you have some devices that are unknown or not Complete, then they would have been in that state before the migration. To fix that, you’ll need to wake up battery devices to complete the interviews, or try manually re-interviewing. While not required, it’s best if you have all the nodes in the Complete interview state before proceeding to the next step, as this is the main point of the guide.
Step 9: Reconfigure the Z-Wave JS Integration
This process is done exactly as described in the official docs.
Go to Settings → Devices & services
Click “+ ADD INTEGRATION”
Search for Z-Wave and choose Z-Wave. Avoid “Add Z-Wave device” and choose Z-Wave if prompted a second time.
UNCHECK “Use the Z-Wave JS Supervisor add-on” (!!!CRITICAL!!!)
Click SUBMIT
Enter ws://a0d7b954-zwavejs2mqtt:3000
as the URL (copy and paste the exact URL listed here, do not include any whitespace!) and click SUBMIT.
If successful the dialog will say “Device is already configured”. This is not an error, it means the existing Z-Wave network has successfully been found. Click CLOSE.
Click SHOW at the top right to show the disabled Z-Wave integration.
Click ENABLE within the Z-Wave card to re-enable it.
Wait for the integration to load, but it should be nearly instant. If not, try reloading the page.
Click on Z-Wave, then CONFIGURE in the Hubs card. Check for “Z-Wave Network Connected” (1) and the ensure the Server URL (2) is set to the above ZUI URL.
If you view your devices and entities, you’ll notice nothing has changed (e.g. device and entity names), as expected.
Step 10: Uninstall the Z-Wave JS add-on
The final step is to remove the official add-on. Both add-ons cannot be running and using the same Z-Wave controller at the same time.
Go to Settings → Add-ons
Click Z-Wave JS
Click UNINSTALL and UNINSTALL again in the popup dialog
The official add-on is now completely removed and you are left with the ZUI add-on only.
The End
Congratulations for making it to the end of this guide! You should now have a fully functioning ZUI add-on, with the ability to perform all the extra things you wanted to do, and nothing should have changed in HA.
If you notice any errors in this guide, please let me know with a comment.