Home Assistant Garage Door Control: Openers, Sensors, and Automations

Your garage door is probably the biggest moving object in your house, and also the one most likely to be left open at 2 AM. Let's fix that. Here's how to get full local control with Home Assistant, whether you buy a commercial solution or build your own for under 15 euros.

Check Your Setup ESPHome Guide

How Garage Door Control Works

Most garage door openers are surprisingly simple. A dry contact (two wires shorting together) triggers the motor, the same thing your wall button does. Smart controllers just simulate that button press over Wi-Fi or Zigbee.

๐Ÿ”Œ

Controller

A relay or smart device connects to your opener's terminals. It triggers open/close commands.

๐Ÿ“ก

State Sensor

A reed switch or tilt sensor tells Home Assistant whether the door is open or closed.

๐Ÿ 

Home Assistant

Creates a "cover" entity that you can control from dashboards, automations, and voice commands.

Best Garage Door Controllers for Home Assistant

From plug-and-play to full DIY. Pick your level of effort.

๐Ÿ† Top Pick Wi-Fi / ESPHome

Ratgdo v2.5

  • Works with Security+ 2.0 openers
  • ESPHome native integration
  • Door position, light, obstruction
  • Open source firmware
  • ~โ‚ฌ30 (board only)
  • 100% local, no cloud
  • Wi-Fi (ESP8266/ESP32)
  • Works with most LiftMaster/Chamberlain

The gold standard for garage door control in the HA community. If you have a LiftMaster, Chamberlain, or Craftsman opener, this is the one. It speaks the Security+ 2.0 protocol directly, so you get door state, obstruction detection, and light control without extra sensors.

Budget Pick Wi-Fi

Shelly 1 (Plus or Mini)

  • Built-in relay for dry contact
  • Local API, no cloud needed
  • Tiny, fits inside opener housing
  • ~โ‚ฌ12
  • Needs separate door sensor

Wire it to the same terminals as your wall button. Add a reed switch for state. Simple, cheap, reliable. Works with any garage door opener that uses a dry contact trigger.

Easy Setup Wi-Fi

Meross MSG200

  • Comes with tilt sensor
  • Official HA integration (local)
  • Supports up to 3 doors
  • ~โ‚ฌ35
  • Initial setup requires Meross app

The easiest option if you want something that just works. Includes the sensor, wiring harness, and mounting hardware. The HA integration works locally after initial cloud setup.

Z-Wave

Zooz ZEN16 MultiRelay

  • 3 independent relays
  • Z-Wave 700 series
  • Garage door mode built in
  • ~โ‚ฌ35
  • Needs separate door sensor

Great if you already have a Z-Wave network. The built-in garage door mode prevents accidental toggles. Can control up to 3 devices with one unit.

Wi-Fi

ismartgate PRO

  • Official HA integration
  • Supports 3 doors
  • Optional camera add-on
  • ~โ‚ฌ100
  • Pricier than DIY options

Premium option with a polished app and HA integration. The camera add-on lets you see your garage from the HA dashboard. Worth it if you want zero tinkering.

DIY: Build Your Own for Under โ‚ฌ15

An ESP32, a relay, and a reed switch. That's it. Flash with ESPHome and you have a fully local garage door controller that rivals commercial options.

Shopping List

ESP32 dev board (ESP32-C3 or S2 Mini)~โ‚ฌ4 Single channel relay module (3.3V compatible)~โ‚ฌ2 Reed switch (magnetic contact sensor)~โ‚ฌ3 Jumper wires and 5V USB power supply~โ‚ฌ3 Total~โ‚ฌ12

ESPHome Configuration

esphome:
  name: garage-door
  platform: ESP32
  board: esp32-c3-devkitm-1

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

api:
  encryption:
    key: !secret api_key

# Reed switch on GPIO4 (door state)
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      inverted: true
    name: "Garage Door Contact"
    device_class: garage_door
    id: garage_contact

# Relay on GPIO5 (triggers opener)
switch:
  - platform: gpio
    pin: GPIO5
    name: "Garage Door Relay"
    id: garage_relay
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: garage_relay

# Cover entity (open/close logic)
cover:
  - platform: template
    name: "Garage Door"
    device_class: garage
    lambda: |-
      if (id(garage_contact).state) { 
        return COVER_OPEN;
      } else { 
        return COVER_CLOSED;
      }
    open_action:
      - switch.turn_on: garage_relay
    close_action:
      - switch.turn_on: garage_relay
    stop_action:
      - switch.turn_on: garage_relay

The relay pulses for 500ms (simulating a button press), then turns off. The reed switch reports whether the door is open or closed. Home Assistant sees it as a proper cover entity with open/close controls.

Wiring in 3 Steps

  1. Relay to opener: Connect the relay's NO (normally open) and COM terminals to the same two screw terminals where your wall button connects. This is safe, you're just adding another "button" in parallel.
  2. Reed switch to ESP32: Mount the reed switch on the door frame, magnet on the door. Wire one side to GPIO4, the other to GND. The internal pull-up resistor handles the rest.
  3. Power: Plug the ESP32 into a USB power supply. Most garage ceilings have an outlet nearby for the opener itself. Use a small project box to keep things tidy.

Garage Door Sensors: Know Your State

A smart garage door without a state sensor is just a remote toggle. You need to know whether it's open or closed before you can automate safely.

๐Ÿงฒ

Reed Switch (Magnetic Contact)

The most reliable option. A two-part sensor: one piece on the frame, one on the door. When the magnet is close, the circuit closes. Reports open/closed with zero ambiguity.

Best for: any door type. Wired version costs โ‚ฌ3, wireless Zigbee versions (Aqara) around โ‚ฌ12.

๐Ÿ“

Tilt Sensor

Mounts on a door panel. Detects whether the panel is vertical (closed) or horizontal (open). No second piece needed. The Meross MSG200 includes one.

Best for: sectional/roll-up doors where magnetic placement is tricky.

๐Ÿ“

Ultrasonic Distance Sensor

An ESP32 with an HC-SR04 sensor mounted on the ceiling. Measures distance to the door or the floor below it. Can detect partially open states, not just binary open/closed.

Best for: advanced setups where you want percentage-based position tracking.

5 Garage Door Automations You Actually Need

Once your door is connected, these automations make it genuinely smarter.

1. Auto-close After 10 Minutes

Left the door open? This closes it automatically. The single most useful garage automation.

automation:
  - alias: "Auto-close garage after 10 minutes"
    trigger:
      - platform: state
        entity_id: cover.garage_door
        to: "open"
        for: "00:10:00"
    action:
      - service: notify.mobile_app_phone
        data:
          message: "Garage door open for 10 minutes. Closing now."
      - service: cover.close_cover
        target:
          entity_id: cover.garage_door

2. Close When Everyone Leaves

Combines presence detection with garage control. When the last person leaves home, close the door.

automation:
  - alias: "Close garage when everyone leaves"
    trigger:
      - platform: state
        entity_id: zone.home
        to: "0"
    condition:
      - condition: state
        entity_id: cover.garage_door
        state: "open"
    action:
      - delay: "00:02:00"
      - service: cover.close_cover
        target:
          entity_id: cover.garage_door

3. Night Check: Close at Bedtime

Every night at 11 PM, check if the garage is still open. If so, close it and send a notification.

automation:
  - alias: "Bedtime garage check"
    trigger:
      - platform: time
        at: "23:00:00"
    condition:
      - condition: state
        entity_id: cover.garage_door
        state: "open"
    action:
      - service: cover.close_cover
        target:
          entity_id: cover.garage_door
      - service: notify.mobile_app_phone
        data:
          message: "Garage was still open at bedtime. Closed it for you."

4. Open When You Arrive Home

Uses phone GPS to open the garage as you pull into the driveway. Add a condition for time of day so it only works during reasonable hours.

automation:
  - alias: "Open garage on arrival"
    trigger:
      - platform: zone
        entity_id: person.your_name
        zone: zone.home
        event: enter
    condition:
      - condition: state
        entity_id: cover.garage_door
        state: "closed"
      - condition: time
        after: "07:00:00"
        before: "22:00:00"
    action:
      - service: cover.open_cover
        target:
          entity_id: cover.garage_door

5. Alert on Unexpected Opening

Get a phone notification if the garage opens when nobody is home. Simple but important for security.

automation:
  - alias: "Alert on unexpected garage opening"
    trigger:
      - platform: state
        entity_id: cover.garage_door
        to: "open"
    condition:
      - condition: state
        entity_id: zone.home
        state: "0"
    action:
      - service: notify.mobile_app_phone
        data:
          message: "โš ๏ธ Garage door opened but nobody is home!"
          data:
            push:
              sound: default
              interruption-level: time-sensitive

Safety First: Do This Before You Automate

A garage door can cause serious injury. Take these precautions seriously.

๐Ÿ›ก๏ธ

Always use a state sensor

Never automate a garage door without knowing its actual state. A controller without a sensor is just a blind toggle. You need to know if it's open or closed before sending commands.

๐Ÿ‘๏ธ

Test obstruction detection

Make sure your opener's built-in safety sensors still work. Place a box under the door and trigger a close. The door should reverse immediately. If you're wiring a controller directly, never bypass these sensors.

๐Ÿ””

Notify before auto-closing

Add a notification (or even a siren/buzzer) a few seconds before an automated close. This gives anyone in the garage time to stop it. Especially important for auto-close timers.

๐Ÿ”‘

Keep manual controls working

Smart controllers are added alongside your existing wall button and remotes, not replacing them. If your network or Home Assistant goes down, you can always open and close the door manually.

Get Started This Weekend

Pick your path based on your comfort level.

Easy Path

Meross MSG200

  1. Buy the Meross MSG200
  2. Wire to opener terminals
  3. Mount the tilt sensor
  4. Set up via Meross app
  5. Add the HA integration

~30 minutes, ~โ‚ฌ35

Medium Path

Shelly 1 + Reed Switch

  1. Buy Shelly 1 + reed switch
  2. Wire Shelly to opener
  3. Mount reed switch on frame
  4. Configure in HA (local API)
  5. Set up cover template

~1 hour, ~โ‚ฌ15

DIY Path

ESP32 + ESPHome

  1. Get ESP32, relay, reed switch
  2. Flash ESPHome firmware
  3. Wire relay to opener
  4. Mount reed switch
  5. Auto-discovered in HA

~2 hours, ~โ‚ฌ12

Not sure what's compatible with your setup? Run a free scan and we'll tell you what works.

Scan Your Smart Home