A better garage door opener

A better garage door opener

One of the devices that I was particularly proud of was my voice and Home Assistant controlled garage door opener. I took a z-wave dry contact switch and wired it to a spare key-chain door remote and it worked amazingly well. I connected a z-wave door sensor and wrote some scripts to notify me if it was left open too long. At the time, no one had written any great how-to’s on Home-Assistant page so I felt a sense of accomplishment in having successfully getting it to work. This served me well for a few years. One day, it stopped working. After a bit of troubleshooting, it would seem that the z-wave part of the set-up (main part!) was no longer connecting. Time to build a better garage door opener!


Since the original had served me so well I figured I initially thought I would just rebuild. When I re-priced the dry contact switch it had gone up about 20% which did not make the thought of possibly needing to doing this every few years appealing at all. I started searching for alternatives and eventually landed on a ESP8266 option. There were two or three write-up and videos so this method looked promising. I had never really worked with ESP8266 before only having played with an Arduino a couple of time for a robot project. For the most part I followed D Khaz’ page so I want to be sure to give credit where it is due.


  1. Housing/Case – a little something to hold all the parts; use what you have but since this is in the garage, I used this.
  2. Garage Remote – some can connect directly to their motor-box but I could never figure mine out; I already had these so be sure to get one that matches your unit.
  3. Wemos D1 Mini – a small ESP8266 based microcontroller that provides Wi-Fi back to Home Assistant.
  4. Wemos Relay Shield – relay for triggering door via garage remote.
  5. Wemos DHT shield – might as well make it multi-purpose.
  6. Wired Reed Switch – magnetic reed switch for door state; I used a NO but code can be edited for NC.
  7. Power Supply – 2.5A is overkill for this but I buy these in bulk for all my Raspberry Pi 3 setups.
  8. Extra Wire – for runs to the Reed Switch (if needed).
  9. Hot Glue Gun – just about any should work; don’t forget the glue sticks.
  10. Soldering iron – again, any should work; don’t forget the solder.


I would be remiss if I did not mention two things. One, this involves soldering and two, matching the header leads beforehand can lead to a much smaller, compact finished product. With that said, I am of practice on soldering at this small a level and undoubtedly am not very good at matching headers. If you are better at this than I am, you can solder and then assemble the Wemos D1 Mini, Relay board, and DHT in a single stack leaving only the power lead, wires to the remote, and wires to the magnetic reed switch coming out. If, on the other-hand you are like me, there will be a few wires running between the components in addition to the ones from the previous sentence.


garage circuit
garage circuit


  name: esphome_garage_door # choose your name
  platform: ESP8266
  board: d1_mini

  ssid: 'wifissid' # enter you wifi name
  password: 'wifipassword' # enter your wifi password
  fast_connect: on
#  Optional to change deafault domain of .local
#  domain: .local.lan 



#  Optional to have direct access via IP
  port: 80


- platform: gpio
    number: GPIO13
    mode: INPUT_PULLUP
    inverted: True # change to False if using NC reed
  name: "Garage Door Sensor" #name to be used in HA
  device_class: garage_door
    - delayed_on: 20ms
- platform: dht
  pin: GPIO2
    name: "Garage Temperature" #name to be used in HA
    - lambda: return x * (9.0/5.0) + 32.0;
    unit_of_measurement: "°F"
    name: "Garage Humidity" #name to be used in HA
  update_interval: 60s
  model: AM2302
- platform: gpio
  id: relay
    number: GPIO5
    inverted: False
  restore_mode: ALWAYS_OFF
- platform: template
  name: "Garage Door Switch" #name to be used in HA
  icon: "mdi:garage" #icon to be used in HA
  - switch.turn_on: relay
  - delay: 1s
  - switch.turn_off: relay
- platform: restart
  name: 'Garage Door REBOOT'  #name to be used in HA

  id: status_led1
    number: GPIO2

Upload your code

This will be a short section… There are a few ways to do this. Originally I used an Arduino or Pi, but since I already run Home Assistant, now I use the ESPHome plugin. Instructions can be found at the linked page.

Home Assistant inclusion

Once you have flashed the Wemos D1 Mini, add the device to your Home Assistance instance. See below:

A better garage door opener 1

Once this updates you can then select your new controls and create a group card:

A better garage door opener 2


That was pretty much it. This was my second Wemos D1 Mini / ESP8266 device (see Better Plant Sensor) and, thus far, I am very intrigued. I am actively searching for other devices I can build, hone my soldering skills on, and ultimately add to my home automation. If you have any cool ideas, drop me a line.

Please follow and like us:

Leave a Reply