This is a custom driver for Nice IBT4ZWAVE module pluggable into Nice gate and garage door controllers. To control the gate the module exposes a multi-level switch command class and can be used with an inbuilt Generic Z-Wave Plus Dimmer driver - which can prove basic functionality but does not allow the user to see the current state of the gate properly nor export the device properly as a gate to HomeKit. On the other hand, this driver exposes the device as a garage door and internally maps its multi-level switch values to one of the following states: open, closed, opening, closing, stopped, unknown.
Notes
The driver exposes a "stopped" state which can occur if gate or garage doors hit an obstacle or are stopped by a pilot.
This state is not listed as supported by Hubitat Garage Door Control capability and the user can disable this behavior in preferences.
The driver has been tested on Nice IBT4ZWAVE from EU distribution module with firmware version 7.0 and securely paired with Hubitat.
The driver incorporates also a contact sensor capability only to allow the user to export the device to HomeKit as a garage door. The requirement to have a contact capability might be an error of the HomeKit integration and may be removed in the future.
Changelog
V0.1.1 - 17.12.2024: Improved fingerprint and added state update based on supervision report to improve speed and reliability.
I hope you don't mind I have severely based my driver on your code. I just bought Hubitat some days ago and I am very fresh with the ecosystem and actually never coded anything in Groovy before, not to mention my understanding of Z-Wave internals was always rather superficial. Please let me know if the attribution to you in the file is sufficient or would you like me to alter it.
Looks good to me, let me know if you need a help figuring anything out with Z-wave. Your fingerprints are missing the prod key and I would actually suggest getting rid of the clusters and replacing it with just one fingerprint in this format:
You need to get the prod numbers from the device page and fill in.
Yes inClusters:"0x00,0x00" exactly as shown
The clusters are used to match other devices that do not match the exact mfg/prod/deviceID and I found that by including those (especially the short clusters found when using S2) will cause the driver to match other random items and confuse people. The secure clusters are totally ignored. By having that format above the driver will only be matched up with the exact device you have coded it for. People can still select it manually if they want to use it on other devices for some reason.
Hi @bogus.wojcik ,
Just installed your driver and put it to the test.
First impression is great.
I had to change the dashboard template I am using to control this device and I am now using Garage (control).
One more thing, looking at the logs, I do not see the closing state. I only see, open, close and opening. No closing. It is not that important but thought I'll let you know.
Thanks a lot for this driver and I will keep testing and let you know what I find.
No it is not AFAIK. I do not see in the driver code the option for this error message and I can only guess this is coming from the Homekit integration trying to process the command and failing.
Looking at the driver code again I also see that @bogus.wojcik mentioned that:
"Unfortunately, while providing basic functionality, it does not allow the user to see the current state of the gate properly nor export the device properly as a gate to HomeKit."
If no other option is available i might be able to walk around that with a virtual device in Homekit but did not yet check.
@amithalp Hello! The reason why you see this error is probably because you have previously exported your gate/garage door as a switch to HomeKit, so when you click on/off on your iPhone it sends command to a non-existing interface.
First go to the Apps/HomeKit Integration and click "Restart Integration" and then check how your gate/garage door is listed in the list of exportable devices. It should look like this. If this doesn't help, maybe tick off this particular device, refresh page, and tick again.
If you don't see this exactly as it is on my hub, there is a chance you have an older version of the Hubitat Platform and therefore an older version of the HomeKit integration. They introduced Garage Door in a particular version of HomeKit/Platform but I cannot find the changelog. Also last year there have been a lot of improvements to the HomeKit integration.
This is how it looks like on my iPhone after exporting through HomeKit (localized descriptions):
And this is how the log looks like for the device:
I am running the newest Platform version, so all works fine for me. Please check what version of the platform you have. Also, it should really show the "closing" status, so maybe you could:
enable debug logging
close and open the gate
and paste here a log
also the firmware version that is shown on your device screen
Hi @bogus.wojcik ,
I am running the latest version on my hubs - 2.3.9.201
When restarting the Homekit app from Hubitat it did not change the type it uses to export to homekit but a manual change did the job. Thanks.
As for the "closing issue".
Please see the full logs below:
I think there is a good chance you have an older version of the module with some bugs in the firmware. I've been lucky to get an item from a batch produced in June 2023 when I bought it a year ago. What happens in your log is that when your device starts closing it sends report with the current value 99 and target value 99, while it should send 254 and 0 respectively.
If you don't mind one more test, then it would be great if you could show me your log with debug when you open and close the gate but using your REMOTE PILOT and not the application. Also could you paste the firmware version it shows on your device screen?
I think I have an idea how to handle this, but need to think it through.
@jtp10181 Thank you for your hints. I have updated the fingerprint. Also I have changed the behavior of the driver in a way that it utilizes supervision report status in reporting to avoid additional requests to the device. Makes it work faster and more reliably.
Simply put, if supervision report status is working I know for sure that the gate is either opening or closing, and by knowing the value which was sent in the supervised command I know which one of this operation is happening. Similarly, if the status is a success, then I know that gate was already open or closed when I sent the command. If you want, have a look at the code: Nice IBT4ZWAVE Z-Wave 700 Driver for Hubitat v0.1.1 · boguslaw-wojcik/hubitat@e557e7f · GitHub
@amithalp Please use version 0.1.1 of the driver and let me know if you see all states correctly when manipulating the gate from the App/Hubitat/Homekit.