Erkennen, ob etwas offen oder geschlossen ist.
ESPHome Türkontakt mit ESP32:
Tür auf, Tür zu in Home Assistant
Ein Reedkontakt oder Endschalter kennt nur zwei Zustände. Genau deshalb ist er perfekt für ESPHome: offen oder geschlossen, gedrückt oder nicht gedrückt, Tor oben oder Tor unten.
Mit zwei Drähten wird aus einem simplen Kontakt ein Home-Assistant-Sensor.

Klappe bewegt? Home Assistant kann eine Nachricht schicken.
Endschalter melden „ganz offen“ oder „ganz geschlossen“.
Ein einfacher Druck kann eine Automation, Szene oder ein Skript auslösen.
🔌 Einfachster Aufbau
Ein Anschluss des Kontakts kommt an einen freien GPIO, der andere an GND. Im ESP32 aktivieren wir den internen Pull-up-Widerstand.
Watt ist ein Pull-up?
Ist der Kontakt offen, darf der GPIO nicht elektrisch „in der Luft hängen“. Der interne Pull-up zieht ihn deshalb auf einen definierten HIGH-Zustand. Schließt der Kontakt nach GND, wird daraus LOW.
Kontakt als Binary Sensor anlegen
Für einen typischen Reedkontakt, der bei geschlossener Tür den GPIO mit GND verbindet, reicht folgende Grundkonfiguration. device_class: door sorgt dafür, dass Home Assistant den Zustand passend als Tür darstellt.
binary_sensor:
- platform: gpio
name: "Terrassentuer"
device_class: door
pin:
number: GPIO18
mode:
input: true
pullup: trueinverted: true?Bei unserem Beispiel ist der Reedkontakt bei geschlossener Tür geschlossen und zieht den Pin auf LOW. LOW bedeutet dann „Tür geschlossen“, HIGH bedeutet „Tür offen“. Das passt direkt zur Home-Assistant-Türlogik. Bei einem anders arbeitenden Kontakt kann es genau umgekehrt sein – dann hilft inverted: true.
Entprellen
Mechanische Kontakte können beim Umschalten für wenige Millisekunden mehrfach hin- und herspringen. Das nennt man Prellen.
ESPHome filtert
Mit delayed_on_off akzeptieren wir den neuen Zustand erst, wenn er kurz stabil geblieben ist.
binary_sensor:
- platform: gpio
name: "Terrassentuer"
device_class: door
pin:
number: GPIO18
mode:
input: true
pullup: true
filters:
- delayed_on_off: 30msOffen und geschlossen prüfen
Nach dem Update öffnest du die ESPHome-Logs oder direkt die Entität in Home Assistant. Tür schließen, Tür öffnen – der Zustand muss jeweils sauber wechseln. Zeigt Home Assistant genau das Gegenteil, ergänzen wir inverted: true.
pin:
number: GPIO18
inverted: true
mode:
input: true
pullup: true🚗 Praxisidee: Garagentor mit zwei Endschaltern
Mit zwei Kontakten wird es richtig interessant:
- Endschalter unten aktiv → Tor ist geschlossen
- Endschalter oben aktiv → Tor ist offen
- keiner aktiv → Tor befindet sich irgendwo dazwischen
Damit lässt sich später in Home Assistant sogar „öffnet“, „schließt“ oder „Zwischenposition“ ableiten. Genau solche Projekte machen aus ESPHome mehr als nur Basteln.
Nicht jeder Pin ist auf jedem ESP32-Board gleich geeignet. Einige Pins sind beim Start oder für Flash-Funktionen reserviert. Deshalb gilt bei einem konkreten Board: Pinbelegung kurz prüfen, bevor du viele Kabel anschließt.
Prompt: „Ich möchte mit ESPHome einen Reedkontakt an einem ESP32 als Türsensor verwenden. Der Kontakt liegt zwischen GPIO18 und GND und ist bei geschlossener Tür geschlossen. Erstelle mir die YAML-Konfiguration mit internem Pull-up, passender device_class und 30 ms Entprellung. Erkläre mir außerdem, wann ich inverted: true brauche.“
Mehr als 0 und 1: analoge Sensoren
In Folge 6 geht es um Werte zwischen „aus“ und „an“: Helligkeit, Spannung, Druck oder Füllstand. Dann wird aus dem simplen GPIO ein echter Messkanal.
ESPHome nutzt für einfache Kontakte den gpio-Binary-Sensor. Interne Pull-up-Widerstände lassen sich im Pin-Schema aktivieren; invertierte Logik wird bei Bedarf mit inverted abgebildet. Kurze Filter wie delayed_on_off helfen beim Entprellen mechanischer Kontakte.
ESPHome: GPIO Binary Sensor ↗
ESPHome: Binary Sensor Filters ↗