Bonjour,
Je sais que le sujet a été abordé pas mal de fois sur le forum et que des solutions toutes faites existent, mais je voulais partager ma version DIY basé sur EspHome avec le fonctionnement autonome que je veux. Voici dont ma commande de porte de garage.
La solution est plutôt simple et abordable pour débuter dans le DIY et EspHome..
Résumé TLDR
Avec un Esp8266 un relai et des capteurs, je contrôle ma porte de garage et je remonte dans HA l’état actuel, incluant le fait de savoir si elle est en train de s’ouvrir ou de se fermer. EspHome me permet d’ajouter des évolutions et des logiques pour la rentre le plus autonome possible et indépendant de HA, tout en gardant une intégration complète.
Composition de la solution.
Voici les composants avec liens.
Pas mal d’alternatives existent à tous les prix
- 1 Esp 8266 Node MCU V2 Amica (~3 à 7€ /pièce)
- 2 x Capteurs Magnétoques (NO) (~1 à 3€ /pièce)
- 1 x Relais 5V (Simple ou double ou +) (-1,5 à 5€ /pièce)
- Câbles Dupont ou Électronique
- 1 x Alimentation USB 5V pour l’ESP.
Suivant le vendeur, la quantité ou le modèle ce montage vous coutera entre 7 et 15€ de matériel.
Fonctionnement
Le fait d’avoir deux capteurs, en début et fin de course de la porte, permet de savoir si elle est complètement ouverte ou complètement fermée et de déduire son sens de mouvement. Le principe est simple, un aimant est placé sur la porte et celui-ci voyage avec elle. Les deux capteurs sont eux à chaque extrémité, l’aimant les rejoint alternativement.
Le tout est relié avec des câbles réseau ou téléphone, placés le long du rail là où ils ne gênent pas le mouvement de la porte.
Les câbles vont vers l’ESP et le relais, près du moteur de la porte, l’ESP est alimenté sur la même prise que la porte de garage.
Le relais est ensuite branché sur le bornier du moteur de la porte de Garage. Mon moteur un Spin de la marque NICE, ne propose pas de bornier “Close”, uniquement un “Open” et un “Pas à pas”. J’ai donc dû utiliser le bornier Pas à Pas “P.P". Ce qui pourrait poser un souci avec une installation à un capteur, car on ne saurait pas toujours quelle commande on lance.. mais avec 2 capteurs, on arrive à savoir plus de choses, ce qui permet une meilleure gestion dans l’interface HA.
Montage ESP
Le montage du système est plutôt simple.
On utilise d’un côté un GPIO et l’alimentation pour le Relais. De l’autre, 2 GPIO et 2 Terres pour les capteurs (peu importe le sens). Le relais est aussi connecté au bornier P.P (peu importe le sens côté bornier, mais entre “NO” (Normalement Ouvert) et “Com” (Commun) du côté du relais.
Schéma
Pour trouver les bons pins de l’ESP et leur GPIO correspondants, il faut trouver les infos de pinout de votre modèle de carte, exemple pour la mienne :
Code EspHome
Voici le code EspHome qui va avec
esphome:
name: porte-garage
esp8266:
board: esp01_1m
early_pin_init: false
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "5t92ZsREDACTEDzV8krfBpPH8="
ota:
password: "1a42e8REDACTED6a990503f7b"
platform: esphome
web_server:
port: 80
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Porte-Garage Fallback Hotspot"
password: "mUREDACTEDBO6"
captive_portal:
binary_sensor:
- platform: gpio
pin:
number: 2
inverted: true
name: "Garage Completement Ouvert"
id: fully_open
filters:
- delayed_on: 500ms
on_press:
then:
- cover.template.publish:
id: garage
state: OPEN
current_operation: IDLE
on_release:
then:
- cover.template.publish:
id: garage
state: OPEN
current_operation: CLOSING
- platform: gpio
pin:
number: 3
inverted: true
name: "Garage Completement Fermé"
id: fully_closed
filters:
- delayed_on: 500ms
on_press:
then:
- cover.template.publish:
id: garage
state: CLOSED
current_operation: IDLE
on_release:
then:
- cover.template.publish:
id: garage
state: OPEN
current_operation: OPENING
switch:
- platform: gpio
pin: GPIO4
name: "Door Action"
id: door_switch
inverted: true
internal: true
cover:
- platform: template
name: "Garage"
device_class: garage
id: garage
open_action:
- switch.turn_on: door_switch
- delay: 0.2s
- switch.turn_off: door_switch
close_action:
- switch.turn_on: door_switch
- delay: 0.2s
- switch.turn_off: door_switch
stop_action:
- switch.turn_on: door_switch
- delay: 0.2s
- switch.turn_off: door_switch
En résumé, on crée 2 binary_sensor, pour chaque capteur, avec les actions quand ils sont “pressés” (on_press) le porte est ouverte ou fermée (suivant le capteur) quand ils sont “relâchés” (on_release) le type de mouvement de la porte est assigné en fonction du bouton, si c’est celui qui dit “complètement ouvert” (open), le mouvement passe à “se ferme” (closing).
Ensuite un “switch” est créé pour gérer le relai et simuler l’appui sur la commande.
Et finalement, on crée un “cover” pour exporter directement dans HA une entité de type porte de garage. La classe et les actions disponibles sont directement gérées ici.
Côté Home Assistant
Une fois le module compilé et lancé, dans HA, on récupère une entité “cover” directement fonctionnelle avec les états qui vont bien.
![]()


![]()
Évolutivité
On pourrait ajouter toute sorte de capteurs additionnels, comme des lumières, des capteurs pour éviter de fermer si quelqu’un est dans le passage.
On pourrait aussi directement dans EspHome gérer une minuterie de fermeture. J’ai opté de faire cela dans HA avec un timer et des automatisations qui permettent d’annuler le timer si on veut garder la porte ouverte…
Automatisations, j’ai aussi un certain nombre d’automatisations qui allument les lumières en cas d’ouverture de porte la nuit, aussi des lumières RGB pour avertir celui qui arrive, du timer, si l’alarme de la maison est allumée… votre imagination est la seule limite.
Conclusion
Je ne participe pas au concours, étant membre de l’équipe, mais je pense que c’est un petit projet concret qui va plus loin que faire clignoter une led, parfait pour commencer. Et qui permet de faire plus de choses que les solutions commerciales existantes.






