[RELEASE] Zooz Garage Door Opener

I've got a hardwired contact sensor that I connected directly to the inputs of the MultiRelay. In order to use that as the contact sensor for the garage door opener, I had to make a Rule that mirrored the status of those inputs to a Virtual Contact Sensor. Which works, but seems unnecessarily kludgy.

Is there a simpler way to do this that I'm missing?

That shouldn't be necessary... I use 2 hard-wired dumb reed sensors (1 full-open and 1 full-closed) with my GDO's Zen17 -- within this Zooz app here, I'm able to select either reed sensor as the app's designated "Open/Close Sensor" (I use the full-closed one). It's been working like a champ for many years.

Is your hardwired sensor designated as a Contact Sensor within the MultiRelay's setup, or is it coded as a switch or some other device type? If it's not designated as a contact sensor, that may be the issue.

What model and firmware relay do you have?
What driver are you using? (built in system driver may not support all features)
What is wired to what connections on the relay?
What are all your input type and input control settings set to (show screenshot)?

If the device is one of a newer models and configured correctly, you can get away from using a virtual contact. May be more complicated to configure, but simpler once it is setup.

Device type 40960, firmware 1.3. That's what "Device Info" says. I haven't felt motivated to climb up and look at the device itself.

I think the app I'm using is the one Zooz wrote.

I'm not sure what screenshot you want. Here is the Preferences tab from the Device.


The opener is Relay 1. The contact sensor is connected to Relay 2. Relay 2 only has an option of being a Garage Door or Switch.

Relay 2 isn't an option to choose for the OpenClose sensor in the app.

40960 is the ZEN16, and you have v1 unit which was before they added the ability to separate the input from the output, and also adding the various extra input types.

So your solution of using a virtual contact sensor mirroring the on/off state of the R2 is probably the best way to do it for your model ZEN16

I’ve been using this app with a Zooz relay and an Ecolink tilt sensor since 2020. My first Ecolink sensor died in 2023 after about three years of use — the tilt mechanism (which uses a small ball bearing) jammed, though the radio still worked fine. So I replaced it in 2023 with a newer Ecolink model that supposedly uses an electronic tilt sensor instead of a mechanical one.

Now, after about two years, I’m running into another issue. The sensor keeps getting stuck showing either “Opening Garage” or “Closing Garage” in Apple HomeKit. When I check the tilt sensor’s state in HomeKit, it always reports as “Closed” and never changes to “Open,” so I suspect the tilt sensor itself has failed again.

Before I order another replacement, is there a way to troubleshoot this to confirm it’s not a software-related issue? I’d like to verify the sensor is really dead before replacing it.

If its the newer ecolink model with the mercury switch then I don't know how it could get physically stuck. Almost sounds like a zwave mesh / comms problem.

Mercury switch?

I brought the TILTZWAVE5.0 model in 2023 as a replacement and I thought the newer sensor use the accelerometer now.

Maybe its an accelerometer then, I forget which. Either way it should not be possibly for it to be "stuck", there is nothing mechanical.

I just remembered that my iPhone recently updated to iOS 26, so that might be why the tilt sensor is not registering correctly.

I am at work right now, but when I get home I plan to check if the tilt is still being detected by Hubitat. If it is, then the problem may be related to the iOS update. If not, that would confirm the sensor has failed again.

I already contacted Ecolink, and they told me the warranty only covers one year. Mine is two years old now. I also explained that this is my second sensor, and I am not sure if I want to purchase a third one if they only last a couple of years. I had previously bought a mercury switch to replace the ball in the original model but never got around to installing it. I may dust off my soldering station and try that fix instead. I just preferred using a non-mechanical design, which is why I gave up on that project before.

I already replied to support and am waiting to hear what they think about my concern with having to replace another sensor within only two years if the tilt has truly stopped working.

I doubt iOS 26 is the issue. Just because the state does not update it does not mean the sensor has failed. As I said earlier, it could be a zwave transmission problem. Could be the battery is getting weak (do not trust the reported %).

You can take the sensor off the door and try manually tiling it a few times in the garage. See if you can reproduce the issue. Then I would bring it in near the hub and try it again a bunch of times and see if its any better or the same results.

FWIW I still have my original Eco Link 2.5 with the ball switch from 2020. My garage is unheated so it gets below freezing temps in the winter. I think still with the original battery, or maybe I did change it once, still works 100% reliably.

I opened and waited then closed the garage .. I am seeing error in the log

the sensor shows closed in hubitat but in log it showing open?

dev:2292025-10-20 09:18:20.230 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:18:20.215 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:18:20.206 PM

debug

Garage Door - door is closed

dev:2292025-10-20 09:18:17.183 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:18:17.171 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:18:17.163 PM

debug

Garage Door - door is closed

dev:2292025-10-20 09:17:49.721 PM

error

com.hubitat.app.exception.LimitExceededException: Device 229 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:17:49.707 PM

debug

Garage Door - door is closing

dev:2292025-10-20 09:17:49.689 PM

debug

close()...

dev:2292025-10-20 09:17:40.009 PM

error

com.hubitat.app.exception.LimitExceededException: Device 229 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:17:39.992 PM

error

com.hubitat.app.exception.LimitExceededException: Device 229 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:17:39.979 PM

debug

Garage Door - door is open

dev:2292025-10-20 09:17:39.963 PM

debug

refresh()...

dev:2292025-10-20 09:16:02.144 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:16:02.130 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:16:02.120 PM

debug

Garage Door - door is open

dev:2292025-10-20 09:15:55.548 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:15:55.535 PM

error

com.hubitat.app.exception.LimitExceededException: App 144 generates excessive hub load on line 84 (method parse)

dev:2292025-10-20 09:15:55.526 PM

debug

Garage Door - door is open

dev:2292025-10-20 09:15:39.850 PM

debug

Garage Door - door is opening

dev:2292025-10-20 09:15:39.825 PM

debug

open()...

I haven't rebooted hub like in months. Cant even remember when was last time so I went ahead and update the hub firmware and rebooted it ..

Strangely, that fixed my issue so far .. now it reporting event correctly

dev:2292025-10-20 09:44:20.461 PM

debug

Garage Door - door is closed

dev:2292025-10-20 09:44:07.730 PM

debug

Garage Door - door is closing

dev:2292025-10-20 09:44:07.713 PM

debug

close()...

dev:2292025-10-20 09:43:24.153 PM

debug

open()...

dev:2292025-10-20 09:43:13.731 PM

debug

Garage Door - door is open

dev:2292025-10-20 09:42:53.478 PM

debug

Garage Door - door is closing

dev:2292025-10-20 09:42:53.384 PM

debug

close()...

Hub got into a bad state, happens sometimes. Those excessive hub load errors in the logs usually are cleared up by a reboot. If they come back shortly after then there is a real problem.

I've also recently gotten fed up with my unreliable Samsung door tilt sensor and am considering using a dry reed contact feeding into the ZEN17 as an input on the second relay pair. Problem is I don't see that input showing up as an available trigger sensor in the app; anyone else ever done this?

I use 2 reed sensors with my GDO Z17 (1 full-open, 1 full-closed), and I just use the full-closed one with the Zooz GDO app -- that has worked great for many years now (using numerous variants of Z16 and Z17 over that period).

Is the "S" contact-sensor child device showing up OK for your Z17? Setting that up requires an exclude/re-include of the Z17.

Hey thanks for the reply! No, the child devices I see on the Z17 are both switch relays. Happy to experiment but am not sure what I'd need to do to convert it. I see that I can change the mode for each relay's input in the driver (and one of the modes is dry-contact) but I assumed it wouldn't be as simple as that.

The reed sensor need to be a "Contact Sensor" child-device on whichever "S" slot you want to use.

If you have an 800LR Z17, changing that corresponding "S" parameter to Contact Sensor will require an exclude/re-include in order to get it to show properly as a contact sensor (child) device.

Ahh, OK. So the process here would be to:

  • Break the garage door app apart
  • Upgrade the Z17 firmware (mine is quite old so might as well)
  • Set S2 to Contact Sensor (since S1 is the momentary switch)
  • Exclude and reinclude the Z17
  • Reconfigure the Garage Door app to point at the button and sensor that I should now see

Sound more or less right?

If yours isn't a 800LR model, then the exclude/re-include may not be necessary -- I'd try not doing it first anyway.

My (equivalent of the) wall-button wires have always been wired into one of the "R" slots (not S), so if using S for that is possible to do, I don't have any first-hand experience with it.