My goal was to use the ZEN58 to control a furnace through the relay and monitor the dry-contact input separately. The input must not control the relay. That may change later, but it felt like a good day-one setup.
Getting the ZEN58 to create the child device wasn't easy to figure out, but going through Zooz's ZEN58 advanced settings page over and over is what made it work. I'll also say Z-Wave JS worked better for me: the built-in firmware updater got the ZEN58 to 1.30 with no issues at all. Here are the gory details for anyone attempting something similar.
HTH.
My setup: Hubitat C-5, platform 2.5.2.139, Z-Wave JS 15.29.0 · ZEN58 firmware 1.30, S2 Authenticated
TL;DR
- Getting the input child (device setting): set
P5 = 10 (On/Off Report)andP11 = 1 (Input Trigger disabled), then exclude and re-include. Don't factory reset, because that puts P5 back to 0. P5 decides at inclusion time whether the device exposes an input endpoint. Running Configure afterwards can't add one. - Missing relay state (driver issue): after re-inclusion, the stock driver created the input child and still switched the relay, but the parent's switch never updated.
- Fix: a small custom driver: available as a gist
What I found
- With the default input types, the input only came through as Central Scene button events. P5 = 2 gave held/released, but held repeats every ~55 s while the input stays closed, and I lost a released at least once. That wasn't good enough for a furnace.
- Zooz's advanced settings page has the key line: for
P5values 4–12, "you must exclude and re-include the device … so a child device is created for the input." - After re-including, Z-Wave Details → State showed the Binary Switch values on
EP1(relay) andEP2(input), and no values on the root endpoint. The stock driver appears to read the root, so the parent's switch stayed null and refresh returned nothing. (An Association Report –Group 1, Nodes: []line in the logs was a red herring.)
The driver
- Sends
EP1reports to the parent switch, and sends on/off toEP1so the new state is reported back. - Sends
EP2to a child device: Generic Component Contact Sensor (closed/open) by default, or a switch if you prefer. - Maps Central Scene to button 1, with the 55 s held repeats filtered out.
Parameter safety: The parameter preferences start blank, and Configure reads the device's actual values into them, so saving preferences never pushes a value you didn't choose. This matters with P11. If a driver writes the default (0), the physical input takes control of the relay again. For a furnace that's a real safety problem, not a cosmetic one.
How to check it works
- Relay on/off from the hub updates the parent's switch.
- Opening and closing the input updates the child, and the relay doesn't change.
- Repeat with the relay both on and off. FW 1.30 fixed an "input stuck on while the relay is on" bug, and I saw no sign of it.
Side notes
- The community firmware updater driver fails on Z-Wave JS (
MissingMethodException … FirmwareMdGet.getJsonCMD). Use the built-in Device firmware updater on Z-Wave Details. - Zooz documents
P7as Auto Turn-Off andP8as Auto Turn-On. The stock driver's labels appear to have them swapped.
For Hubitat staff: in this configuration, the stock driver appears to need EP1 report handling for the parent switch. I'm happy to share logs.