I would appreciate a code review as it's the first time I've written a driver or written any Groovy. Driver best practices are pretty thin on the ground.
Key highlights
Low latency - latency is less than 600ms between clicking a button and triggering an automation. I originally assumed I'd need to include a feature to configure association groups in my driver but I am happy with the responsiveness of two-way and three-way lights and more complex light automation.
All end-points are exposed - the driver exposes both the button and the relay end-points. This allows a button to be decoupled from its relay and the two controlled separately.
I've started playing around with your driver. Great work - got me further than the built-in driver.
A couple of issues.
1 - I don't seem to have access to the relay. Just the button device, Installed the code for the relay but nothing shows up. On a four button panel should I have 8 component devices (I only have four).
2 - Relay control source - I only have one option which is gateway. Is this intentional - should there be more options (I'd like to keep the relay tied to button state).
Glad the code has been useful to you. I have 27 of these switches which makes for a reasonable amount of testing through everyday use. The one thing that isn't tested so well is how they recover after a power cut or a breaker flipping off/on. The Heltun switches themselves don't report back to the hub on powering up, so I have added a check (see state check interval in the config) that forces Hubitat to sync its state with the switches every so often (the default is every two hours).
I have to admit - I had a bit of a sense of humour failure last week with zwave and Hubitat in general. Just had so many issues with lag and reliability for lighting. I got these Heltun to try something new - a way to give users some feedback on button status - but it was even worse than before. I don't think this has anything to do with your drivers. The issue was one I have seen more generally with all my lighting automations.
For now I have taken the Heltun switches out of play and wired my lights to totally avoid the hub and any kind of zwave processing. They are basically dumb digital switches now but at least my lights work without any lag.
Thank you for the driver! It has much more functionality compared to a default one. However I found one issue:
InfluxDB logger can't see Temperature, humidity and illuminance sensors when this driver is in use. Is it possible to do something with that?