[RELEASE] Advanced Zooz Zen22 / Zen21 Central Scene Dimmer and Switch Drivers

I'm not saying the driver doesn't work. It does.

But the way it's implemented is not compatible with the default driver, and it causes trouble if you change these parameters and then switch back.

Ah. Now I see what you mean.

On another note, I updated my Zen22’s yesterday to FW v4.01 and they reversed the numbers for the scenes.

I am getting button 1 from a single press on the upper paddle. The switch is not installed upside down and the paddle orientation is Normal. I have updated zen21/22/26/27 and I am only seeing this on the zen22s.

The reason I got into this was I tried the advanced driver for my Zen21 and I couldn't figure out how to get it to report when a button is held down. The standard driver supports that.

I just installed a few Zen22 dimmers, and the parameter to disable the night light mode is not working. I set it to 0 but when I tap and hold it still turns on.

Hardware version 4.0, firmware version 4.0

Tagging @agnes.zooz in case this is a known issue with the firmware

What I suspect is happening is that this driver was written for a particular Zooz firmware version, and it was well before V4. The newer firmware parameters might be/are different, and this driver does not match those parameters.

This driver is a community driver that is no longer maintained. The best thing to do would be to use the built-in (Hubitat) driver for now. You can change parameters by using the Hubitat Zwave tool found below.

You install this, change the driver type to this tool, and set your parameters. Once done, you switch back to the built in driver.

The driver uses parameter 22. According to Zooz's own documentation, that's still correct.

https://www.support.getzooz.com/kb/article/319-zen22-dimmer-switch-ver-4-01-advanced-settings/#:~:text=Parameter%2022%3A%20Set%20the%20brightness,held%20DOWN%20for%20a%20second.

That page is labeled 4.01, so I wonder if that parameter was introduced in v4.01 of the firmware, since the manual that came in the box doesn't mention it.

Figured it out... it's a bug in the driver not sending a value of 0 to the device.

1 Like

Again, this wasn't written with the V4 in mind. It was developed for versions 3.7 (ZEN22) and 3.4 (ZEN21). (see first post) I guess you could call it a bug, but it really is more of a driver mismatch or a wrong driver in general for the V4. I don't think this driver works well with the older Zooz firmwares either, from what I understand.

I believe Bryan has said elsewhere that he doesn't mind someone taking these over and doing further development. (maybe he will confirm this?) But for now, they are not supported by the author, nor by Hubitat.

They may or may not work well depending upon Hubitat firmware versions, and Zooz firmware versions. I would warn anyone that these are to be used at your own risk on anything but the versions listed.

2 Likes

No, it was a bona fide bug. It would have failed on any version of the firmware.

If you entered a (perfectly legal) value of 0, the driver would just not send it to the device, because the driver checked for validity with

if (val)

instead of

if (val != null)

The first evaluates to false when val is 0; the second does not.

Sometimes the conveniences in groovy drive me nuts.

I don't think this driver works well with the older Zooz firmwares either, from what I understand.

It works nicely with my v4, especially now that I added support for held/released (buttons 1 and 2 only) and buttons 9 and 10 (5-tap). Happy to share the code with anyone who wants it.

I just recently came across this driver and wasn't even aware of it. I updated 1 of my zen 22's(which took half the day, no joke) to 4.1. When it was done i couldn't get anything out of it, wouldn't respond to anything. I rebooted the hub(c5) and tried again later still nothing. I then did an inclusion and that worked. It added a device but showed it updated to 4.1. I then switched the driver to this one and am getting all sorts of crap in my logs. Would be much appreciated if i could try your updated one. Here's what i'm getting

dev:18892020-10-25 07:45:19.573 pm debugparse:zw device: 3F, command: 5B03, payload: 06 83 02 , isMulticast: false

dev:18892020-10-25 07:45:17.756 pm debugBasicReport(value:0)

dev:18892020-10-25 07:45:17.754 pm debugparse:zw device: 3F, command: 2003, payload: 00 , isMulticast: false

dev:18892020-10-25 07:45:16.805 pm debugparse:zw device: 3F, command: 5B03, payload: 05 80 02 , isMulticast: false

dev:18892020-10-25 07:45:05.530 pm debugBasicReport(value:99)

dev:18892020-10-25 07:45:05.528 pm debugparse:zw device: 3F, command: 2003, payload: 63 , isMulticast: false

dev:18892020-10-25 07:45:04.503 pm debugparse:zw device: 3F, command: 5B03, payload: 04 83 01 , isMulticast: false

dev:18892020-10-25 07:45:01.645 pm debugBasicReport(value:0)

dev:18892020-10-25 07:45:01.643 pm debugparse:zw device: 3F, command: 2003, payload: 00 , isMulticast: false

dev:18892020-10-25 07:45:00.709 pm debugparse:zw device: 3F, command: 5B03, payload: 03 80 02 , isMulticast: false

dev:18892020-10-25 07:45:00.662 pm debugparse:zw device: 3F, command: 5B03, payload: 03 80 02 , isMulticast: false

dev:18892020-10-25 07:44:56.194 pm debugparse:zw device: 3F, command: 5B03, payload: 02 83 02 , isMulticast: false

dev:18892020-10-25 07:44:55.985 pm debugparse:zw device: 3F, command: 5B03, payload: 02 83 02 , isMulticast: false

dev:18892020-10-25 07:44:55.951 pm debugparse:zw device: 3F, command: 5B03, payload: 02 83 02 , isMulticast: false

dev:18892020-10-25 07:44:45.180 pm debugparse:zw device: 3F, command: 5B03, payload: 01 83 02 , isMulticast: false

dev:18892020-10-25 07:44:41.630 pm debugBasicReport(value:99)

dev:18892020-10-25 07:44:41.616 pm debugparse:zw device: 3F, command: 2003, payload: 63 , isMulticast: false

dev:18892020-10-25 07:44:40.611 pm debugparse:zw device: 3F, command: 5B03, payload: 00 83 01 , isMulticast: false

dev:18892020-10-25 07:40:56.775 pm debugSwitchMultilevelReport(value:0)

dev:18892020-10-25 07:40:56.772 pm debugparse:zw device: 3F, command: 2603, payload: 00 01 00 , isMulticast: false

dev:18892020-10-25 07:40:42.144 pm debugSwitchMultilevelReport(value:99)

dev:18892020-10-25 07:40:42.141 pm debugparse:zw device: 3F, command: 2603, payload: 63 62 00 , isMulticast: false

dev:18892020-10-25 07:40:42.107 pm debugSwitchMultilevelReport(value:99)

dev:18892020-10-25 07:40:42.105 pm debugparse:zw device: 3F, command: 2603, payload: 63 62 00 , isMulticast: false

dev:18892020-10-25 07:40:42.042 pm debugSwitchMultilevelReport(value:99)

dev:18892020-10-25 07:40:42.031 pm debugparse:zw device: 3F, command: 2603, payload: 63 62 00 , isMulticast: false

dev:18892020-10-25 07:40:41.972 pm debugparse:zw device: 3F, command: 7006, payload: 16 01 14 , isMulticast: false

dev:18892020-10-25 07:40:30.054 pm debugparse:zw device: 3F, command: 7006, payload: 0F 01 01 , isMulticast: false

dev:18892020-10-25 07:40:29.912 pm debugparse:zw device: 3F, command: 7006, payload: 0F 01 01 , isMulticast: false

dev:18892020-10-25 07:40:29.640 pm debugparse:zw device: 3F, command: 7006, payload: 0F 01 01 , isMulticast: false

dev:18892020-10-25 07:40:26.226 pm debugparse:zw device: 3F, command: 7006, payload: 0D 01 01 , isMulticast: false

dev:18892020-10-25 07:40:25.586 pm debugparse:zw device: 3F, command: 7006, payload: 0D 01 01 , isMulticast: false

dev:18892020-10-25 07:40:25.203 pm debugparse:zw device: 3F, command: 7006, payload: 0E 01 00 , isMulticast: false

dev:18892020-10-25 07:40:15.065 pm debugparse:zw device: 3F, command: 7006, payload: 0E 01 00 , isMulticast: false

dev:18892020-10-25 07:40:14.691 pm debugparse:zw device: 3F, command: 7006, payload: 0E 01 00 , isMulticast: false

dev:18892020-10-25 07:40:09.588 pm debugparse:zw device: 3F, command: 7006, payload: 0C 01 00 , isMulticast: false

dev:18892020-10-25 07:39:58.668 pm debugparse:zw device: 3F, command: 7006, payload: 0A 01 01 , isMulticast: false

dev:18892020-10-25 07:39:58.453 pm debugparse:zw device: 3F, command: 7006, payload: 0A 01 01 , isMulticast: false

dev:18892020-10-25 07:39:58.152 pm debugparse:zw device: 3F, command: 7006, payload: 0A 01 01 , isMulticast: false

dev:18892020-10-25 07:39:54.209 pm debugparse:zw device: 3F, command: 7006, payload: 06 04 00 00 00 3C , isMulticast: false

dev:18892020-10-25 07:39:54.172 pm debugparse:zw device: 3F, command: 7006, payload: 06 04 00 00 00 3C , isMulticast: false

dev:18892020-10-25 07:39:53.232 pm debugZooz: AssociationReport(groupingIdentifier: 1, maxNodesSupported: 1, reportsToFollow: 0, nodeId: [1])

dev:18892020-10-25 07:39:53.230 pm debugparse:zw device: 3F, command: 8503, payload: 01 01 00 01 , isMulticast: false

dev:18892020-10-25 07:39:52.711 pm debugZooz: AssociationReport(groupingIdentifier: 1, maxNodesSupported: 1, reportsToFollow: 0, nodeId: [1])

dev:18892020-10-25 07:39:52.709 pm debugparse:zw device: 3F, command: 8503, payload: 01 01 00 01 , isMulticast: false

dev:18892020-10-25 07:39:52.653 pm debugZooz: AssociationReport(groupingIdentifier: 1, maxNodesSupported: 1, reportsToFollow: 0, nodeId: [1])

dev:18892020-10-25 07:39:52.651 pm debugparse:zw device: 3F, command: 8503, payload: 01 01 00 01 , isMulticast: false

dev:18892020-10-25 07:39:52.612 pm debugZooz: AssociationReport(groupingIdentifier: 1, maxNodesSupported: 1, reportsToFollow: 0, nodeId: [1])

dev:18892020-10-25 07:39:52.610 pm debugparse:zw device: 3F, command: 8503, payload: 01 01 00 01 , isMulticast: false

dev:18892020-10-25 07:39:52.575 pm debugZooz: AssociationReport(groupingIdentifier: 1, maxNodesSupported: 1, reportsToFollow: 0, nodeId: [1])

dev:18892020-10-25 07:39:52.573 pm debugparse:zw device: 3F, command: 8503, payload: 01 01 00 01 , isMulticast: false

The updated driver is here:

https://raw.githubusercontent.com/dds82/hubitat/master/Drivers/zooz/zen22-dimmer.groovy

But the only bugs I fixed had to do with certain advanced properties not saving to the switch properly. Besides that, I just added a few features. If the original driver isn't working for you, my changes probably won't help much.

Those look like debug logs, which should turn off automatically after a bit. Or you can turn off logging in the device page.

Okay just got around to trying your version, i got it working. Is there a way to disable the inclusion/exclusion on buttons 5 and 6?

I wish. That's built into the firmware, and they didn't list a parameter for that in the manual.

Just getting my new Hubitat C7 and ZEN21 and ZEN27 switches setup. I am finding like others that these drivers do not seem to work correctly. I thought they were working earlier, but I realized somehow some of stuff got paired with no security so I redid it to get the S2. Now the only way anything works is with the built in drivers. With the normal driver I can hit configure and watch in the log where it sets a bunch of the variables. With this custom driver nothing happens for configure or any of the buttons, it is as if it is totally broken. ZEN21 firmware 4.1 (4.01)

UPDATE: Tried driver fork from @dsegall and it seems to be sort of working. Getting what looks like garbage in the logs when I hit configure but I can turn the light on/off with it.

Hi there I tried your driver and when I press off through the devices page on my hub page. I don't get that click when i press the button. I also get a fade in and out with my light. Any way you can look into this?

Are you saying that there is a difference between a physical tap on the switch vs digitally through the driver? I think you are saying when you press the switch you are hearing a 'click' but not with a digital change. Also you are seeing that the fade time is longer with a digital change (this is called the ramp rate). Please confirm I am understanding you correctly.

Here is a video that I took explaining the issue:

Yes there is a difference between a physical tap vs digitally.

Let me know how I can help.

I have seen this behaviour with the zen26 when the load is too small. In this case the voltage across the load still peaks at 40v and this screws up the switch from recognizing button presses. I haven’t seen this with my zen21s but I only have three of those - two controlling bathroom exhaust fans and one still sitting on my shelf.

Oh - can also occur with led bulbs that are non-dimmable. They don’t let enough current through to keep the switch happy when the led is off.