[DRIVER] Zooz ZEN Switches Advanced (and Dimmers)

Zooz ZEN Switch & Dimmer drivers with the goal of exposing all advanced features and settings.

Originally started as a ported driver from ST and now has transformed into much of my own code. Proper credit and links to original ST driver(s) are in the source code.

If you are using this driver PLEASE like :heart: this post
:handshake: Support my work by using the Info & Purchase affiliate links below to buy!

Current Driver Version: 2.0.2 (12/10/2023)

:white_check_mark: Officially Supported Models:

:ballot_box_with_check: Features List:

  • Supports all security modes including S2
  • All configuration variables available with designated defaults per Zooz
  • All Association Groups are available - check Zooz docs for specifics
  • Scene Functions matching Zooz docs (10 unique actions) - MUST Enable Scene Control parameter on some models
  • Brightness Correction - allows you to set min/max brightness but it will display as 1-100% on your dashboard! See this Post: Check HERE for Details
  • Full Supervision Support (experimental) - for outbound set/remove commands Check HERE for Details
  • Set Level duration up to 127 minutes for 7x models for smooth transitions Check HERE for Details

:lady_beetle: Reporting Issues :beetle:
Please use GitHub to report any issues so each one can have its own conversation and tracking. Please provide as much info as you can including model, firmware and the "configVals" data string. Issues · jtp10181/Hubitat · GitHub

Must PRESS CONFIGURE BUTTON and check all your settings after changing to this driver.

:eight_spoked_asterisk: Find on Hubitat Package Manager (HPM):
Package Name: :small_blue_diamond: Zooz Switches Advanced Drivers :small_blue_diamond:
HPM Install Docs: HPM Documentation

:eight_spoked_asterisk: OR Manual Download from GitHub
Direct Import URL: [zooz-zen-switch] [zooz-zen-dimmer]
[zooz-zen30-double-switch] [child-central-scene-switch]
Full Repository Link: https://github.com/jtp10181/Hubitat/tree/main/Drivers/zooz/

:beer: :coffee: Donations: ---->>>> PayPal.Me <<<<---- :money_with_wings: Never required, always appreciated!
:handshake: Support me by purchasing at TheSmartestHouse.com through my affiliate link!

Button Mappings Infographic
zooz-s2-dimmer-800-series-zen77-800LR_2048x zooz-s2-double-switch-zen30-packaging-view_2048x


Will you be adding this to Hubitat Package Manager? Super-excited to try an up-to-date driver for all my Zen27s. Thanks for posting this work @jtp10181!

Yes as soon as I figure out how! I just was excited to finally be happy with this to post it. Now I will see about the package manager later, and also my next will be the ZEN21 since I have a couple of those. I don't have any of the other switches but I should be able to use this as a base and figure the others out. If anyone has requests for other Zooz switch models let me know so I can prioritize.

1 Like



Zen26, please! This should be simpler, since it's not a dimmer. Once you have Zen26/27, I'm assuming those will likely be easily converted to the Zen23/24 models, which I think are only cosmetically different (toggle switch design vs the paddle used for the 26/27s).

1 Like

Doesn't seem to register button 1 or button 2 events for me in smart bulb mode...

Buttons 1 and 2 are the same as on/off. If you want it actually trigger the 1/2 button pushes the "Scene Control" needs to be enabled. Otherwise it only will send the on/off events.

You should be able to make a rule like this without the scene control

Hi. Just curious why you decided not to implement parameter 7.

Why I ask is I am now using @bcopeland drivers and i do have two different associations set up (on two pairs of zen26’s, not zen27s) but I limit the association to paddle press only.

In my case this was the only way to get the second zen26 to turn on 100% of the time with the first being pressed. If I use a button controller to turn on the second it operated 75% at best. The other 25% it would flash on and then go back off.

Hi. Just curious why you decided not to implement parameter 7.

It was not in the original ST driver and it has a mile long list of options, I just didn't know if it was worth adding. I was thinking about just maybe adding it with just the setting numbers in the dropdown with a note to see the Zooz docs for starters. I will try and add it later today for you. I know the bcopeland driver had multiple associations boxes also, do you use those also or does just the one work? I am new to ZWave so I am not totally sure how all that works yet.

Wow. Thanks for the reply. I first tried associations about two months ago so I am brand new to that topic. There are multiple association groups which I will not pretend to understand. I am using the simplest association and had to enter the DNI of the other switch under Group Two Association.
I will have to do more reading of the Zooz doc to understand more about it.

Again, I am only using this on my zen26s. Sorry to hijack your Zen27 driver thread. For instance this switch I have listed the device 3C as the association device but it doesn’t not show up under the settings.

Just an update, I am trying to work out a combo ZEN21/26 driver right now, they are nearly identical except for a few of the parameters. I have a ZEN21 to test on. Also added in Parameter 7 and also will be coming to ZEN27. I plan on using this one post for all the Zooz switches, will all be one "package" in the Package Manager once my repo gets merged in (would be already if I didn't mess up my pull request).

1 Like

Just to throw it out there. Is the Zen22 similar to the Zen27 from a driver perspective?

I have all four types and using Brian’s drivers for all of them.

Going to work on the ZEN22 now, if it is similar to the 27 should have it posted tonight or tomorrow AM.

UPDATES: Updated ZEN27, added ZEN21 and ZEN26. Because Zooz had the version starting with the current hardware version I decided to just reset them all back to a base of 1.0.0 and start clean, so now they will all be in sync and are at 1.1.0. If you had ZEN27 installed already you might have to run a "Repair" in the package manager to force the current version, should not be an issue going forward. ZEN26 is untested as I don't have one, let me know if any issues. It is nearly identical to the ZEN21 which I did test so I suspect it will work fine.

@steve.maddigan Added ZEN22 just now, if you run an update on package manager it should pick it up, it did for me anyway.

1 Like

UPDATE for all drivers:
Added Group 3 Associations
Added support for ZEN23 and ZEN24

I installed these, and I noticed that the Zen27 driver corrects for a firmware bug in version 3.01. The problem is that this bug exists in all versions after 3.01 as well, so line 649 should be:

if (Float.parseFloat(device.getDataValue("firmwareVersion")) >= 3.01) {

The same change should be made to line 628 of the Zen22 driver.

They have their original switches one major version ahead of the S2 switches, so on the ZEN22 it probably only effects 4.01. I dont have one of those to test on. They sent me a pre-release 3.03 for the Zen27 and I confirmed that it is switched back (fixed). You should be able to just copy that code into the ZEN22 for now and change the version number check. I will add it on my next version.

I've been back and forth with them on this topic for a while. I've played around with various firmwares that either do or do not fix it on different hardware (I have Zen21, 22, and 27 in various locations).

They told me that they are not sure which way they are going to go in the future because they are afraid of breaking existing integrations that rely on the buggy behavior, but they plan to add a config parameter to the firmware in the February release to tell the switch which scene number to send for each paddle.

Posted version 1.3.0, changelog in first post.

A little extra info on the new Brightness Correction setting (defaults to off, enable the setting to try it). The LED bulbs I have the useable dimming range is between about 20-70%, anything below is off and above is full bright (to my eyes). It was annoying me that when maxed out to my max setting it would show 70% on the dashboard. So I worked out a little formula to convert back and forth between the set level and the displayed level. If you enable to the new setting and have a min/max set it will do the conversion automatically. Example, min=20 and max=60: normally if you set 50%, the dimmer gets set to 50%, which is very close to the max, so probably almost fully bright. With this new setting the formula converts your setting of 50%, and actually sets the dimmer to 40% which is halfway between the min and max.

//This converts what the user selected into a physical level within the min/max range
level_dimmer = ((brightmax - brightmin) * (level_displayed/100)) + brightmin

//This takes the true physical level and converts to what we want to show to the user
level_displayed = ((level_dimmer - brightmin) / (brightmax - brightmin)) * 100

You can check the event logs to see the displayed level vs the actual level being set


Hey Jeff, thanks a lot for building and sharing this! I installed it yesterday for 2 ZEN21 and 2 ZEN22 switches and it solved a lot of problems for me. I'd love to help out and cover your cost for a ZEN30 double switch if you're interested in adding that to the library, do you have donations set up anywhere?

1 Like

Great to hear it helped solve some issues, I love coding and I love sharing my work.

I was actually thinking about possibly getting a ZEN30, I just got done installing my first round of stuff and I have to plan out my next batch and what I can afford. Started out with 7 switches which covered almost the whole first floor.

I see the same person who I ported the drivers from for these other switches also has the ZEN30 and lots of other Zooz stuff in another folder on his GitHub. So I should be able to port that over and merge in all my changes as well.

Here is a PayPal link if desired: http://paypal.me/JPage81

Are there any plans to implement driver support for the Zooz Zen25?

1 Like