[BETA] Zooz ZAC36 Titan Water Valve Actuator (Driver)

Alright, I will fancy up this post another day.

NOTES About what we have thus far going on with the driver:
  • All parameters that Zooz listed out for me are supported. There are some really advanced parameters mostly relating to associations that I don't have in here (yet?)
  • Primarily testing using F, should in theory work in C but I did not heavily test. If you do change the units setting, the defaults are still all listed in F and the numbers will not convert for you, you will have to go through and adjust all the parameters to new values. Might be something I address later.
  • There is a parameter to adjust the reporting temp but I am not setting that at this time, but the driver should convert the report to whatever your hub default temp unit is (regardless of your setting for units on the driver itself).
  • Have not tested all the parameters, not sure if they all do exactly what the docs say they do...
  • By default the device reports ON (actuator enabled/ON) = Valve Closed, and OFF = Open. The 'valve' should always report open/closed correctly. The 'switch' attrib will be as I just described by default but there is a parameter to reverse it if you want. ***Currently the On/Off buttons map directly to the open/close commands, I need to fix this so they reverse accordingly to the parameter.
  • There are all sorts of fancy associations stuff you can do with the alarms, etc, not supported in the driver yet.

HOW TO FORCE RE-CALIBRATION
  • Tap button once to turn OFF the valve
  • Hold button for 5 beeps, then let go
  • Immediately do 5 separate taps (5 more beeps)
  • Device should enter calibration mode

I think I am going to just keep all Zooz drivers in this zooz folder where the switches are and just have a separate package for each set. Have not fully decided yet, takes some planning ahead. Once I figure that out I will add this one to HPM.

NOT RECOMENDED to enable the supervision encapsulation. I have not added code to handle the "Working" status that comes back while it is working on moving the valve, so it will report a failure every time.

Direct Copy/Paste/Import Link: https://raw.githubusercontent.com/jtp10181/Hubitat/main/Drivers/zooz/zooz-zac36-valve-actuator.groovy

Full Repo:

3 Likes

So going to drop this here in another post. What do you all think about the reversed on/off reporting? Should I keep it how I have it, or just force it to always report on=open and off=closed? Could also just default the parameter to the normal setting instead of reversed which might be less confusing at first installation.

My thinking with the way it is now, is the 'switch' value always matches what the valve is sending the hub, and also any potential associations. The 'valve' open/close will always be correct.

2 Likes

I will give this a try. Thank you for this!!

1 Like

Happy to report that your driver is working as expected. Switch is "off" while valve is on the "open" position. It fixed whatever issue I had yesterday. Is it possible to add a trigger to re-calibrate? Awesome work!

I was planning to ask that question to Zooz, I have not figured out how to do that yet either. It just gives me red angry flashes if I try to do again by holding the button for 2 beeps.

UPDATE: @carlkengseng I just added the recalibration instructions to my top post. Tested it myself, it is easier than it sounds (as long as you can count to 5 :wink: )

2 Likes

Thank you!! This will save me a lot time not to factory reset and pair again. They should add this to their troubleshooting section.

1 Like

Thanks for the driver! I have a quick question from reading through the driver source. Does "heatAlarmLow" correspond to the freeze alarm?

Yes it should be, although I have not tested it. In the zwave spec it is called "Underheat detected"

2 Likes

Jeff - thanks for this driver - it's awesome!

I finally got around to installing my Titan, and I put the 1.14 firmware on it (according to Zooz, that's still the latest). The full Parameter report (using Basic ZW Tool driver) was pretty crazy -- LOTS of unused (I think!) parameters in there!

But a couple mis-matches between original Zooz documention (based on 1.10?) and the 1.14 param report jumped out at me (and there are likely more)... As far as I can tell, original params 61 and 62 are now 97 and 98 respectively (those are the ones related to auto-test).

Man, I wish Zooz would do a better job keeping the change logs and parameter configuration documentation updated - it's so crazy-making trying to figure out what's current and accurate.

Ha, if we could combine Aeotec's transparency & currency with posting firmware and documentation with Zooz's attractive prices and nice products, we'd be on to something! :sunglasses:

Thanks again!

61 and 62 in HEX = 97 and 98 in decimal (base 10). For some strange reason somewhere Zooz decided to reference those two in hex, but every other parameter they reference in decimal numbers. So in my driver they are shown in decimal format along with all the others. I have a few emails going back and forth with them on that. So the driver should be setting the correct parameters.

I do have full docs on all the parameters they gave me to help make the driver but a lot of them are related to associations and other odd settings, complicated, and I felt was not really worth implementing. I should just add a generic command to set parameters so it is easy to change other ones if needed.

If there is another setting in the public docs you think would be useful I can always add it as well. The ones I put on here were just what I decided would be most useful to average users.

1 Like

Awesome - I should've had more faith that you were already totally on top of this!

I agree that this device seems to have more than usual odd-ball association tentacles and other head-scratchers, so I vote to keep your driver & docs more relatable to the average user. This thing is indeed strange under the hood on numerous levels.

Thanks for the background info - it's very helpful! I at least feel better to know I'm not the only one who said "WTF??" once I saw that parameter report!

Having a problem with this valve. Firmware 1.10. When the actuation is initiated to close the valve, it reports closed. Then once it is closed, it reports open again. I can see this in the device settings. Then when I click close from the device settings, it will report closed again until the valve is fully open when it reports open again. So it seems that while it is actuating, it reports closed and when it stops, it reports open again. This happens with the built-in driver and this custom driver.

Mine is on firmware 1.14, sometimes I end up with test versions though, and not sure what was changed. I wrote this driver on the original firmware, and I never saw this problem. What is your parameter 17 set to? "Inverse Switch Report". Also on this driver make sure Supervision is OFF, it was never fully implemented to handle the "working" status.

Also turn on debug logging on this driver and then post a screenshot of what you get in the logs.

1 Like

Parameter 17 is set to Enabled [default]

dev:6962022-06-26 05:34:00.093 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 05:34:00.070 pm infoTitan Valve Actuator ZAC36: valve set to open
dev:6962022-06-26 05:34:00.052 pm infoTitan Valve Actuator ZAC36: switch set to off
dev:6962022-06-26 05:33:51.104 pm infoTitan Valve Actuator ZAC36: valve set to closed
dev:6962022-06-26 05:33:51.068 pm infoTitan Valve Actuator ZAC36: switch set to on
dev:6962022-06-26 05:33:50.734 pm debugTitan Valve Actuator ZAC36: open...
dev:6962022-06-26 05:33:33.121 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 05:33:33.109 pm infoTitan Valve Actuator ZAC36: valve set to open
dev:6962022-06-26 05:33:33.083 pm infoTitan Valve Actuator ZAC36: switch set to off
dev:6962022-06-26 05:33:23.647 pm infoTitan Valve Actuator ZAC36: valve set to closed
dev:6962022-06-26 05:33:23.612 pm infoTitan Valve Actuator ZAC36: switch set to on
dev:6962022-06-26 05:33:23.254 pm debugTitan Valve Actuator ZAC36: close...

I tested mine and it does report twice, once when you initiate a change and again when its done. It reports closed initially for me both times, but when done it reports the correct status. Are you sure it is actually closing? Do you have it attached to the valve? Running it without being attached can give odd results. Have you tried to recalibrate it? Also with this driver, have you run the Configure after switching drivers?

It is attached to the valve and is opening and closing.

When I first set it up, I had to recalibrate it. Then for some reason, it began reporting in reverse or the open/close commands did the opposite action (honestly, I can’t remember exactly what was happening). This led me to manually reverse the open/close reporting by holding down the zwave button for 4 beeps then pressing 3 times (this instruction was from their website). Then the open/close commands did the expected actuation. I don’t know if the reporting was ever correct or not in Hubitat.

I’ve requested firmware 1.14 from Zooz.

This is what possibly messed up the reporting. You manually changed a parameter on the device but the driver does not know about that change. Have you run a configure using this driver? This would force all the settings back to what you have selected. Could probably do the same on the built in driver. I think that might fix it. If open/close commands are doing the opposite you may need to recalibrate it again, make sure you start in the OFF position before initiating the calibration.

Yes, I have done the manual configure several times:

dev:6962022-06-26 06:57:51.723 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 06:57:51.711 pm infoTitan Valve Actuator ZAC36: valve set to open
dev:6962022-06-26 06:57:51.689 pm infoTitan Valve Actuator ZAC36: switch set to off
dev:6962022-06-26 06:57:42.290 pm infoTitan Valve Actuator ZAC36: valve set to closed
dev:6962022-06-26 06:57:42.250 pm infoTitan Valve Actuator ZAC36: switch set to on
dev:6962022-06-26 06:57:41.896 pm debugTitan Valve Actuator ZAC36: close...
dev:6962022-06-26 06:57:37.443 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 06:57:37.429 pm infoTitan Valve Actuator ZAC36: valve set to open
dev:6962022-06-26 06:57:37.411 pm infoTitan Valve Actuator ZAC36: switch set to off
dev:6962022-06-26 06:57:28.508 pm infoTitan Valve Actuator ZAC36: valve set to closed
dev:6962022-06-26 06:57:28.475 pm infoTitan Valve Actuator ZAC36: switch set to on
dev:6962022-06-26 06:57:28.125 pm debugTitan Valve Actuator ZAC36: open...
dev:6962022-06-26 06:57:20.028 pm debugTitan Valve Actuator ZAC36: inverseReport (#17) = 1
dev:6962022-06-26 06:57:19.582 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 06:57:19.568 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 06:57:19.550 pm debugTitan Valve Actuator ZAC36: switch set to off [NOT CHANGED]
dev:6962022-06-26 06:57:19.174 pm debugTitan Valve Actuator ZAC36: testFrequency (#98) = 14
dev:6962022-06-26 06:57:18.372 pm debugTitan Valve Actuator ZAC36: testMode (#97) = 3
dev:6962022-06-26 06:57:17.571 pm debugTitan Valve Actuator ZAC36: keylockProtection (#67) = 0
dev:6962022-06-26 06:57:16.768 pm debugTitan Valve Actuator ZAC36: ledBrightness (#66) = 80
dev:6962022-06-26 06:57:15.964 pm debugTitan Valve Actuator ZAC36: soundAlarm (#65) = 1
dev:6962022-06-26 06:57:15.162 pm debugTitan Valve Actuator ZAC36: leakControl (#51) = 1
dev:6962022-06-26 06:57:14.366 pm debugTitan Valve Actuator ZAC36: freezeControl (#42) = 1
dev:6962022-06-26 06:57:13.560 pm debugTitan Valve Actuator ZAC36: freezeCancel (#41) = [1, 1] 1°F
dev:6962022-06-26 06:57:12.755 pm debugTitan Valve Actuator ZAC36: freezeAlarm (#40) = [1, 32] 32°F
dev:6962022-06-26 06:57:11.954 pm debugTitan Valve Actuator ZAC36: overheatCancel (#37) = [1, 86] 86°F
dev:6962022-06-26 06:57:11.152 pm debugTitan Valve Actuator ZAC36: overheatAlarm (#36) = [1, 104] 104°F
dev:6962022-06-26 06:57:10.354 pm debugTitan Valve Actuator ZAC36: tempOffset (#35) = [1, 0] 0°F
dev:6962022-06-26 06:57:09.561 pm debugTitan Valve Actuator ZAC36: tempThreshold (#34) = [1, 4] 4°F
dev:6962022-06-26 06:57:08.743 pm debugTitan Valve Actuator ZAC36: Group 5 Association: []
dev:6962022-06-26 06:57:08.341 pm debugTitan Valve Actuator ZAC36: Group 4 Association: []
dev:6962022-06-26 06:57:07.939 pm debugTitan Valve Actuator ZAC36: Group 3 Association: []
dev:6962022-06-26 06:57:07.538 pm debugTitan Valve Actuator ZAC36: Group 2 Association: []
dev:6962022-06-26 06:57:07.138 pm debugTitan Valve Actuator ZAC36: Lifeline Association: [1]
dev:6962022-06-26 06:57:06.314 pm debugTitan Valve Actuator ZAC36: Received Version Report - Model: ZAC36 | Firmware: 1.10
dev:6962022-06-26 06:57:06.236 pm warnClearing state variables and data...
dev:6962022-06-26 06:57:06.232 pm debugTitan Valve Actuator ZAC36: Changing inverseReport (#17) from 1 to 1
dev:6962022-06-26 06:57:06.203 pm debugTitan Valve Actuator ZAC36: Changing testFrequency (#98) from 14 to 14
dev:6962022-06-26 06:57:06.173 pm debugTitan Valve Actuator ZAC36: Changing testMode (#97) from 3 to 3
dev:6962022-06-26 06:57:06.143 pm debugTitan Valve Actuator ZAC36: Changing keylockProtection (#67) from 0 to 0
dev:6962022-06-26 06:57:06.111 pm debugTitan Valve Actuator ZAC36: Changing ledBrightness (#66) from 80 to 80
dev:6962022-06-26 06:57:06.079 pm debugTitan Valve Actuator ZAC36: Changing soundAlarm (#65) from 1 to 1
dev:6962022-06-26 06:57:06.046 pm debugTitan Valve Actuator ZAC36: Changing leakControl (#51) from 1 to 1
dev:6962022-06-26 06:57:06.014 pm debugTitan Valve Actuator ZAC36: Changing freezeControl (#42) from 1 to 1
dev:6962022-06-26 06:57:05.980 pm debugTitan Valve Actuator ZAC36: Changing freezeCancel (#41) from 1 to 1
dev:6962022-06-26 06:57:05.946 pm debugTitan Valve Actuator ZAC36: Changing freezeAlarm (#40) from 32 to 32
dev:6962022-06-26 06:57:05.912 pm debugTitan Valve Actuator ZAC36: Changing overheatCancel (#37) from 86 to 86
dev:6962022-06-26 06:57:05.876 pm debugTitan Valve Actuator ZAC36: Changing overheatAlarm (#36) from 104 to 104
dev:6962022-06-26 06:57:05.845 pm debugTitan Valve Actuator ZAC36: Changing tempOffset (#35) from 0 to 0
dev:6962022-06-26 06:57:05.795 pm debugTitan Valve Actuator ZAC36: Changing tempThreshold (#34) from 4 to 4
dev:6962022-06-26 06:57:05.737 pm debugTitan Valve Actuator ZAC36: executeConfigureCmds...
dev:6962022-06-26 06:57:03.768 pm debugTitan Valve Actuator ZAC36: water set to dry [NOT CHANGED]
dev:6962022-06-26 06:57:03.361 pm debugTitan Valve Actuator ZAC36: temperatureAlarm set to normal [NOT CHANGED]
dev:6962022-06-26 06:57:02.958 pm debugTitan Valve Actuator ZAC36: temperature set to 90.0F [NOT CHANGED]
dev:6962022-06-26 06:57:02.190 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-26 06:57:02.160 pm debugTitan Valve Actuator ZAC36: switch set to off [NOT CHANGED]
dev:6962022-06-26 06:57:01.756 pm debugTitan Valve Actuator ZAC36: Received Version Report - Model: ZAC36 | Firmware: 1.10
dev:6962022-06-26 06:56:59.671 pm debugTitan Valve Actuator ZAC36: Enabling Full Re-Sync
dev:6962022-06-26 06:56:59.246 pm warnconfigure...

My next thought is potentially excluding it, factory resetting it, recalibrating it, and including it again.

I was able to update the firmware to 1.14 using the C7. I did not have to exclude and reinclude. I just sent a "Configure" and it updated all the parameters. I think it's fixed!

dev:6962022-06-29 09:32:56.145 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-29 09:32:56.125 pm infoTitan Valve Actuator ZAC36: valve set to open
dev:6962022-06-29 09:32:56.108 pm infoTitan Valve Actuator ZAC36: switch set to off
dev:6962022-06-29 09:32:47.719 pm debugTitan Valve Actuator ZAC36: valve set to closed [NOT CHANGED]
dev:6962022-06-29 09:32:47.686 pm debugTitan Valve Actuator ZAC36: switch set to on [NOT CHANGED]
dev:6962022-06-29 09:32:47.325 pm debugTitan Valve Actuator ZAC36: open...
dev:6962022-06-29 09:32:38.554 pm debugTitan Valve Actuator ZAC36: valve set to closed [NOT CHANGED]
dev:6962022-06-29 09:32:38.546 pm debugTitan Valve Actuator ZAC36: valve set to closed [NOT CHANGED]
dev:6962022-06-29 09:32:38.520 pm debugTitan Valve Actuator ZAC36: switch set to on [NOT CHANGED]
dev:6962022-06-29 09:32:29.756 pm infoTitan Valve Actuator ZAC36: valve set to closed
dev:6962022-06-29 09:32:29.713 pm infoTitan Valve Actuator ZAC36: switch set to on
dev:6962022-06-29 09:32:29.336 pm debugTitan Valve Actuator ZAC36: close...
dev:6962022-06-29 09:32:09.505 pm debugTitan Valve Actuator ZAC36: inverseReport (#17) = 1
dev:6962022-06-29 09:32:09.104 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-29 09:32:09.088 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-29 09:32:09.069 pm debugTitan Valve Actuator ZAC36: switch set to off [NOT CHANGED]
dev:6962022-06-29 09:32:08.704 pm debugTitan Valve Actuator ZAC36: testFrequency (#98) = 14
dev:6962022-06-29 09:32:07.900 pm debugTitan Valve Actuator ZAC36: testMode (#97) = 3
dev:6962022-06-29 09:32:07.097 pm debugTitan Valve Actuator ZAC36: keylockProtection (#67) = 0
dev:6962022-06-29 09:32:06.296 pm debugTitan Valve Actuator ZAC36: ledBrightness (#66) = 80
dev:6962022-06-29 09:32:05.494 pm debugTitan Valve Actuator ZAC36: soundAlarm (#65) = 1
dev:6962022-06-29 09:32:04.693 pm debugTitan Valve Actuator ZAC36: leakControl (#51) = 1
dev:6962022-06-29 09:32:03.890 pm debugTitan Valve Actuator ZAC36: freezeControl (#42) = 1
dev:6962022-06-29 09:32:03.092 pm debugTitan Valve Actuator ZAC36: freezeCancel (#41) = [1, 36] 36°F
dev:6962022-06-29 09:32:02.289 pm debugTitan Valve Actuator ZAC36: freezeAlarm (#40) = [1, 32] 32°F
dev:6962022-06-29 09:32:01.484 pm debugTitan Valve Actuator ZAC36: overheatCancel (#37) = [1, 86] 86°F
dev:6962022-06-29 09:32:00.682 pm debugTitan Valve Actuator ZAC36: overheatAlarm (#36) = [1, 104] 104°F
dev:6962022-06-29 09:31:59.879 pm debugTitan Valve Actuator ZAC36: tempOffset (#35) = [1, 0] 0°F
dev:6962022-06-29 09:31:59.079 pm debugTitan Valve Actuator ZAC36: tempThreshold (#34) = [1, 4] 4°F
dev:6962022-06-29 09:31:58.277 pm debugTitan Valve Actuator ZAC36: Group 5 Association: []
dev:6962022-06-29 09:31:57.871 pm debugTitan Valve Actuator ZAC36: Group 4 Association: []
dev:6962022-06-29 09:31:57.472 pm debugTitan Valve Actuator ZAC36: Group 3 Association: []
dev:6962022-06-29 09:31:57.070 pm debugTitan Valve Actuator ZAC36: Group 2 Association: []
dev:6962022-06-29 09:31:56.667 pm debugTitan Valve Actuator ZAC36: Lifeline Association: [1]
dev:6962022-06-29 09:31:55.839 pm debugTitan Valve Actuator ZAC36: Received Version Report - Model: ZAC36 | Firmware: 1.14
dev:6962022-06-29 09:31:55.744 pm warnClearing state variables and data...
dev:6962022-06-29 09:31:55.732 pm debugTitan Valve Actuator ZAC36: Changing inverseReport (#17) from 1 to 1
dev:6962022-06-29 09:31:55.701 pm debugTitan Valve Actuator ZAC36: Changing testFrequency (#98) from 14 to 14
dev:6962022-06-29 09:31:55.670 pm debugTitan Valve Actuator ZAC36: Changing testMode (#97) from 3 to 3
dev:6962022-06-29 09:31:55.639 pm debugTitan Valve Actuator ZAC36: Changing keylockProtection (#67) from 0 to 0
dev:6962022-06-29 09:31:55.607 pm debugTitan Valve Actuator ZAC36: Changing ledBrightness (#66) from 80 to 80
dev:6962022-06-29 09:31:55.574 pm debugTitan Valve Actuator ZAC36: Changing soundAlarm (#65) from 1 to 1
dev:6962022-06-29 09:31:55.538 pm debugTitan Valve Actuator ZAC36: Changing leakControl (#51) from 1 to 1
dev:6962022-06-29 09:31:55.506 pm debugTitan Valve Actuator ZAC36: Changing freezeControl (#42) from 1 to 1
dev:6962022-06-29 09:31:55.473 pm debugTitan Valve Actuator ZAC36: Changing freezeCancel (#41) from 36 to 36
dev:6962022-06-29 09:31:55.442 pm debugTitan Valve Actuator ZAC36: Changing freezeAlarm (#40) from 32 to 32
dev:6962022-06-29 09:31:55.410 pm debugTitan Valve Actuator ZAC36: Changing overheatCancel (#37) from 86 to 86
dev:6962022-06-29 09:31:55.376 pm debugTitan Valve Actuator ZAC36: Changing overheatAlarm (#36) from 104 to 104
dev:6962022-06-29 09:31:55.344 pm debugTitan Valve Actuator ZAC36: Changing tempOffset (#35) from 0 to 0
dev:6962022-06-29 09:31:55.307 pm debugTitan Valve Actuator ZAC36: Changing tempThreshold (#34) from 4 to 4
dev:6962022-06-29 09:31:55.238 pm debugTitan Valve Actuator ZAC36: executeConfigureCmds...
dev:6962022-06-29 09:31:53.218 pm debugTitan Valve Actuator ZAC36: water set to dry [NOT CHANGED]
dev:6962022-06-29 09:31:52.895 pm debugTitan Valve Actuator ZAC36: temperatureAlarm set to normal [NOT CHANGED]
dev:6962022-06-29 09:31:52.418 pm debugTitan Valve Actuator ZAC36: temperature set to 88.0F [NOT CHANGED]
dev:6962022-06-29 09:31:51.649 pm debugTitan Valve Actuator ZAC36: valve set to open [NOT CHANGED]
dev:6962022-06-29 09:31:51.609 pm debugTitan Valve Actuator ZAC36: switch set to off [NOT CHANGED]
dev:6962022-06-29 09:31:51.211 pm debugTitan Valve Actuator ZAC36: Received Version Report - Model: ZAC36 | Firmware: 1.14
dev:6962022-06-29 09:31:49.116 pm debugTitan Valve Actuator ZAC36: Enabling Full Re-Sync
dev:6962022-06-29 09:31:48.624 pm warnconfigure...

Download the Hubitat app