Building now — chip flashed and online
DIY Garage Door. Controller
Why this page exists: the "Small Garage Door" opener (a Refoss RSGD100, Meross-manufactured)
went dark on the network for about two months while it still had power — the button and LED stopped
responding to any reset attempt, and re-pairing through the Refoss app never worked. Cloud-dependent
consumer openers like this one have no local fallback and no real position feedback — the
app just guesses. The plan is to swap this one opener for a small, local-first build using
ESPHome. Started 2026-10-21: the chip is flashed and on Wi-Fi; wiring is next.
01 // The idea
Local-first instead of cloud-first — it talks straight to the house Wi-Fi, no app account required.
A small all-in-one ESP8266 + relay board runs ESPHome firmware and does
two jobs: the onboard relay pulses the same two wires the wall button pulses, to open/close
the door, and the magnetic reed switch Gary already has (salvaged from the old Refoss unit)
mounts low on the track and says CLOSED only when the door is all the way down.
Stuck halfway or wide open both say OPEN, so it never falsely says the door is shut.
One door, one sensor: this board runs only the Small Garage Door. It joins the house Wi-Fi directly and shows up in Home Assistant / the OnFleek
network like any other local device, so it keeps working even if the manufacturer's cloud service ever
goes away.
02 // Parts list
Everything is cheap and commonly stocked — most of it is probably already in a parts bin.
| Part | Job | Approx. cost | Buy |
| ESP8266 WiFi relay board |
All-in-one brain + relay on one small board (ESP-01S chip). Replaces buying a separate ESP32 dev
board and a separate relay module. Comes as a 5-pack — 4 spares left over for other projects. |
$15.99 5-pack |
Amazon → |
| USB-to-TTL programmer |
The ESP-01S chip has no USB port of its own — this plugs it into a computer to flash ESPHome onto
it. Pull the chip out of the relay board, flash it here, plug it back in. 2-pack. |
$8.98 2-pack |
Amazon → |
| Magnetic reed switch |
Mounted LOW on the side track, magnet on the door's bottom edge: closes only when the door is fully
DOWN. Gary already has the old one salvaged from the Refoss unit; link is for a future replacement. |
$0 have one ($9.99 to replace) |
Amazon → |
| 5V USB power supply + cable |
Powers the board from a nearby outlet. The board has no USB port: 5V goes into the 2-screw
block (a USB cable with the end cut off, red = +, black = -, or a USB-to-screw adapter). |
$9.99 |
Amazon → |
| Small project box |
Keeps the board and relay dust-free and off exposed terminals. 5-pack, more than enough for this and future builds. |
$9.99 5-pack |
Amazon → |
| Jumper wire kit |
Wires for the reed switch and the opener. Sensor wire A pinches into the chip socket's RX hole
(no solder): one thin solid wire, chip pressed in on top of it. |
$9.29 |
Amazon → |
Every link above was opened and confirmed in stock on 2026-09-30 — prices still drift a little on Amazon over time.
03 // Wiring plan
Same idea as the existing wall button — the relay just closes the same loop electronically.
Confirmed 2026-10-21 (board = ESP-01S Relay v4.0): the relay is on
GPIO0 and switches
on when the pin goes LOW. The sensor goes on
RX (GPIO3), not GPIO2: GPIO2 must be high at power-up,
so a sensor holding it low (door shut) would stop the chip from starting after a power cut.
Screws, facing you, left to right (checked against the factory print):
1 NO = opener wire A · 2 COM = opener wire B · 3 NC = empty · 4 GND = USB black + sensor wire B ·
5 VCC = USB red · RX hole = sensor wire A. (The opener and the sensor each just have 2 wires.)
Interactive wiring map →
- Trigger wires: the garage-door opener has two low-voltage terminals that the wall
button momentarily connects to trigger open/close/stop. The relay's screw terminals (already wired to
the ESP-01S on this board) land on those same two terminals.
- Reed switch: one lead to the free GPIO pin (pulled up), the other to ground; the
magnet mounts on the door's bottom edge, the switch body low on the track so it closes only when the
door is fully DOWN.
- Flashing: the ESP-01S chip has no USB port — pull it out of its socket on the relay
board, plug it into the USB-to-TTL programmer (switched to PROG mode) to flash ESPHome, then plug it
back into the relay board.
- Power: the board runs off 5V USB from a nearby outlet — no need to tap the opener's
own power supply.
04 // ESPHome config (live)
The exact config running on the chip (v2, 2026-10-21). Passwords and keys stay in secrets.yaml on the study laptop.
esphome:
name: small-garage-door
friendly_name: Small Garage Door
esp8266:
board: esp01_1m
restore_from_flash: false
logger:
baud_rate: 0 # frees RX (GPIO3) for the sensor
api:
encryption:
key: !secret api_key
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Small-Garage-Door-Setup"
password: !secret ap_password
captive_portal:
web_server: # REST for the server, this site and Alexa
port: 80
auth:
type: digest
username: !secret web_username
password: !secret web_password
binary_sensor: # reed switch: RX hole + GND, at the BOTTOM
- platform: gpio
id: door_closed_sensor
name: "Door Fully Closed"
pin:
number: GPIO3
mode: INPUT_PULLUP
inverted: true
filters:
- delayed_on_off: 200ms
switch: # relay on GPIO0, switches on when LOW
- platform: gpio
id: door_relay
internal: true
restore_mode: ALWAYS_OFF
pin:
number: GPIO0
inverted: true
button:
- platform: template
name: "Press Wall Button"
on_press:
- switch.turn_on: door_relay
- delay: 500ms
- switch.turn_off: door_relay
cover: # no stop_action on purpose
- platform: template
name: "Small Garage Door"
device_class: garage
lambda: |-
return id(door_closed_sensor).state ? COVER_CLOSED : COVER_OPEN;
open_action:
- if:
condition:
binary_sensor.is_on: door_closed_sensor
then:
- switch.turn_on: door_relay
- delay: 500ms
- switch.turn_off: door_relay
close_action:
- if:
condition:
binary_sensor.is_off: door_closed_sensor
then:
- switch.turn_on: door_relay
- delay: 500ms
- switch.turn_off: door_relay
sensor:
- platform: wifi_signal
name: "WiFi Signal"
update_interval: 60s
05 // Build steps
- Done: flash the chip with ESPHome over the USB-to-TTL programmer (2026-10-21).
- Done: Wi-Fi. Online at 192.168.2.26 on West_Wing_IOT, address locked in UniFi. Updates now go over Wi-Fi.
- Next: power only, on the table. Chip in the relay board, USB red to screw 5 (VCC), black to screw 4 (GND).
Unplug and replug 3 times and listen: no click allowed.
- Sensor: sensor wire A into the RX hole (pinch, no solder), sensor wire B on screw 4.
Touch the magnet to it: the board must say CLOSED.
- Relay test: press the button from the web page with nothing on screws 1-2: one click.
- Garage: unplug the opener, its 2 wires to screws 1 (NO) and 2 (COM), under the same screws as the wall button.
Mount the sensor low on the track, then test open and close.
- Box it up and mount it near the opener, off the floor and out of the way.
- Add the door to visual.onfleek.live and Alexa once it's live, so it shows real state.
06 // Status
Building — 2026-10-21. Chip flashed and on Wi-Fi, screws labeled and checked, wiring plan saved
on the
wiring map. Next: power on the table and the
click test. The Refoss unit stays in place until this is ready to swap in.