Info: Dieses Tutorial richtet sich an Betreiber:innen eines Home Assistant Servers, ist aber potenziell interessant für alle technikinteressierten Bastler:innen.
tl;dr: Anbindung eines Garagentorantriebs an Home Assistant mittels ESP8266, Relay, Schallsensor und ESPHome.
–


Real-Life-Machine-Interface-Magic
Ein bisschen ist es ja schon wie Zauberei, wenn Code in der “echten Welt” interagiert. Ein perfektes Beispiel dafür ist die Verwandlung einer gewöhnlichen Garage in ein intelligentes Tor, das mit dem Smartphone gesteuert werden kann. Mit ein paar kostengünstigen Elektronik-Bauteilen und einem ESP8622 Entwicklerboard kann jeder sein eigenes Smart Home-Projekt realisieren.
Ausgangssituation: Viele Nutzer, wenig Schlüssel
Unsere Garage wird von 3 Familien genutzt — hauptsächlich um die Fahrgeräte der Kinder unterzubringen. Geöffnet wird sie elektrisch (immerhin), dafür haben wir 2 Fernbedienungen, die eine sehr begrenzte Reichweite und ständig leere Batterien haben und genau 1 Schlüssel. Ziel ist es, dass alle Hausbewohner:innen das Tor mit ihrem Smartphone öffnen und schließen können.
Der Plan: Verbindung smart machen
Glücklicherweise kann bei den meisten elektrisch betriebenen Garagentorantrieben davon ausgegangen werden, dass es einen einfachen Schaltkreis gibt, um einen Taster oder einen Schlüsselschalter anzuschließen. Hierbei wird einfach kurz eine Verbindung zwischen zwei Adern hergestellt. Genau dort setzen wir an und stellen diese Verbindung “smart” her.
Um den Zustand des Tores (auf oder zu) zu prüfen, muss ein bisschen tiefer in die Trickkiste gegriffen werden. Am einfachsten war es in diesem Fall, die Position des Tores mit einem Ultraschallsensor zu prüfen. Je nach Gegebenheit wären aber auch ein Taster oder ein Helligkeitssensor eine gute Option.
Die Hardware: ESP 8622 als Grundlage
Zum Einsatz kommt ein ESP 8622 Entwicklerboard und ein paar kostengünstige Elektronik-Bauteile. Die kurze Einkaufsliste:
- D1 Mini V3 NodeMCU ESP8266EX WLAN Modul
- 5V Ein-Kanal Relais Modul
- HC-SR04 Ultraschallsensor
- 5V Netzteil (am besten ein älteres recyclen, wir benötigen nur 500 mAh)
Ob und wie das Ganze noch verpackt und angebracht werden muss, ist wieder abhängig von den individuellen Gegebenheiten der Garage. In unserem Fall ist das Gerät unterhalb der Decke angebracht, auf Höhe der Führungsschiene des Garagentores.
Die Software: Home Assistant meets ESPHome Plugin
Über Home Assistant wurde schon viel Positives geschrieben. Eine für mich besonders interessante Anbindung geschieht hierbei über das ESPHome Plugin.
Mittels ESPHome können relativ einfache “Rezepte” für Mikrocontroller geschrieben werden, diese werden automatisch kompiliert und per WLAN direkt verteilt.
Das Rezept für unseren Microcontroller sieht in etwa so aus:
esphome: name: garage-door esp8266: board: nodemcuv2 light: - platform: status_led id: status pin: number: D4 inverted: true sensor: - platform: ultrasonic trigger_pin: D1 echo_pin: D2 name: "Ultrasonic Sensor" id: distance update_interval: 1s timeout: 2m filters: - lambda: if (isnan(x)) { return 2.1; } return x; - quantile: switch: - platform: gpio pin: D3 id: relay name: "Garage remote trigger" icon: "mdi:garage" restore_mode: ALWAYS_OFF on_turn_on: - light.turn_on: status - delay: 500ms - switch.turn_off: relay on_turn_off: - light.turn_off: status binary_sensor: - platform: analog_threshold name: "Garage open" sensor_id: distance id: door_open threshold: 0.20 device_class: GARAGE_DOOR publish_initial_state: True filters: - invert: cover: - platform: template name: "Garage Door" id: garage_door device_class: garage lambda: |- if (id(door_open).state) { return COVER_OPEN; } else { return COVER_CLOSED; } open_action: then: - switch.toggle: relay close_action: then: - switch.toggle: relay
Diese Konfiguration beinhaltet bereits Fehlerbehandlungsroutinen für die Ungenauigkeiten des Ultraschallsensors sowie die Definition, dass es sich um ein Garagentor handelt. Das ist wichtig, damit das Gerät in Home Assistant nicht nur als Schalter und Sensor angezeigt wird.
Je nach Situation muss der Code noch angepasst werden: Unser Garagentor fährt beim Öffnen unter die Decke und verdeckt den Ultraschallsensor, d.h. wenn dieser einen Abstand von unter 20 cm misst, ist das Tor offen, alles darüber bedeutet, dass es geschlossen ist.
Nach geglücktem Upload der Firmware, kann das neue Gerät in Home Assistant hinzugefügt werden.
Das Ergebnis: PWA, fertig, los!
Einmal hinzugefügt zum Home Assistant Dashboard habe ich nun die Möglichkeit, das Tor weltweit zu öffnen und zu schließen.
Um allen im Haus einen einfachen Zugriff zu ermöglichen, habe ich noch eine kleine Webanwendung programmiert. Diese lässt sich als PWA auf gängigen Smartphones auch ohne AppStore installieren.
Fazit: Gelungene Home Automation mit kleinen Tücken
Alles in allem ist die beschriebene Methode eine sehr kostengünstige Möglichkeit ein vorhandenes Gerät “smart” zu machen.
Ein paar Stolpersteine gab es aber offen gestanden doch:
- Wenn das Tor halb offen steht, wird es als “zu” angezeigt
- Das Fine-Tuning des Sensors war unerwartet aufwändig
- Ob die Elektronik wetterfest genug ist, wird sich noch zeigen
Für diesen Use-Case sind das aber Punkte, mit denen wir leben können. Ich habe auf jeden Fall viel in diesem kleinen Projekt gelernt, vor allem dass Code, der mit der realen Welt interagiert, wie z.B. das Abfragen eines Ultraschallsensors ein hohes Level an Toleranz und Fehlerbehandlungsroutinen erfordert, da Staub oder Insekten das Ergebnis verfälschen können — das passiert in einem Computer eher selten.