Fallen leaves, fallen leaves on the ground. And as the seasons (or what we still have left of them) change, the cold sweeps over Vienna. We recently moved to a new place and as such, had to figure out how to actually get it warm during the cold months. In our previous flat, we had a simple thermostat that told our gas boiler when to turn on and off. Our new place is connected to the remote heating network of Vienna, but not new enough for in-floor heating. This means, heating is controlled on the radiators directly. Usually they are fitted with an analog valve but the previous owner left us their devolo Home-Control based system. Obviously, they reset their system before so I had to set it up again.
When searching on how to set it up though, I found out that devolo will turn off their servers at the end of the year (2025). The press statement contains an interesting sentence though:
Nutzer können alternativ die Home Control-Zentrale gegen das Z-Wave-Gateway eines anderen Herstellers austauschen.
(Translated: Users can alternatively switch out their Home Control hub for a Z-Wave-Gateway of another vendor)
This is great! It means that I can set up the complete system without relying on any cloud vendor and can manage it all through my local home-assistant setup!
The only problem is, that my home assistant server is nowhere near the radiators so I needed to set up a Z-Wave gateway that I can place in a good position and connect to it over Wi-Fi.
After searching around for a bit, I found this article on the Home Assistant blog. Great timing as it was just released two days before I started this whole ordeal.
It describes an experimental firmware for the Home Assistant ZWA2 antenna that leverages the built in ESP32 to bridge Z-Wave over WiFi - exactly what I needed. And after a few days of waiting, I received an antenna shaped package!

Setting up the hardware
The first step to setting things up is to prepare the ZWA-2. For the first run I used the online flashing tool but will probably build my own ESPHome configuration based on the upstream config soon. It took a few tries but eventually the setup succeeded and it connected to my Wi-Fi network.
Deploying the software
To actually talk to the antenna, home assistant needs another intermediate layer: zwave-js. It serves as a translation between the home assistant domain and talking to the Z-Wave adapter over the network. To deploy it, I used the zwavejs/zwave-js-ui container. There are more lightweight images available but I had troubles with Z-Wave before and this one offers a nice UI to debug things if something goes wrong. Because this is not a traditional adapter, you don't even have to mess around with device pass through or permissions. As long as the process can reach the IP address of the ZWA-2, you're good!
To configure the zwave-js server, you need to configure the Z-Wave settings and
enable the WS-Server for Home Assistant. Use esphome://<IP-ADDR> as the serial
port in the Z-Wave settings.
After that, your device should be showing up in the control panel like this:
Connecting the zwave-js server to Home Assistant is as easy as adding the Z-Wave integration and specifying the URL of the zwave-js WebSocket endpoint.
After Home Assistant has established a connection, the ZWA-2 shows up as a device and you can finally turn off the annoying LED!
Adding the devices
When setting out on this journey, I expected the worst. I'd assume that instructions on how to get these devices paired to another gateway would be very hard. And I've never been so happy to be wrong!
Turns out, Z-Wave certified devices all have these instructions published in an easy-to-digest catalog.
To add a new device, click on Add new device in the Z-Wave integration settings. Choose Search for device and perform the Inclusion action as specified in the manual.
If you're migrating from an existing Devolo Home Control based setup, reset the devices first. Instructions for this can also be found in the manuals.
It shouldn't take long for the device to be detected. After you've added every single device, you'll be left with a bunch of thermostats in Home Assistant! Make sure to give every one a name and assign the correct location, otherwise it'll be hard to identify specific nodes in the future.
Automating things
Even though the devices now all show up, on its own this doesn't do much. This is the responsibility of Automations. I haven't fully explored the capabilities of this yet but put together a small automation that updates the temperature setpoint of all radiators in one room by changing the temperature on the thermostat:
automation:
- alias: Sync temperature
trigger:
- attribute: temperature
entity_id:
- climate.room_thermostat
trigger: state
condition: []
action:
- action: climate.set_temperature
data:
temperature: '{{trigger.to_state.attributes.temperature | float}}'
metadata: {}
target:
area_id: living_roomAnd for what it's worth, this works really well! It also allows me to set the temperature directly on a schedule and if it's ever too cold or too hot, I don't have to pull out my phone to change the temperature real quick.
Closing thoughts
I was pleasantly surprised how well this turned out. If you're in the market for IoT solutions, you might want to check your area for people getting rid of their - now unsupported - system. I bet they'll go for pretty cheap soon. I'll be on the lookout to get some for the remaining radiators for sure!