Abrir la puerta del garaje desde el móvil con ESP32, ESPHome y Home Assistant
Tutorial seguro: relé en contacto seco en paralelo al pulsador, sensor reed, entidad cover en la app, YAML ESPHome completo.
Ilustración generada con IA
Tutorial seguro: relé en contacto seco en paralelo al pulsador, sensor reed, entidad cover en la app, YAML ESPHome completo.
Abrir el garaje desde el móvil y saber si quedó abierto es uno de los proyectos más útiles. Un relé en paralelo al pulsador mural imita un pulso corto. Un sensor reed indica cerrado/abierto y Home Assistant muestra una puerta de garaje en la app.
| Duración | Nivel | Presupuesto |
|---|---|---|
| 2–3 h | intermedio | ESP32, relé y reed habituales en Amazon.es (tag roboteducat07-21) |
| Elemento | Pin | Hacia |
|---|---|---|
| Relé VCC | 3V3 (o 5 V según módulo) | |
| Relé GND | GND | |
| Relé IN | GPIO26 | |
| Relé COM/NO | contacto seco | bornes pulsador motor |
| Reed | GPIO27 y GND |
Relé en paralelo al pulsador. Reed cerrado con puerta completamente cerrada.
Descarga: porte-garage.yaml
substitutions:
nom: porte-garage
gpio_relais: GPIO26
gpio_reed: GPIO27
duree_impulsion: 700ms
esphome:
name: ${nom}
friendly_name: Puerta garaje
esp32:
board: esp32dev
framework:
type: esp-idf
api:
encryption:
key: !secret api_key
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- platform: gpio
id: reed_fermee
name: "Puerta cerrada (sensor)"
pin:
number: ${gpio_reed}
mode:
input: true
pullup: true
inverted: true
filters:
- delayed_on_off: 200ms
switch:
- platform: gpio
id: relais
pin: ${gpio_relais}
restore_mode: ALWAYS_OFF
internal: true
on_turn_on:
- delay: ${duree_impulsion}
- switch.turn_off: relais
script:
- id: impulsion
mode: single
then:
- switch.turn_on: relais
- delay: 2s
cover:
- platform: template
id: garage
name: "Puerta garaje"
device_class: garage
lambda: |-
return id(reed_fermee).state ? COVER_CLOSED : COVER_OPEN;
open_action:
- if:
condition:
binary_sensor.is_on: reed_fermee
then:
- script.execute: impulsion
close_action:
- if:
condition:
binary_sensor.is_off: reed_fermee
then:
- script.execute: impulsion
stop_action:
- script.execute: impulsion
Primer flash por USB; luego OTA. Ajusta 700ms según manual (0,5–1 s).
Tarjeta con confirmación y alerta si lleva 15 min abierta (adapta entity_id).
Tras corte de luz el ESP32 reinicia solo; relé en reposo (ALWAYS_OFF).
open_action solo impulsa si el reed dice «cerrado» y close_action si «abierto», evitando cerrar por error con un solo botón.
Más: sensor ESP32 ESPHome, proyectos ESP32, sensor de puerta en Raspberry Pi.
¿Dudas entre dos modelos o necesitas ayuda con un montaje? Escríbenos y te responderemos rápido por correo.