Tobias Dühr
Gadgets
Digitales Leben
Spielen
10.5.2023

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
mehr anzeigen

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.