Garage Opener

Questions

The things people actually run into, in roughly the order they run into them.

What hardware do I need?

A UniFi Protect console (tested on Protect 7.2.x), a relay with one output configured as Pulse and wired across your opener's push-button terminals, and a Protect all-in-one sensor mounted on the door with its mount type set to Garage. The sensor is not optional: it is the thing that makes every command verified rather than hopeful.

Why does my relay stay on instead of pulsing?

On Protect 7.2.x the relay's activate call toggles the output rather than pulsing it, whatever the pulse duration says. So the app and the bridge emulate a press: switch on, wait about 800 ms, switch off. That is what the emulated pulse mode means, and it is the default because it is what the hardware actually does.

If your relay genuinely pulses on its own, switch the mode to native and the console's own pulse duration takes over: Button press → Single activate in the app when it connects straight to your console, or RELAY_PULSE_MODE=native on a bridge.

Do I need the bridge?

No. There are two ways to connect, and both give you open and close verified by the sensor, the Watch, widgets, Siri and Shortcuts, alerts when the door is left open, and access away from home over a VPN.

Straight to the console is the fastest start: nothing to install, but every device needs its own Protect API key, there is no activity log, and alerts come from the optional cloud service. The bridge needs an always-on machine with Docker (a NAS, a Raspberry Pi, a VPS) that can reach your console. In exchange, family members join by QR code without ever holding your key, you get an activity log by name, the alert rules run on your own hardware, and Shortcuts work reliably in the background.

The comparison on the home page sets the two side by side: what each needs, what you gain and what you give up.

Is it free?

Free to download, with 20 opens included. After that, a one-time purchase in the app, Garage Opener Unlimited (US$4.99, or the equivalent in your country's App Store), removes the limit for good. There is no subscription, and the purchase can be shared through Family Sharing.

Only opening counts. Close and Stop always work, allowance used up or not, because the app must never be the reason a garage is left open. The door state, the camera picture, alerts and family invites are never limited either, and Demo mode is unlimited. With two doors, the 20 opens are shared between them.

If you bought the app before it became free, you are unlocked automatically and there is nothing to do. The bridge and the cloud-alerts service cost nothing.

Do I need Home Assistant?

No, and there is no integration with it. This talks to Protect's own API directly.

The app can't find my bridge.

Discovery uses Bonjour, and multicast does not cross Docker's bridge network. The reference compose runs the container with network_mode: host for that reason. If you cannot, for instance on Docker Desktop for macOS or Windows, publish 8787:8787 instead, set BONJOUR=false and PUBLIC_URL=http://<host>:8787, and type the address on the connection screen. Everything except discovery works identically. Bonjour also stops at a VLAN boundary unless your gateway reflects mDNS, so a phone on a different VLAN from the bridge needs the address typed too.

The bridge listens on port 8787, so the address is http://<host>:8787 using the LAN address of whatever machine runs the container. Include the port: without it the app tries port 80 and gets nothing. Check too that your phone is on the same network segment and that client isolation is off on that Wi-Fi network.

Does it work when I'm away from home?

Yes, on both ways of connecting, over a VPN back to your house: WireGuard on the UDM, or Tailscale. That is the recommended route because nothing is exposed; the phone simply behaves as if it were at home. If you run a bridge, a Cloudflare Tunnel or your own reverse proxy with a certificate also works.

Port forwarding is not recommended and is deliberately not documented: it puts a device that opens your garage on the public internet behind a single token.

How do other people in my household get access?

With a bridge: from the Family screen you create a one-time invite; the other phone scans or pastes it and joins. They never see your admin token or your Protect key. You can see everyone who has joined, rename them, and revoke any of them, and the activity log records who did what by name.

Without a bridge there are no invites. Each person enters a Protect API key on their own device, ideally a key of their own, and removing someone means deleting that key in Protect. That is the main reason to run the bridge in a household.

Access lives on the bridge, not on your phone. Forget this setup in the app only clears that one phone: everyone you invited keeps opening the door until you revoke them from the Family screen, which you can still do after entering your admin token again. If the admin token itself may have leaked, or a phone that held it is gone, change BRIDGE_TOKENS on the bridge and restart it: the old token stops working immediately, invited members are unaffected, and you enter the new token on your own phone.

I have two garage doors. Can it handle both?

Yes, from version 1.1 of the app: both doors on one phone, and a default door for each person. Each door needs its own relay output (a relay has two, or you can use two relays) and its own all-in-one sensor mounted on that door. The sensor is what confirms every command, so a door without one cannot be set up.

With a bridge, one bridge drives both doors. It needs bridge 0.6 or later, and the second door is added in the bridge's configuration; the self-hosting guide lists the settings. Connected straight to the console, you map both doors in the app. Either way, the default door is the one the Watch, widgets and Siri act on unless you say otherwise, and the other door is on the same screen, just below it.

One caveat, stated plainly: we have a single door ourselves. The second relay output has been tested against the simulator, not against a second real door. If you run two, we would like to hear how it goes.

Can I see the garage in the app?

Yes, from version 1.1. The door screen shows a picture from the camera mapped to that door, the one inside the garage, so you can check that nothing is in the way before moving the door and that it really closed afterwards. Two doors can share one camera.

These are snapshots, refreshed every few seconds and faster while the door is moving. It is not live video. With a bridge (0.6 or later), the bridge fetches the picture and passes it on, so family phones never hold your Protect key. Connected straight to the console, the phone asks the console itself. The picture is never sent to the cloud-alerts service.

If the camera is offline or unreachable, you see the last picture together with its time, so an old image is never passed off as current. If no camera is mapped to the door, the picture is simply not shown and everything else works as before.

What do cloud alerts do if I don't have a bridge?

Your console posts door events to a private webhook URL, and the service pushes a notification back when the door has been open too long, is still open at your nightly check time, or a car is in the garage with the door up.

It never holds a credential to your console, so it cannot open or close anything. “Close now” on a notification is carried out by the app, over your own connection. It stores only the event type, device id and timestamp, for seven days.

How secret is my cloud-alerts webhook address?

Treat it like a password. The long random part of https://alerts.garageopener.app/w/<token> is what identifies your install, so anyone holding it could post fake door events to you — the one worth caring about is a fake "closed" for a door that is actually open, which would stop the alert you wanted.

It cannot be used to read anything, change your settings, or delete your data. All of those need a separate secret that lives in your phone's Keychain and is never part of a web address.

Because it sits in the address rather than in a hidden header, it is recorded in ordinary web server logs along the way. That is forced rather than chosen: UniFi Protect's Alarm Manager only lets you enter a URL, so there is nowhere else to put it. So: don't paste the full address into a forum post, a screenshot or a support ticket. If you ever think it has been seen, turn cloud alerts off and on again — that issues a new address, and you re-paste it into your two Alarm Manager rules.

Is there an Apple Watch app? Widgets? Siri?

Yes to all three, plus Control Center, the Action Button, Lock Screen widgets and a Live Activity while the door is open with a Close button on it. Shortcuts actions are included, so you can build your own automations.

Can I try it without the hardware?

Yes. Demo mode drives a simulated door, with travel time, a sensor and the alert rules, and no console and no credentials. It is the same mode App Review uses to test the app.

Will it open my door by itself?

No. Arriving home sends you a notification with an Open button; you still tap it. The only automatic action is the optional nightly auto-close, which is off by default and which you have to turn on deliberately.

What happens if I stop the door half-way?

The app remembers which way it was travelling, because the sensor cannot tell a door stopped part-way from one standing fully open, since it reports the same contact for both. So the next press goes the direction you expect rather than the direction a naive reading would suggest.

Is there an Android app?

Yes. Garage Opener is on Google Play for Android 9 and later, and its Wear OS app needs Wear OS 3 or later. It is written for Android rather than adapted from the iPhone app, and it uses the same bridge, the same direct connection to your console and the same cloud-alerts service, so there is nothing to change on your side.

What carries over: open and close verified by the sensor, the camera picture, two doors, family invites, alerts with Close now on the notification, the arrival notification, and Demo mode. Android's own features take the place of Apple's: home-screen widgets, Quick Settings tiles for Open, Close and Stop, app shortcuts for each door, a notification that stays up while the door is open, and a Wear OS app with a tile and complications.

Some things differ, because the platforms do. There are no lock-screen widgets and no voice phrases like Siri's. The arrival notification needs location access set to Allow all the time. And Garage Opener Unlimited cannot be shared with family, because Google Play does not share in-app purchases, so each person buys their own; a purchase made on the App Store does not carry over to Google Play either. The price and the 20 free opens are the same.

Not here? Support explains what to send so it can be answered in one exchange.

Last updated: