Skip to content

Home Assistant Z-Wave JS: The Ultimate Guide for a Rock-Solid Smart Home in 2026

20/01/2026
Home Assistant Z-Wave JS

This article may contain affiliate links. If you buy through these links, the price is the same for you and the store pays me a small commission that helps keep Tecnoyfoto running.

Last updated on August 22, 2026

Z-Wave remains one of the most mature local protocols available for home automation, and Home Assistant now provides a much simpler way to build and manage a Z-Wave network than it did only a few years ago.

If you are starting from scratch in 2026, you no longer need to manually install the separate Z-Wave JS UI community app, configure WebSocket addresses, or generate security keys yourself. On Home Assistant OS, the recommended installation can handle almost all of this automatically.

In this updated guide, we’ll look at how Z-Wave works in Home Assistant today, which adapter makes sense for a new installation, how to set up your network, how to add devices securely, and how to troubleshoot the most common problems.

What is Z-Wave JS in Home Assistant?

Home Assistant uses the Z-Wave JS driver to communicate with Z-Wave devices.

A normal Z-Wave installation in Home Assistant consists of four main parts:

  1. Z-Wave adapter: the physical radio hardware that communicates with your Z-Wave devices.
  2. Z-Wave JS app: the server that communicates directly with the adapter and manages the Z-Wave network.
  3. Z-Wave integration: the Home Assistant integration that connects Home Assistant to the Z-Wave JS server.
  4. Z-Wave devices: sensors, switches, locks, plugs, thermostats, and other devices joined to your network.

The important point is that the Z-Wave JS app and the Z-Wave integration are not the same thing.

The app manages the Z-Wave network and communicates with the adapter. The integration connects that server to Home Assistant so your devices can appear as entities and be used in dashboards, scripts, scenes, and automations.

What Happened to Z-Wave JS UI?

This is one of the biggest changes compared with older Z-Wave guides.

For years, many Home Assistant users installed a separate community application called Z-Wave JS UI. It offered an advanced web interface for managing the Z-Wave network and was often recommended instead of the simpler official Z-Wave JS add-on.

That situation has changed.

The feature-rich Z-Wave JS UI interface is now included with the official Z-Wave JS app. Because of this, the separate Z-Wave JS UI community app is being phased out and Home Assistant recommends using the official Z-Wave JS app for new Home Assistant OS installations.

If you already use the separate Z-Wave JS UI app, your installation does not suddenly stop working. However, Home Assistant now provides a migration path to move to the official Z-Wave JS app without re-pairing all your devices.

Which Z-Wave Adapter Should You Buy in 2026?

If you are building a new Z-Wave network today, I would start with an 800-series adapter.

Home Assistant currently recommends the Home Assistant Connect ZWA-2, which is specifically designed to work with Home Assistant.

There are also other interesting 800-series options depending on your location, budget, and availability:

  • SONOFF Z-Wave 800 Dongle Plus (Dongle-PZG23)Affiliate link: a conventional USB adapter based on the EFR32ZG23 800-series platform, with an external antenna and support for modern Z-Wave security and Z-Wave Long Range. It is an interesting option if you want a straightforward USB controller for Home Assistant.
  • HomeSeer SmartStick G8: another established 800-series USB option.
  • Zooz ZST39 800 Series Z-Wave Long Range S2 Stick: a popular alternative, particularly in North America.

SONOFF discount: If the SONOFF Dongle-PZG23 fits your installation, you can buy it from the official SONOFF store using this linkAffiliate link and use the coupon code tecnoyfoto to get 10% off.

Affiliate disclosure: the SONOFF link above is an affiliate link. If you purchase through it, Tecnoyfoto may receive a commission at no additional cost to you. This does not affect the technical criteria or recommendations in this article.

Older 500-series and many 700-series adapters can still work, so there is no reason to replace a stable existing installation simply because something newer exists.

However, for a new installation I would choose an 800-series controller and make sure its firmware is up to date.

Make Sure You Buy Devices for the Correct Region

Z-Wave does not use exactly the same radio frequencies everywhere in the world.

Your Z-Wave devices therefore need to match the region where they will be used.

With compatible 700- and 800-series adapters, Home Assistant can configure the adapter’s radio region. When using the official Z-Wave JS app, Home Assistant normally selects the appropriate region automatically according to the country configured in your Home Assistant system.

However, the frequency of the end devices themselves cannot simply be changed in software. Always buy Z-Wave devices designed for your region.

Installing Z-Wave in Home Assistant

For a normal Home Assistant OS installation, the setup is now considerably easier than older guides suggest.

Step 1: Connect the Z-Wave Adapter

Connect your supported Z-Wave adapter to the machine running Home Assistant.

Whenever possible, use a short USB extension cable instead of plugging the adapter directly into the computer.

USB ports and the computer itself can generate radio interference. Moving the Z-Wave adapter slightly away from the host can solve problems such as unreliable inclusion, delayed devices, failed secure inclusion, or apparently poor range.

A simple USB 2.0 extension cable is often enough.

Step 2: Let Home Assistant Discover the Adapter

Many Z-Wave adapters are automatically detected by Home Assistant.

When the discovery dialog appears, select:

Recommended installation

Home Assistant will then install the official Z-Wave JS app and configure the Z-Wave integration for you.

You do not normally need to:

  • install Z-Wave JS UI manually,
  • enter a serial port manually,
  • create a WebSocket URL,
  • or manually generate security keys.

What If Home Assistant Doesn’t Detect My Adapter?

If the adapter does not appear automatically:

  1. Go to Settings > Devices & services.
  2. Select Add integration.
  3. Search for Z-Wave.
  4. Follow the instructions shown by Home Assistant.

Also check that the adapter is properly connected and that any USB cable you are using supports data, not only power.

Step 3: Security Keys

Depending on your Home Assistant version and installation, you may be asked about Z-Wave security keys.

If this is a completely new Z-Wave network, leave the security-key fields empty and continue. Home Assistant will generate unique keys automatically.

If you are reusing an adapter that already contains securely paired devices, you must preserve the existing security keys. In particular, older securely included devices may require the original S0 key.

Once your network is configured, keep a backup of the security keys somewhere safe.

Adding Your First Z-Wave Device

Once the adapter and Z-Wave JS app are working:

  1. Go to Settings > Z-Wave.
  2. Select Add device.
  3. Follow the instructions for your Z-Wave device.

Home Assistant supports both traditional inclusion and SmartStart.

Using SmartStart

If your device supports SmartStart, look for a Z-Wave QR code on the product or its packaging.

From the Add device dialog, scan the QR code. Home Assistant can then prepare the device for inclusion before it is even powered on.

When the device is switched on and enters the network, it can be added automatically.

If the device also supports Z-Wave Long Range and your adapter and region allow it, Home Assistant may ask whether you want to add the device using Long Range or the traditional mesh network.

Classic Inclusion

For devices without SmartStart:

  1. Select Add device.
  2. Put the Z-Wave device into inclusion mode according to its manual.
  3. If S2 security is supported, Home Assistant may ask you for the device’s PIN.
  4. Wait until the interview completes and the entities are created.

Important: do not move the Z-Wave adapter around the house to include devices. Modern Z-Wave installations should normally add devices with the adapter in its permanent location. Moving the controller can result in routes that no longer represent the final installation.

Secure Inclusion: S2 vs S0

Z-Wave currently uses two main generations of security: S0 and S2.

Whenever possible, use S2.

S2 provides modern Z-Wave security without the large network-traffic penalty associated with S0.

S0 exists mainly for older devices that require secure communication but do not support S2, such as some older locks.

You should not force every device to use S0 simply because secure inclusion sounds better. S0 creates substantially more traffic on the Z-Wave mesh and can reduce network performance if used unnecessarily.

Home Assistant normally selects the most appropriate security method during inclusion.

The Z-Wave Control Panel in Home Assistant

One reason older tutorials recommended Z-Wave JS UI was that it provided tools that Home Assistant itself did not have.

That gap has become much smaller.

Go to Settings > Z-Wave to access the current Z-Wave control panel.

From here you can manage much more than just device inclusion.

Network Map

The Show map option displays a visual representation of your Z-Wave network and the routes being used between devices.

This can be useful when diagnosing range problems or understanding how your mesh has formed.

Network Statistics

Z-Wave JS collects communication statistics for the adapter and individual nodes.

These statistics can help identify communication problems, failed transmissions, excessive retries, and other RF issues.

Logs

The Z-Wave panel also provides access to Z-Wave JS logs.

Before guessing why a device is failing, checking the logs is often one of the most useful troubleshooting steps.

Network Backup

You can download a backup of the Z-Wave adapter’s non-volatile memory.

This backup contains the Z-Wave network information stored on the adapter, including the devices paired with it.

I strongly recommend creating a backup before:

  • migrating to another adapter,
  • resetting the adapter,
  • or making major changes to the network.

Restore and Adapter Migration

Home Assistant can restore a compatible Z-Wave backup and also provides an adapter migration function.

This makes replacing a controller much easier than rebuilding the entire Z-Wave network from scratch.

Managing Individual Z-Wave Devices

Open a Z-Wave device in Home Assistant and use its device menu to access several useful maintenance tools.

Configure

This lets you view and change configuration parameters exposed by the Z-Wave device.

Re-interview

If a device has been included but some expected entities or capabilities are missing, you can force a new interview.

For battery-powered devices, remember that you may have to manually wake the device while the interview is taking place.

Rebuild Routes

If a mains-powered device is responding slowly or appears to have poor communication, rebuilding its routes can help Z-Wave JS discover a better path through the mesh.

Do not repeatedly rebuild routes without a reason. Route discovery creates substantial network traffic and should be used when troubleshooting an actual problem.

Firmware Update

If the device supports the Z-Wave firmware update mechanism, Home Assistant can install a firmware file supplied by the manufacturer.

Always make sure the firmware file is intended for the exact model and hardware revision of your device. Interrupting or installing the wrong firmware can damage the device.

Z-Wave JS UI Still Exists — Do I Need It?

For a normal Home Assistant OS installation in 2026, I would use the official Z-Wave JS app.

The separate Z-Wave JS UI community app is being phased out because its advanced user interface has now been incorporated into the official app.

There are still some advanced features that may appear first inside the Z-Wave JS UI interface included with the app before they are exposed directly in Home Assistant’s native Z-Wave panel.

For example, current versions of the official Z-Wave JS app provide additional access-control management for supported Z-Wave locks through the included Z-Wave JS UI.

So the distinction today is no longer:

“simple Z-Wave JS or advanced Z-Wave JS UI?”

For Home Assistant OS, the official Z-Wave JS app is now the normal choice and already includes the advanced UI.

What About Home Assistant Container?

The recommended installation described above applies to Home Assistant OS, where Home Assistant can install and manage the Z-Wave JS app for you.

If you run Home Assistant Container, there is no Home Assistant app system managing the Z-Wave server.

In that case you must run a compatible Z-Wave JS server separately.

One common option is the Z-Wave JS UI Docker container. The Home Assistant Z-Wave integration then connects to that server using WebSockets.

This is one of the situations where manually entering a Z-Wave JS server address is still appropriate.

Migrating from the Separate Z-Wave JS UI App

This procedure is for Home Assistant OS installations that already use the separate Z-Wave JS UI community app. Do not simply stop and uninstall it and then start the official app. Its data must be migrated first so that the server configuration, security keys, and the information Home Assistant needs to recognize the existing network are preserved.

Important: do not reset the adapter, exclude any devices, or uninstall Z-Wave JS UI yet. A correct migration does not require you to re-pair the network.

Before you begin

  • Create a full Home Assistant backup and download it to another device.
  • Keep a separate copy of your Z-Wave security keys, especially the S0 key if older devices were securely included.
  • Make sure you have administrator rights.
  • Choose a time when the Z-Wave network can be temporarily unavailable.

Step 1: Install the official app and the helper apps

  1. Go to Settings > Apps > Z-Wave JS and install the official app.
  2. Do not start it yet. Two servers must not try to use the same adapter at the same time.
  3. Install Terminal & SSH and an app that can upload files, such as File editor or Studio Code Server.

Step 2: Download the Z-Wave JS UI backup

  1. Open the web interface of the separate Z-Wave JS UI community app.
  2. Open the Store tab and select Download in the bottom-right corner to save its ZIP backup.
  3. Keep a copy of that ZIP on your computer.
  4. Stop Z-Wave JS UI, but leave it installed until the migration has been verified.

Step 3: Run the official migration script

The official Home Assistant documentation links to the migration script that prepares the data for the new app.

  1. Download the script ZIP from the link in the official documentation and extract migrate_to_zwave_js_app.sh.
  2. Upload the script and the Store backup ZIP to a temporary Home Assistant folder, preferably /tmp.
  3. Open the terminal and run the following commands, replacing the example filename with the name of your backup:
cd /tmp
chmod +x ./migrate_to_zwave_js_app.sh
./migrate_to_zwave_js_app.sh store-backup_YYYYMMDDHHMMSS.zip

Follow the prompts shown by the script. If it reports an error, stop and preserve the existing installation. Do not reset the adapter or try to rebuild the network manually.

Step 4: Reconnect the Z-Wave integration

  1. Go to Settings > Devices & services > Z-Wave.
  2. Open the three-dot menu, select Reconfigure, and then choose Reconfigure the current adapter.
  3. For a normal USB- or TCP-based controller, select Use the Z-Wave Supervisor app, choose the controller, and submit.
  4. If you use a GPIO module or the controller is not listed, clear that option and enter ws://core-zwave-js:3000 manually.

Step 5: Verify the migration before removing the old app

  • Start the official Z-Wave JS app if Home Assistant has not started it automatically.
  • Confirm that the same nodes, devices, and entities are present.
  • Test several mains-powered devices and at least one battery-powered device.
  • Open the advanced interface included with the official app and confirm that the network is displayed correctly.
  • Once everything works, uninstall the old community app and remove the ZIP and script from the temporary folder.

The Z-Wave mesh remains stored in the adapter, so this procedure changes the server that manages it rather than rebuilding the network. If your separate Z-Wave JS UI setup is stable, you can prepare the migration carefully; the important part is to follow the migration path instead of directly replacing one app with the other.

Home Assistant Z-Wave Troubleshooting

My Device Won’t Pair

If a device refuses to join:

  1. Check that the device and adapter use the correct Z-Wave region.
  2. Try excluding the device first, even if you don’t think it is currently paired.
  3. Factory reset the device if necessary.
  4. Check the manufacturer’s inclusion procedure.
  5. Make sure the Z-Wave adapter is using a USB extension cable and is away from interference.

Do not immediately move the controller next to the device. Keeping the adapter in its normal location produces a network that better represents how it will actually operate.

The Device Was Added but Some Entities Are Missing

The most common reason is an incomplete interview.

Battery-powered Z-Wave devices spend most of their time asleep. Wake the device manually according to its manual and then use Re-interview from the device page.

Also remember that some Z-Wave devices, particularly certain buttons and remote controls, may expose events instead of normal entities.

A Device Is Slow or Unreliable

Before replacing hardware, check:

  • Z-Wave statistics,
  • the network map,
  • Z-Wave JS logs,
  • USB interference,
  • and the routes being used by the device.

If the device has been moved or the mesh topology has changed substantially, a route rebuild may help.

Should I Poll Z-Wave Devices?

Only when there is a real need.

Z-Wave is a relatively low-bandwidth network. Constant polling can generate unnecessary traffic and make the whole network slower.

Modern Z-Wave Plus devices normally report their state automatically.

If an older device does not report changes properly, Home Assistant provides ways to refresh individual values, but polling should be treated as a workaround rather than something to enable everywhere.

Z-Wave or Zigbee: Which Is Better?

Neither protocol is automatically better for every house.

Z-Wave uses region-specific sub-GHz frequencies, which keeps it away from the crowded 2.4 GHz band used by Wi-Fi and most Zigbee networks.

Zigbee, on the other hand, generally offers a much larger selection of inexpensive devices.

Both can build reliable local mesh networks when they are designed correctly.

For many Home Assistant installations, using both protocols makes perfect sense: choose the device and protocol that best solve each problem instead of trying to make the whole house use one technology.

Frequently Asked Questions

Is Z-Wave JS an integration or an app?

Both names appear because different components are involved.

Z-Wave JS is the underlying open-source driver.

The Z-Wave JS app runs the Z-Wave server on Home Assistant OS.

The Z-Wave integration connects Home Assistant to that server.

This separation is normal and is part of the current Home Assistant architecture.

Do I need to install Z-Wave JS UI separately?

Not for a normal new Home Assistant OS installation.

The official Z-Wave JS app now includes the feature-rich Z-Wave JS UI, and the separate community app is being phased out.

Do I need to manually configure a WebSocket URL?

Not when using the recommended Home Assistant OS installation.

Home Assistant configures the connection automatically.

A manual WebSocket URL is mainly relevant if you run your own Z-Wave JS server, use Z-Wave JS UI separately, or run Home Assistant Container.

Should I generate the Z-Wave security keys manually?

For a completely new network, no.

Leave the fields empty during the normal setup and Home Assistant will generate unique keys for you.

Existing networks are different: if your adapter already has securely paired devices, preserve the security keys that were originally used.

Should I buy a 700-series or 800-series adapter?

For a new installation, I would choose an 800-series adapter.

If an existing 500- or 700-series network is working reliably, however, there is no reason to replace the adapter simply to have a newer generation.

Is the SONOFF Dongle-PZG23 a good option for Home Assistant?

It is an interesting 800-series USB option for a conventional Home Assistant Z-Wave installation.

The SONOFF Z-Wave 800 Dongle Plus (Dongle-PZG23) uses an 800-series EFR32ZG23 platform, includes an external antenna, and is designed to work with Z-Wave JS-based systems.

Home Assistant’s own officially recommended adapter remains the Home Assistant Connect ZWA-2, so I would not describe the SONOFF as the official Home Assistant recommendation. However, it is a perfectly reasonable alternative to consider when choosing an 800-series USB controller.

If you want to buy the SONOFF Dongle-PZG23 from the official SONOFF storeAffiliate link, the coupon code tecnoyfoto gives you 10% off.

Do I need to repair my whole network after moving to the official Z-Wave JS app?

No.

The Z-Wave network itself is stored in the adapter. Migrating from the separate Z-Wave JS UI app to the official Z-Wave JS app does not require you to exclude and re-add every device when the migration is performed correctly.

Conclusion

In 2026, there are two different paths depending on where you are starting:

If you are creating a new Home Assistant OS network

  1. Connect a supported Z-Wave adapter.
  2. Select the recommended installation.
  3. Let Home Assistant install and configure the official Z-Wave JS app.
  4. Add devices from Settings > Z-Wave.

If you already use the Z-Wave JS UI community app

Do not replace it directly or re-pair your devices. Download its Store backup, run the official migration script, and reconfigure the integration to use the official app, as described in the migration section above.

The advanced Z-Wave JS UI tools have not disappeared; they are now included in the official app. The result is a simpler setup for a new network and a safe migration path for existing installations.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments (4)

Hi, hallo,
great tutorial (but: something always is…)

First: the naming of things…
Z-Wave JS is no addon anymore, it’s an app (Z-Wave server).

Second: Z-Wave JS and Z-Wave JS UI are ONE app, they have combined, but is still a app no addon.

The installation routine you’ve posted is not the easiest. Therefor you have first install the Z-Wave-Integration, then choose recommended installation (with Z-Wave JS including – how said – Z-Wave JS UI. It’s ONE app).
After choosing recommended installation you only have to follow the instructions, no thinking moments, no part you could do wrong things/settings. And finished.

If the USB-Controller is not discovered,abort the integraion, then bind it manually and after that restart the integration. That’s it.

so long

Reply

Hi Perlchamp,

Thank you for taking the time to point this out. You were right: the installation procedure in the article was outdated.

The current recommended setup on Home Assistant OS is much simpler. You can add the Z-Wave integration, choose the recommended installation, and Home Assistant will install and configure the official Z-Wave JS app automatically. There is normally no need to manually install the separate Z-Wave JS UI community app, configure the WebSocket address, or generate all the security keys yourself.

You are also right that the situation with Z-Wave JS UI has changed significantly. The official Z-Wave JS app now includes the advanced Z-Wave JS UI interface, which is why the separate community app is being phased out.

The only small terminology clarification I would make is that the Z-Wave JS app and the Home Assistant Z-Wave integration are still separate components: the app runs the Z-Wave server and manages the network, while the integration connects that server to Home Assistant.

I have now reviewed and completely updated the article to reflect the current recommended installation procedure, including adapter discovery, security keys, the new Z-Wave panel, backups, migration, and troubleshooting.

Thanks again for catching this. Your comment genuinely helped improve the guide.

Best regards
Albert

Reply

Your conclusion lays out the way a new installation of HA should be set up.

It doesn’t lay out the way users who have the gui add-on/app whatever should proceed. Surely there are a lot of them about!

Reply

Hi John,
Thank you for pointing this out. You were right: the article mentioned that a migration path existed, but it did not actually explain how an existing Z-Wave JS UI user should proceed.
I have now expanded the migration section with the complete procedure: creating backups, downloading the Z-Wave JS UI Store backup, running the official migration script, reconfiguring the current adapter, and verifying the network before removing the old community app. I have also rewritten the conclusion to clearly distinguish between new installations and existing Z-Wave JS UI setups.
Thanks again. Your comment helped make the guide genuinely useful for existing users as well as new installations.

Reply