04 / Blog

ZigBee-Türklingel Sensor mit ESP32-C6

Meine Türklingel ist alt, analog und absolut zuverlässig. Jemand drückt, ein Summer schrillt, fertig. Das Problem: Ich höre die Klingel nicht, wenn ich im Homeoffice Kopfhörer aufhabe oder im Garten sitze. Statt die ganze Klingel gegen eine Smart-Variante zu tauschen, wollte ich einfach eine Benachrichtigung aufs Handy.

Die Idee

Türklingeln laufen meist mit 8 bis 12 V, in meinem Fall 9 V. Drückt jemand den Knopf, fließt Strom. Ich muss also gar nicht in die Verkabelung eingreifen, sondern nur erkennen, ob gerade Spannung anliegt. Dafür klemme ich einen winzigen Spannungssensor parallel an die Klingel und lese ihn mit einem Mikrocontroller aus.

Hardware

Die Teileliste ist kurz:

  • ESP32-C6, der ZigBee schon nativ an Bord hat, also ohne Zusatzmodul
  • Spannungssensor-Board für etwa 0,50 €, im Grunde ein Spannungsteiler, der die 9 V der Klingel auf ADC-taugliche 3,3 V herunterskaliert

Kein Relais, kein Schaltungsgebastel. Der ESP32 hängt an einem alten Handynetzteil.

Der eigentliche Trick: die Firmware

Ich wollte keinen eigenen ZigBee-Cluster für Türklingeln schreiben, also zweckentfremde ich den ZigbeeOccupancySensor aus der Espressif-Bibliothek. Home Assistant sieht ihn als binären Sensor (belegt / frei), und genau das brauche ich.

Der ADC liest den Pin, ein Schwellenwert entscheidet, ob geklingelt wird.

Den kompletten Sketch, inklusive Pin-Konfiguration und Factory-Reset über den BOOT-Button, gibt es als Gist.

Beim Flashen muss man in der Arduino IDE nur an zwei Stellen denken: Zigbee mode auf ED (End Device) stellen und ein passendes Partition Scheme wählen. Sonst startet der ZigBee-Stack gar nicht.

Home Assistant

Nach dem Pairing taucht der Sensor automatisch in HA auf. Die Automatisierung ist denkbar simpel: Sensor wechselt auf on, Benachrichtigung aufs Handy.

Fazit

Unter einer Stunde Arbeit, unter 10 € Materialkosten. ZigBee läuft dabei stabiler als eine WLAN-Lösung: kein WLAN-Passwort im Code, und nach einem Stromausfall verbindet sich der ESP32 von allein wieder.