For about eight years my garage door was the most reliable smart thing in my house, right up until the morning it wasn’t. Chamberlain, the company that makes LiftMaster, Craftsman, and the myQ app, decided in late 2023 that third-party apps were no longer welcome on their API. They did not just deprecate it. They actively started blocking the requests. Home Assistant pulled its myQ integration and posted a blunt recommendation: stop relying on the cloud, go local with a device called ratgdo.
I was one of the people who woke up to a garage door that my dashboards could no longer see. The hardware in my garage worked perfectly. The motor was fine, the door was fine, the wall button was fine. The only thing that broke was a business decision made in an office I will never visit, pushed to a server I do not own, that reached into my house and turned off a feature I had been using for years.
This is the build log for making sure that never happens again. The goal: a garage door that opens, closes, and reports its state entirely on my own network, with no account, no app, and no company that can change its mind. I will also tell you about the finished, boxed alternative for people who do not want to flash firmware, because not everyone wants a build log, some people just want their garage back.
Why You Cannot Just Bolt a Relay On a Modern Opener
This is the part that trips up everyone coming from the “smart home is just relays” school of thought, and it tripped me up too.
On an old garage opener, the wall button is a dumb momentary switch. Press it, two wires touch, the door moves. To automate that you wire a relay across those same two terminals and fire it from Home Assistant. The Meross MSG200HK and the Zooz ZEN16 both work this way, they are cheap, and if you have an old opener they are genuinely all you need.
Modern Chamberlain and LiftMaster openers do not work like that. Since roughly 2011 they use Security+ 2.0, which puts an encrypted, rolling-code serial protocol on the wall-button wires. The wall console is no longer a dumb switch, it is a little computer having an authenticated conversation with the motor. Short those terminals with a relay and the opener does absolutely nothing, because a dumb contact closure is not a valid message in that conversation. I learned this the annoying way, by wiring up a relay I already owned and watching the door ignore me completely.
So to control a Security+ 2.0 opener locally you need a device that can actually speak the protocol. That is exactly what ratgdo is. It sits on the same three wires as the wall console, decodes the rolling-code chatter, and can both inject valid open and close commands and read the door’s real position straight off the bus. No cloud, no myQ, no permission required.
Step 0: Identify Your Opener Before You Buy Anything
Do not skip this. The single most important fact about your garage door is the color of the learn button on the back of the motor unit, because it tells you which protocol you have and therefore what will and will not work.
- Yellow, red, orange, purple, or brown learn button: Security+ or Security+ 2.0. This is the sweet spot. ratgdo and the Konnected blaQ both work.
- White learn button: Security+ 3.0, on openers sold from 2025 onward. This is the bad news section. As of right now, neither ratgdo nor blaQ supports Security+ 3.0. If you have a white button, your only honest options today are an opener that exposes a dumb dry contact (some do via an expansion port) or waiting for the community to crack it. Do not buy a ratgdo for a white-button opener expecting it to work.
- No learn button, just two screw terminals and a plain push button: you have a simple dry-contact opener and you are in luck, the cheap relay path works. Use the Meross or the Zooz.
Go look at your motor right now. Mine is a LiftMaster with a yellow button, which put me squarely on the ratgdo path. Everything below assumes Security+ 2.0.
The Hardware
For the DIY local build you need exactly one thing plus a couple of optional extras:
- A ratgdo control board, around $30 to $45 depending on the variant. The current ESP32-based boards are the ones to get because they run modern ESPHome cleanly. It is a small PCB with a screw terminal block, a USB-C port for power, and a Wi-Fi antenna. That is the whole device.
- A USB-C power supply and cable, because the board is happiest on its own clean 5V rather than parasitically powering off the opener.
- Optionally a separate magnetic tilt sensor for an independent door-state cross-check. ratgdo already reports position from the opener, but I like a second, physically separate sensor for safety automations, so if one source is wrong the automation can refuse to act.
Total for the local build is well under $60, most of which is the board. Compare that to a myQ subscription you do not control, and the math writes itself.
Step 1: Wire It to the Opener
Power down the opener at the breaker or unplug it. Garage motors run on mains and I am not interested in your hospital story.
The ratgdo connects to the same three terminals your wall console uses on a Security+ 2.0 opener: the two communication terminals and the ground. On a LiftMaster these are usually the red, white, and a common terminal. The board is silk-screened, and the ratgdo docs have per-model terminal maps, so match your opener’s model rather than trusting a generic diagram.
You have two valid wiring approaches. You can run a fresh pair of wires from the ratgdo terminals to the opener terminals, leaving the existing wall console in place and in parallel, which is what I did so the physical button still works exactly as before. Or you can pigtail into the existing console wires. Either way, the wall button keeps working, because ratgdo is additive, it does not replace the console.
Tighten the terminals, double check you have the comms and ground in the right holes, and only then restore power. The board’s LED should come up.
Step 2: Flash and Adopt in ESPHome
Out of the box the board can be flashed straight from the ratgdo web installer in a Chromium browser over USB, which is the fastest way to get a known-good firmware on it. I went the ESPHome route instead because I run the ESPHome add-on in Home Assistant and I want every device I own in one dashboard.
In ESPHome you add the device, point it at the ratgdo external component, and set your network credentials the correct way, as secret references rather than inline text:
substitutions:
name: garage-door
friendly_name: Garage Door
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_key
Put the real values in your ESPHome secrets.yaml, never in the device config you might one day paste into a forum. The ratgdo component itself is added with a short block that pulls in the maintained package for your board revision, and the project docs give you the exact ref to pin. Compile, flash over USB the first time, and after that every update is over the air.
The moment it boots and connects, Home Assistant discovers it through the ESPHome integration and you click adopt. No HACS, no custom integration, no cloud.
Step 3: What You Get in Home Assistant
This is the payoff. After adoption I had a clean set of entities with zero additional configuration:
- A
cover.garage_doorentity with real open, closed, opening, and closing states, driven by the opener’s own position reporting rather than a guess. - A
binary_sensorfor the safety beam obstruction state, so automations can know if something is in the doorway. - A
lightentity for the opener’s own bulb, because the board can toggle it. - A lock entity for the wall console’s lockout feature on supported models.
- Diagnostic sensors for Wi-Fi signal and uptime.
That cover entity behaves like any other cover in Home Assistant, which means every card, every automation, and every voice assistant treats it as a first-class door. No translation layer, no cloud entity that might go stale.
Step 4: The Automations That Make It Worth It
A garage door you can see in a dashboard is nice. A garage door that thinks for itself is the actual reason to do this.
Auto-close after a timer. The single most useful automation in my house. If the door has been open for fifteen minutes and nobody is actively in the garage, send a phone notification with an actionable “close it now” button, and if I do not answer in five more minutes, close it. This alone has shut my garage on more nights than I want to admit.
Close on leaving home. When the last phone leaves the home zone and the door is still open, notify and then close. Presence is the trigger, the actionable notification is the safety valve, the close is the action.
Nighttime check. At 11pm, if the garage is open, do not silently close it, because someone might be out there. Instead flash the office lights and push a notification. Closing a garage door on a person is the one failure mode I will not design around quietly.
Open on arrival, carefully. I do not blindly auto-open on GPS, because GPS drifts and an auto-opening garage is a security hole. Instead I use a combination: my phone is in the home zone AND a Frigate camera has read my license plate in the driveway. Two independent signals before the largest door in my house swings open.
Every one of these runs locally. If my internet is down, every single automation still fires, because the trigger, the logic, and the action all live on hardware in my house. That is the difference between this and the myQ setup that a corporate decision switched off.
The Safety Section, Because This Is Not a Light Bulb
A garage door is heavy enough to hurt a child or a pet, and automating one carries real responsibility. Three rules I will not bend on:
- Never defeat the photo-eye safety beam. ratgdo triggers the opener the same way the wall button does, so the opener’s own obstruction protection still works. Keep it that way. Do not build anything that forces the door past a blocked beam.
- Never auto-close blind. Always pair a close automation with a notification and a delay, so a human can cancel it. Better yet, add a beeper or a flashing light that warns for a few seconds before an automated close, which is exactly what commercial auto-close kits are legally required to do.
- Closing beats opening for safety, opening beats closing for security. I am liberal about auto-closing a door that got left open. I am extremely conservative about auto-opening one, because an opener with a bug is a door that lets strangers in.
The Easy Path: Konnected GDO blaQ
Not everyone wants to flash firmware and decode terminal diagrams. If you want the local-control outcome without the build, the Konnected GDO blaQ is the finished version of this idea. It is a boxed retail device, around $90, that speaks the same Security+ and Security+ 2.0 protocol, works with myQ-era Chamberlain and LiftMaster openers, and integrates with Home Assistant, SmartThings, Hubitat, and Alexa entirely locally with no cloud account.
It is the device I recommend to anyone who asked me to do this for them and then looked nervous when I mentioned a soldering-optional PCB. Same local philosophy, same protocol support, just packaged. The one caveat is identical to ratgdo: a white learn button (Security+ 3.0, 2025 and newer) is not supported, so check your opener first. For everyone else, blaQ is the no-build answer and I would not talk you out of it.
The Bottom Line
The myQ episode was a clean lesson in why I do not trust the cloud for anything physical in my house. A company I do not work for reached across the internet and turned off a feature I relied on, and there was nothing I could do about it from inside their walled garden.
The local rebuild cost me about $40 and an afternoon, and the result is strictly better than what I lost: faster, more reliable state, automations that survive an internet outage, and a guarantee that no future business decision can take my garage door offline. If you have a yellow, red, orange, purple, or brown learn button, get a ratgdo board and do the build, or grab a GDO blaQ and skip straight to the good part. If you have an old dumb opener, a Meross controller or a Zooz ZEN16 does the job for less.
Whatever you pick, pick the one that keeps working when the company that sold it to you forgets you exist. That is the whole point of doing this at home.