Connect ZWA-2 anywhere: Use Z-Wave over Wi-Fi or PoE

Last month, we launched the Home Assistant Connect ZWA-2, our take on the best possible Z-Wave adapter. Based on the reviews, it sounds like we hit the mark 😎. Today, we’re announcing a new, experimental firmware that allows you to do even more with the ultimate Z-Wave adapter.

I’m Keith, a Senior Hardware and Software Engineer at Nabu Casa, but you also might know me from my work on the ESPHome project. If you weren’t aware, Nabu Casa is the commercial partner of the Open Home Foundation, and the organization that helps build official Home Assistant hardware.

During the launch, one piece of feedback we often received was that people wanted more flexibility in where they could place Connect ZWA-2 in their home — often far away from their Home Assistant system. It was no easy feat (more on that below), but we were able to build a solution that allows you to put it anywhere you have a network connection.

This experimental firmware will allow you to not only leverage the Wi-Fi chip inside the Connect ZWA-2, but also use it with other hardware to facilitate the use of the much-requested PoE. 🎉 This new firmware is only possible because of the second-generation platform we built Connect ZWA-2 on, which is open by design, allowing you to tinker and extend the device you own. Every piece of Home Assistant hardware reflects Nabu Casa and the foundation’s philosophy of constant evolution, and the software it launches with is just the beginning. Whenever we think of a cool new capability, we will work together to add it.

If you want to start using your Connect ZWA-2 with Portable Z-Wave today, visit the brand new home for all the foundation’s web-based tools. Just be aware that this is experimental, and we recommend you read through this blog to understand how it works and its limitations. You can also watch the upcoming ESPHome livestream, where we’ll discuss this new tech in depth.

Getting started

Home Assistant Connect ZWA-2 connected to a Waveshare ESP32-S3-ETH

NOTE: This firmware is experimental. Do not use it if you’re looking for the most stable Z-Wave experience.

To get started using your Connect ZWA-2 over your local network, you can use one of the two following configurations:

  • Wi-Fi - the new firmware will be installed on the Connect ZWA-2 and use its built-in Wi-Fi chip to communicate over your network.
  • PoE - the new firmware will be installed on an external development board that supports Power-over-Ethernet (PoE); Connect ZWA-2 will use its stock firmware and will plug into this new device via USB.

First, before installing this new firmware, make sure to back up your Z-Wave network and ensure your Home Assistant instance is running version 2025.10.2 or later. Only after those steps should you use the toolkit website for Portable Z-Wave. The toolkit’s wizard will walk you through the whole process of installing and connecting your device to your network. When the installation is complete, it should join your network and be discovered by both the ESPHome and Z-Wave integrations in Home Assistant.

This firmware has proven to work well in our lab and home environments, but the real world is a different place; your local network and Z-Wave network might behave differently. For this reason, we’re seeking your feedback. If you try it out, please let us know about your experience – good or bad, brief or long-winded – by leaving a comment below. We’re eager to know how and where we can improve it!

The Portable Z-Wave experiment

Before we launch any of our hardware products, we try to get our pre-production batch to as many testers as possible – most are hobbyists and tinkerers from the community, and of course, the first thing they tend to do is get out the screwdriver and open it up (to be fair, it’s designed to be easy to open — no glue, no clips). When looking at the insides of Connect ZWA-2, they were instantly greeted with an ESP32 chip, and were equally excited and confused. It was initially included just as a USB controller, and yes, an ESP32-S3 is a bit overkill for this specific task, but we wanted to give the device room to grow. This brings us to the experiment we are sharing with you today…

Making things mesh

When you use a Z-Wave adapter with Home Assistant, which relies on the Z-Wave JS add-on, they use USB to communicate via a specialized Z-Wave serial protocol. And yes, it is technically possible to run this Z-Wave serial protocol over your network (serial-over-IP), but our testing reveals that it’s not as reliable or as easy as we’d like. Some parts of the Z-Wave serial protocol are latency (delay) sensitive, specifically the acknowledgment of Z-Wave packets. If your network is busy and decides to take its sweet time with one of those critical packets, your Z-Wave device’s connection can time out and fail. This can stall Z-Wave device communication, or even completely break it.

For Z-Wave to work over a network, we need to address the latency-sensitive parts on the actual device; everything else can be forwarded over the network. This is where ESPHome steps in: it’s the open source software for network-capable microcontrollers that runs on ESP32 devices. We built an ESP32 into the Connect ZWA-2, and it has the horsepower (and Wi-Fi antenna) to handle this task.

To help make this all possible, we added Z-Wave support to ESPHome, allowing it to talk to Z-Wave chips. We then added the ability for Home Assistant and Z-Wave JS to communicate with Z-Wave adapters via ESPHome. As this work is open source, it shouldn’t be limited just to our Connect ZWA-2. Theoretically, it should be able to work with any certified Z-Wave adapter connected to an ESP32. However, before we look at supporting other adapters, we want to ensure that it’s stable when running on the Connect ZWA-2.

Home Assistant connected to the ZWA-2 via its integrated Wi-Fi chip.

Home Assistant connected to the ZWA-2 via the PoE module.

ESPHome handles serial message acknowledgments internally, then leverages its API (specifically its Protobuf implementation) to send the messages over the network more reliably than serial-over-IP. Even if your home network is bogged down by some spikes in traffic, ESPHome will have you covered, keeping your Z-Wave network stable. That’s not to say this has no impact on performance, but it may be less than you think – or can even notice!

Performance

Wi-Fi is very convenient, but the million-dollar question is: how will it impact your Z-Wave network? To find out, we ran some benchmarks to see how Portable Z-Wave stacks up to its USB counterpart.

Compared to a direct serial (USB) connection, a data packet will take longer to travel between Home Assistant/Z-Wave JS and your Z-Wave network when routed through your local network. On a network with only a low to moderate workload, the additional delay is very small and is generally not noticeable. That said, if your network is heavily stressed or the Wi-Fi signal is poor, you should expect packets to take longer to move around, which can lead to a perceivable delay. It can still control your lights and other devices, but it may be a bit slower. Here are some numbers illustrating the typical latency that we were able to achieve across our test environments:

Connection type Min (ms) Max (ms) Mean (ms) USB 4 9 5.36 Ethernet 15 32 25.14 Wi-Fi 15 92 29.16

Your results will likely differ somewhat, especially in less ideal conditions and environments. For instance, if you place your Connect ZWA-2 in a spot with really poor Wi-Fi connectivity, you might notice devices not reflecting their actual state or other buggy behavior. Avoid using VPNs or other complex network routing or configuration, as that will add latency. Also, don’t worry about Wi-Fi interfering with your Z-Wave network, as they operate on totally different radio frequencies that don’t interact. I think with a healthy dose of common sense, you can find a great spot that gets both great Wi-Fi connectivity while nicely optimizing your Z-Wave network.

Thanks

This project was brought to you by a collaboration between Nabu Casa and the people below from the Open Home Foundation. None of this would be possible without the support of Home Assistant Cloud subscribers and those who care about Z-Wave and have purchased the Home Assistant Connect ZWA-2. Thank you!

Thanks to Dominic, founder of Z-Wave JS, for quickly jumping in on this project, adding support to Z-Wave JS, and building the browser installation tooling.

Thanks to Nick and Jesse for their support with the ESPHome implementation.

Thanks to Steven for making the new Open Home Foundation toolbox website to allow easy installation of the experiment.

FAQs

Q: Is the Portable Z-Wave experiment limited to the Home Assistant Connect ZWA-2?

A: Theoretically, it should work with other Z-Wave adapters, but thus far we have only tested it with the ZWA-2. The code is part of ESPHome 2025.10, Home Assistant 2025.10.2, and Z-Wave JS v15.15.0. We chose Home Assistant Connect ZWA-2 as the first device with support since it already contains an ESP32-S3. If you’d like to try it out with your favorite Z-Wave adapter, you should start by taking a look at our ESPHome configuration for the ZWA-2 (all that should need changing are the vendor and product IDs to match the Z-Wave adapter).

Q: Is the Portable Z-Wave experiment limited to Home Assistant?

A: No. It is made to work directly with Z-Wave JS. If you use Z-Wave JS v15.15.0, either standalone or with another smart home platform, you are able to use it, too! Configure Z-Wave JS to connect to esphome://<IP OF THE ZWA-2>.

Q: Can I use Ethernet instead of Power-over-Ethernet?

A: Yes. Use a Power-over-Ethernet injector in combination with the Waveshare ESP32-S3-ETH board.


This is a companion discussion topic for the original entry at https://www.home-assistant.io/blog/2025/10/13/portable-z-wave-with-wifi-and-poe
16 Likes

Wow congrats on the release. This was easily the number one gripe with the ZWA-2.

Personally I’m a very happy user to date and it’s been a big step up over the zooz.

2 Likes

Nice! Love it! :sunglasses:

Wondering if a similar portable “Zigbee Proxy” (with Protobuf in ESPHome) can also be added for/on the upcoming ZBT-2 as well using the same Protobuf implementation in ESPHome?

Knew zwave-proxy was coming however did not think it would be announcement so soon:

1 Like

Follow-up question/request for Z-Wave JS developers if if there will ever be possible to setup Z-Wave JS with both primary and secondary Z-Wave Controller for high-availabiliy fail-over option if you have more than one Z-Wave Controllers and allow controller shift from primary (master) to secondary (slave) controller, thus demoting the old primary contoller then promoting the old secondary controller to become new primary.

I for one would for use use a two Z-Wave Controller setup for high-available if it was possible out-of-the-box as an easy plug-and-play configuration. High Availablity for Home Assistant, HA for HA! :grin:

OHF, Nabu Casa, and others selling Z-Wave Controller adapters would benefit from such a feature too since they would sell more adapters if the Z-Wave JS integration component for Home Assistant’s core and frontend UI could support multiple adapters as primary and secondary at the same time with config setup for fail-over scenario. :wink:

PS: While slightly off-topic but another indirectly related request for that follow-up quested is if Learn Mode could be added to a secondary controller in order to enable migrating an existing Z-Wave network from an propriatory Z-Wave Controller hubs, as if migrations from closed source third-party solutions was easier then that would be another win for Z-Wave JS and Home Assistant in then long term.

See related feature requests and discussions:

PS: Personally I will still always prefer a wired Ethernet / PoE connection instead of a Wi-Fi connection to the Z-Wave Controller adapter and Zigbee Coordinator dongle if given the option. Just say no to WiFi!

4 Likes

Would have bet good money that sooner or later you’d show up to say this after all these years of telling people that WiFi is the devil.

You didn’t disappoint :wink:

amazing work, thank you to everyone involved!

a maybe semi related question that I had not seen an answer, with the esp32 in zwa-2, is it possible that it can or could eventually be allowed as a bluetooth proxy ?

The configuration is open source, you can always alter it locally and give it a go =)

1 Like

Probably best not to use wifi or ethernet but the purpose here is to provide flexibility.

3 Likes

Any plans for Zigbee/Thread support?

1 Like

Sick! Add associations and this is perfect! Thanks for adding poe this is awesome

Can you also just connect the zwa-2 to a smlight SLZB-MR1U which supports USB over IP?

Also gives you zigbee and Bluetooth over IP

2 Likes

This is a great news and splendid product thinking!

However, these latency numbers bug me. While 50-ish ms on a poor Wi-Fi network could be understandable, then 15-32ms over Ethernet is completely out of place. On my network, I’m getting ~2ms latency over Wi-Fi (including latency to ESP8266 nodes) and <0.2ms over Ethernet! This means latency in this experimental mode should be about the same as over USB.

I’m betting on some areas to improve in ESP proxy code. Is it possible to use DMA there?

Not if you want a stable connection. Read the whole blog post more carefully as it explains that standard Serial-over-IP without a Protocol Buffers (commonly known as “Protobuf”) solution is not stable and therefore this custom implemnetation in ESPHome for the Z-Wave adapters is making use of a such ”Protobuf implementation” in ESPHome’s API specifically for this Z-Wave solution. Smlight is using plain Serial-over-IP which can not secure a stable connection in the long run, even if it will be stable most if the time if using wired Ethernet, and that is why the ZHA integration has warnings against using Serial-over-IP via WiFi or VPN/WAN to a remote Zigbee Coordinator adapter.

Does the ZWA-2 support running multiple independent Z-Wave meshes?
I currently use four Hubitat hubs (C7 and C8 models) as Z-Wave-to-Home Assistant bridges, with one hub in each of four separate buildings on my property. Each hub runs its own independent Z-Wave mesh network. Due to the distances between buildings and the number of devices involved, running a single unified Z-Wave mesh across the entire property isn’t viable.
Can I replace my Hubitat hubs with four ZWA-2 units while maintaining separate, independent Z-Wave mesh networks—one per building? Would each ZWA-2 be able to integrate with Home Assistant as a distinct Z-Wave controller?

While I do not know exactly how they measured the latency I am assume that it is not simply the latency of the network they measured as guess there are delays in both the respons-time of the Silicon Labs API for Z-Wave running on the Silabs microcontroller SoC and ESPHome’s “Z-Wave Proxy component” with “Protobuf” implementation (ESPHome’s protocol buffers for the Silabs serial communication protocol) that they do in this Serial over LAN (SOL) server with a mechanism for serializing and buffering of serial communication of Serial-over-IP tunneling via ESPHome.

Regardless, keep in mind we are talking about ESPHome running on the ESP32 chip talking over serial/UART to the Silicon Labs MCU that uses the Z-Wave application firmware via its propriatory serial CLI/API. As such there will be additional delays in the full chain. So guess you can not just compare it to how fast you can ping stuff on your networks. Simplified schematic:

Z-Wave JS ↔ LAN ↔ ESPHome + Protobuf on ESP32 ↔ Serial ↔ Z-Wave FW on Silabs MCU.

Anyway, this really is awesome as-is, however I too hope they will continue to improve/optimize performance while not sacrificing reliability as both low-latency and stability are two keys here.

2 Likes

Can I finally migrate my legacy zwave devices from my legacy SmartThings hub? Sounds like I just need to buy the zwa2 and the PoE adapter thingy and make sure I’m upgraded on HA version.

Any chance there is a method to migrate from Smart Things that doesn’t involve manual exclusion and inclusion of each device? :crossed_fingers:

Fantastic work!

I have a large z-wave network with unreliability at the edges of the mesh. This update provides an option to move my controller to a more central location, or to add a second mesh at the far end of the network.

ZW over IP is ideal for connecting devices in a detached outbuilding, but within my house I would prefer to keep all devices on the same mesh. Hopefully an ESP32 chip would also permit configuring the ZWA-2 as a standalone repeater rather than controller only?

1 Like

I’m curious about the latency issues. Is it a problem because zwave-js is talking to the controller (e.g. ZWA-2) over the LAN or the lack of using the more efficient Protobuf?

Or asking another way, does this layout still have the latency issues described above or does it address the problem? That is, moving zwave-js out to where the remote ZWA-2 is located.

HA ↔ LAN (websocket) ↔ z-wave-js ↔ USB serial ↔ z-wave controller/ZWA-2

ESPHome video where latency and stability here is explained in technical details by developers:

That is, this solution based on Protobuf (Protocol Buffers) works around some of the limitations of serial communication protocol by buffering and serializing messages sent between Z-Wave JS and the propriatory Silicon Labs serial interface running as the Z-Wave stack application in firmware of the Silabs micrtocontroller, which while adding more latency actually makes it stable enough to use as it secured that packages with the serial messages arrive in the correct order with ACK (i.e. it is not only a buffering but also serializing and package/capsulates the serial messages and ackknowledge reception/delivery before transfering the next package in the correct sequence). See:

and

While this solution adds further latency it is also what makes it possible to get a stable enough serial communcation working over a potential slow and unstable connection such as WiFi which may have unexpected delays and dropped or resent packages which the Z-Wave serial interface protocol from Silicon Labs was not designed to handle on its own.

Watch the video and know that I am at least not alone in thinking that best not to use Wi-Fi :wink:

As pointed out there, WiFi is an added risk factor and all the devs avoid it like the plague :stuck_out_tongue:

1 Like

Yes the potential for latency and stability problems only occurs when Z-Wave JS have to connect to the serial interface Z-Wave Controller over a Serial-over-LAN connection.

You get no problems if you instead run Z-Wave JS server at the remote location and have it direct connect to the Z-Wave Controller (using just a USB to serial bridge)