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

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.

I would try using the built in "Zooz Central Scene Switch" driver instead. See if that helps? If still having issues I would post your video in a new thread, you can @ me if you want. I am working on porting over a SmartThings driver right now for the ZEN27, and am doing the ZEN21 next so if its an issue with this custom driver I will fix it in my version.

I just tried the "Zooz Central Scene Switch" it didn't even work. Where would you like me to post the new thread on?

NVM @jtp10181 I tried to remove it and add it again and it seems to be ok. I will do more testing tomorrow. Thanks for your quick responses.

Did you ever determine the issue here? I'm having the same problem with Zen22s compared to Zen21. FW 4.1 for both.

No i have to admit that I never figured out any pattern. I ended up just logged in a spreadsheet per switch which button # was the 'lower' paddle to keep myself from going crazy.

Using Brian's drivers I also found ONE of my zen27s that was mapping the 1 as upper & 2 as the lower. This button reversal (compared to the majority of my switches) seemed to be the first first zooz products I purchased so I sort of attributed to it being changes with hardware versions.

BUT even though I said I was going to wait a few days before switching the drivers for anymore of my switches I have continued a little bit and all three on my zen21s are switched over and they are all behaving the same way - all three are reporting button 1 with the upper paddle press. I have also done two of my three zen27 and the one of those two was backwards and now it is not.

I just don't have any good explanation. It must have been user error :wink:

Sorry. I thought I was replying to a post on this thread. I am in process of switching drivers to these and your question popped in.

The ZEN22 Firmware 4.01 (reported as 4.1 on some drivers) has a known issue where Zooz decided to flip the scene numbers to something that makes more logical sense, not realizing it would break everyone's drivers, so on future versions it will revert back to how it was before. The driver that @steve.maddigan linked above has a fix in place for this and eventually I am going to make it a setting so the user can flip it. Right now it is hard coded in there based on switch model and firmware. You can also email Zooz and they should be able to send you a fixed firmware (or reverted version). I know for my ZEN27 they send me a patched version to try out.

1 Like

Really. Is that what Zooz did? Geesh.

My only issue with your statement is I had all the same FW on each series and using the same driver had inconsistent behaviour.

If you had all same firmware and they were not reporting the same then it was possibly some sort of parameter issue or maybe something really wonky in the driver. If it happens at all on my driver I can have you enable the command tracing and get some good info from the logs to see whats going on.

1 Like

Thank you sir but I am good.

3 x zen21
1 x zen22
12 x zen26
3 x Zen27

Two of my Zen22s got pulled out when I bought some inovelli red dimmers and haven’t found a new home yet.

All have BCs except for three of them and I haven’t noticed any issues. Easiest task I have tackled in a long time and honestly I wasn’t looking forward to it.

Did have a problem with one of my associations at first and I thought ‘oh damn’ but that’s what happens when you enter in the wrong hex code.

I am looking towards playing with your dimmer adjustment when the min value is set. Today I didn’t play. Just replicated what I had and added a few ‘held’ actions.

Download the Hubitat app