Local Garage Door Control with ratgdo
When we moved into this house, the garage was a pain point. The doors weren’t in Apple Home or Alexa.
I used myQ before. Then MyQ cut off integrations, so that was the end of that. Chamberlain (which also makes LiftMaster) blocked third-party access in late 2023, and Home Assistant removed its myQ integration in 2023.12.
I looked at two options to replace it, Meross and ratgdo. I went with ratgdo. Meross would probably work too. If you want to look at that route, here are the Meross garage door openers on Amazon.
ratgdo is a small Wi-Fi board that wires to the same opener terminals your wall button uses. It speaks the opener’s protocol, so it can control the door and report its actual state, all on your local network. You can flash it with ESPHome (for Home Assistant), HomeKit, or MQTT firmware. It supports Chamberlain/LiftMaster Security+ 2.0 openers (usually a yellow learn button) and Security+ 1.0 (experimental). Other brands work over dry contact, which needs extra limit switches to know the door position.
I bought the board from the official ratgdo store.
Install
The install meant getting up on a ladder at the opener. The general flow is below, but follow the current instructions for your exact board.
- Check your opener. Find the learn button color and model and confirm it’s on the compatibility list.
- Install the firmware. The ratgdo ESPHome web installer has you pick your opener protocol and board version, then flashes over USB from a browser that supports Web Serial, like Chrome. Newer ratgdo32 boards can also be set up wirelessly.
- Unplug the opener, then wire it. For Security+ openers in North America, the red, white, and black wires go to the matching terminals. European openers use different terminals, so check the wiring guide.
- Power the board with a USB power supply.
- In Home Assistant, it shows up under Settings > Devices & services as a discovered ESPHome device. Click Add. You get a garage door entity, plus things like the opener light and obstruction status depending on your opener.
Automations
I have two automations on it. In the mornings, the single garage door opens partway for the dog. And whenever the garage closes, I get a snapshot of where the dog sleeps.
The dog camera has an AI setup behind it. It’s really cool, but it’s too much to explain here, so it’ll get its own post.
If you want to build something similar in Home Assistant, here is an example for the partial open. It isn’t a copy of my setup, and your entity names will be different.
For the partial open, the ESPHome firmware can move the door to a position. Calibrate it first by opening and closing the door once without stopping, then use set position:
# EXAMPLE: open the single door partway in the morning,
# then close it again after 30 minutes
alias: "Garage: morning dog door"
triggers:
- trigger: time
at: "06:30:00"
conditions:
- condition: state
entity_id: cover.single_garage_door
state: closed
actions:
- action: cover.set_cover_position
target:
entity_id: cover.single_garage_door
data:
position: 15 # percent open
- delay: "00:30:00"
- action: cover.close_cover
target:
entity_id: cover.single_garage_door
- action: notify.mobile_app_your_phone
data:
message: "Closing the single garage door after the morning dog break."
mode: single
Safety
A partly open garage door is an unlocked door, so pair a partial open with a timer that closes it again. Don’t bypass or disable the opener’s safety sensors, and only let the door close on its own when they’re working and you get a notification. If you can open the door from your phone, so can anyone who gets into your Home Assistant account, so use a strong password and two-factor authentication.