ESPHome garage door remote

In response to Relicense under an OSI approved license · Issue #2 · Genie-Garage/aladdin-python-sdk · GitHub I decided to cobble together a ESPHome-powered wireless* garage door remote. (*=Wireless in respect to the doors. The device is USB-powered :sweat_smile:). This is really hacky in my opinion, but I really hope it inspires others to take it to the next level (if you do, please share!).

I think my favorite part about this is that the remote is powered by the ESP8266. The final product is powered by a 4-inch micro-USB cable from my Home Assistant Yellow.

Parts

(all links are for reference. I recommend shopping around if you plan to attempt this yourself)

Schematic

ESPHome Code

substitutions:
  name: espgarageremote
  friendly_name: "ESP8266 Garage Remote"

esphome:
  name: "${name}"
  friendly_name: "${friendly_name}"

esp8266:
  board: d1_mini
  restore_from_flash: false

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "SECRET_REMOVED"

ota:
  - platform: esphome
    password: "SECRET_REMOVED"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pass

  manual_ip:
    static_ip: 192.168.89.88
    gateway: 192.168.89.1
    subnet: 255.255.255.0
    dns1: 192.168.89.1
    dns2: 192.168.89.2

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${name} Fallback Hotspot"
    password: "SECRET_REMOVED"

captive_portal:

# Minimal flash writes, once per day
preferences:
  flash_write_interval: 1440min

# Sync time with Home Assistant
time:
  - platform: homeassistant
    id: homeassistant_time

switch:
  # Switch to restart the ESP
  - platform: restart
    name: ${friendly_name} Restart
  - platform: gpio
    pin: GPIO4
    inverted: yes
    restore_mode: RESTORE_DEFAULT_ON
    id: button1
    name: "East Door"
    icon: "mdi:garage"
    on_turn_on:
    - delay: 250ms
    - switch.turn_off: button1
  - platform: gpio
    pin: GPIO5
    inverted: yes
    restore_mode: RESTORE_DEFAULT_ON
    id: button2
    name: "West Door"
    icon: "mdi:garage"
    on_turn_on:
    - delay: 250ms
    - switch.turn_off: button2

# Blink LED for status, and also expose to HA as switch
light:
  - platform: status_led
    name: "${friendly_name} status light"
    id: blueled
    pin:
      number: GPIO2
      inverted: yes
    restore_mode: RESTORE_DEFAULT_OFF

script:
  - id: heartbeat
    mode: single
    then:
      - light.toggle: blueled
      - delay: 20 ms
      - light.toggle: blueled

# Heartbeat while connected to HA
interval:
  - interval: 5s
    then:
      if:
        condition:
          api.connected:
        then:
          - script.execute: heartbeat

text_sensor:
  # Expose WiFi information as sensors
  - platform: wifi_info
    ip_address:
      name: ${friendly_name} IP
    mac_address:
      name: ${friendly_name} Mac Address

binary_sensor:
  - platform: status
    # Status platform provides a connectivity sensor
    name: "${friendly_name} - Status"
    device_class: connectivity

sensor:
  # Report wifi signal strength every 5 min if changed    
  - platform: wifi_signal
    name: ${friendly_name} WiFi Signal
    update_interval: 300s
    filters:
      - delta: 10%

# Pin assignments for ESP-01
# https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/
# 3v3 |  | RX/GPIO3 - high at boot
# RST |  | GPIO0 - pulled up, flash if low on boot
# EN  |  | GPIO2 - pulled up, blue led on if pulled down, must be high at boot
# TX  |  | GND
#  ^ TX/GPIO1 - high at boot

Final product

Credits

Inspiration to make this came from Flipper Zeo Genie Recorder. After seeing how they used a Flipper Zero GPIO to control the remote, it just made sense to make this.

1 Like

Great work! I do have one question, though (just out of curiosity): what was your goal? I mean - why not just install wifi module inside garage opener? You could connect wifi output to open button of garage door opener.

Hello. I did exactly the same thing with Somfy remote control. Instead of buy gate (connexion) from their company cheapest way was build my own esp8266 module. Like You did, i soldered cables with remote control (power and buttons). Right now, rmeote controll is powered from esp and esp is also sending commands to remote control for open garage doors and gate. Great alternative!

A+ for effort but, im curious why you didnt just buy and use a generic RF transmitter? They come in sizes small enough to add onto a keychain or there are others that could go into a car and its just a button that transmits an RF code…

Why all the extra bells and whistles plus extra power drain to use an esp board thats a bit overfill?

Ive used these for my spare opener along with using them for other things.