All the settings should have pulled in from the configure. There might be a setting you have to set to enable the button events. Once they are working you will see a pushed attribute and also info logs for every button "push"
thanks. i will do some reading and see if I can figure it out.
Shelly Wave i4 — 4-Channel Contact Sensor Driver (Toggle/Dry Contact Mode)
Background
I purchased several of these Shelly Wave I4’s thinking they would behave the same way as the standard Shelly I4 (wifi) devices with reporting the open/closed state of 4 independent dry-contact relay inputs, which wasn’t the case as others have found.
The existing Hubitat drivers (both the built-in and @jtp10181 Universal driver) handle the device as a scene controller using the Central Scene command class (momentary mode), which works well for pushbutton inputs but has two fundamental problems for dry-contact monitoring:
-
No persistent ON/OFF state — Central Scene reports a "held" event while the contact is closed, repeating approximately every 55 seconds. This means you're dependent on a heartbeat rather than a clean edge-triggered state change, and a single missed packet leaves you with stale state until the next repeat.
-
Simultaneous inputs mask each other — this is a firmware limitation, not a driver issue. When a second input closes while another is already held, the device's Central Scene state machine reports the first input as "released" even though it's still physically closed. This makes Central Scene completely unsuitable for any use case where more than one contact can be closed at the same time.
The device actually has a proper toggle switch mode (parameters 1–4 set to value 1) designed exactly for dry-contact inputs, where it sends a Binary Switch ON/OFF on each state change rather than Central Scene notifications. The problem was that no existing Hubitat driver implemented support for this mode. After some investigation and empirical testing I've written one with help from Claude AI. Note I’m not a Developer, I’m sharing it here for your use as is.
How it works
When inputs are configured in toggle mode, the Wave i4 sends SwitchBinaryReport commands encapsulated in MultiChannelCmdEncap, with each input mapped to its own Z-Wave endpoint:
| Input | Z-Wave Endpoint |
|---|---|
| SW1 | 2 |
| SW2 | 3 |
| SW3 | 4 |
| SW4 | 5 |
Contact closed → value 0xFF (ON)
Contact open → value 0x00 (OFF)
One critical discovery during development: the hub's node ID must be registered in the device's association groups using MultiChannel Association (command class 0x8E), not regular Association (0x85). Using regular AssociationSet for these groups has no effect — the Binary Switch reports simply never arrive at the hub. The relevant groups are 2, 4, 6 and 8 (one per input, even-numbered groups only; the odd groups handle hold/release for momentary mode and are unused in toggle mode).
The driver
The driver is fully self-contained. Pressing Configure does everything in one operation:
-
Sends
MultiChannelAssociationSetfor groups 2, 4, 6, 8 → hub node 1 and verifies each -
Sets device parameters 1–4 to Toggle Switch mode (value 1, size 1) and verifies each
-
Creates 4 child Generic Component Contact Sensor devices (one per input)
-
Automatically refreshes all 4 input states 15 seconds later so they correctly reflect the physical contact positions immediately after configure
After Configure completes you should see confirmation in the logs for each association group and each parameter, and the configStatus attribute on the parent device updates to "configured OK".
The Refresh command polls the current state of all 4 inputs on demand. Each child device also has its own Refresh that polls just that endpoint.
The driver includes a Z-Wave device fingerprint so Hubitat will automatically suggest it during Z-Wave inclusion of a Wave i4 or Wave i4 DC.
Re-run Configure after any factory reset or Z-Wave re-inclusion as both the association groups and parameters are wiped by those operations.
Installation
-
In Hubitat, go to Drivers Code → + New Driver
-
Paste the driver code below and click Save
-
Open your Shelly Wave i4 device page, change the Type dropdown to Shelly Wave i4 Contact Sensor with multichannel Association and click Save Device
-
Click Configure
-
Watch the logs — you should see association confirmations followed by parameter confirmations, 4 child devices created, then an input state refresh 15 seconds later
-
Test each input — child contact sensors should report open/closed correctly
Notes
-
The device must be Z-Wave included before installing this driver. Standard Classic mesh inclusion via Hubitat's Z-Wave inclusion process works correctly.
-
If any input generates Central Scene events after Configure runs, that input's parameter did not save to toggle mode — re-run Configure and check the logs for a parameter confirmation entry for that input number.
-
If after a factory reset or re-inclusion the child devices already exist from the previous setup, Configure will skip re-creating them and just re-set the associations and parameters, which is correct behaviour.
-
Debug logging can be enabled in Preferences for detailed event tracing.