I originally was looking for a solution for a WiFi controlled garage door over Home Assistant. Looking lately into utilizing D1 Mini’s for things, this seemed to be perfect. I followed the link below for the guidance on what I’d need to complete the task. Once you get the following supplies together, I ended up using the code below to upload to the D1 Mini for interacting with it over the WiFi. Then connected to it with Home Assistant.
Thanks to Khaz.me for the guidance: https://khaz.me/cheap-and-easy-home-assistant-garage-door-control/ Be sure to also check out their link here.
Supplies
- D1 Mini (2pk): https://amzn.to/2YaHObs
- Relay shield (3pk): https://amzn.to/3a0Keix
- Magnetic Switch Sensor (2pk): https://amzn.to/3qVGCoT
- 2 Conductor Wire: https://amzn.to/3sYrrNx
- Project Box: https://amzn.to/2YchAVU
Using a Soldering Iron and some solder, take a look at how I soldered together the D1 Mini and Relay shield with the headers that are included with the D1 Mini. Khaz.me has a good schematic on what to wire up and how. Simplest explanation I found during my research. They ended up using a 12v -> 5v adapter, however I ended up just using the Micro USB power on the D1 for power.
Main thing to keep in mind is there’s a sensor for whether or not the garage door is open. Then there’s an independent switch configuration in the YAML below for “triggering” the relay. Which simulates pressing the button to open a garage door. Then the other options are mainly for configuring the D1 Mini for WiFi, rebooting the device, and logging, etc..
Below, you’ll find the YAML code to upload to the D1 Mini over the appropriate COM port via Micro USB cable. After that, once it’s on the network, I used the ESP_Home integration on Home Assistant to connect it all up. After all of this you should have a WiFi controlled garage door!
esphome:
name: garage_door_opener
platform: ESP8266
board: d1_mini
wifi:
ssid: "SSID_HERE"
password: "PASS_HERE"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Garage Door Opener"
password: ""
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "PASSWORD_HERE"
ota:
password: "PASSWORD_HERE"
binary_sensor:
- platform: gpio
pin:
number: GPIO13
mode: INPUT_PULLUP
inverted: False
name: "Garage Door Sensor"
device_class: garage_door
filters:
- delayed_on: 20ms
switch:
- platform: gpio
id: relay
pin:
number: GPIO5
inverted: False
restore_mode: ALWAYS_OFF
- platform: template
name: "Garage Door Switch"
icon: "mdi:garage"
turn_on_action:
- switch.turn_on: relay
- delay: 1s
- switch.turn_off: relay
- platform: restart
name: 'Garage Door REBOOT'
status_led:
pin:
number: GPIO2