This article is also available in the following other languages / Dieser Beitrag ist auch in folgenden anderen Sprachen verfügbar: English

Smarte Türklingel selbst bauen

2021-01-08 - christian - electronics, esphome, home assistant, smart home

Den Plan meine Türklingel in Home Assistant einzubinden hatte ich schon lange. 2018 fragte ich einen Arbeits­kollegen der Elektrik gelernt hatte, wie man das am besten macht.

Ein paar Tage später legte er mir einen Schaltplan auf den Tisch und versuchte mir zu erklären, was zu tun ist. Ich hab es aber nicht verstanden, da ich keinerlei Grundkenntnisse hatte.

Der Plan wanderte in mein Notizbuch und tauchte über die Jahre immer mal wieder auf. Ich hatte dann auch mal ein paar Teile bestellt und rumprobiert, aber es hat nie so richtig geklappt.

Wie man an den Beiträgen der letzten Wochen erkennen kann, habe ich mich jetzt durchgebissen und es tatsächlich hinbekommen. Menschen mit Elektonrik Skills verdrehen jetzt bestimmt die Augen, aber für mich ist das was großes. :-)

Türklingel in Home Assistant

Türklingel

Die verbaute Türklingel ist eine simple 12 Volt Wechselstrom Schaltung. Wird der Taster gedrückt, drückt der Elektromagnet in der Klingel den Schlägel an den Gong.

Smarthome

Home Assistant habe ich wie gesagt schon lange im Einsatz, vor einigen Monaten neu dazu gekommen ist ESPHome, mit dem man extrem einfach ESP32 Boards ohne eine Zeile Code zu schreiben benutzen kann um Sensoren oder Aktoren anzusteuern.

Das ESP32 Board wird mit 5 Volt Gleichstrom betrieben. Das 12V Wechselstrom­signal muss also gleichgerichtet und sicher an den mit 5 Volt betriebenen ESP32 angeschlossen werden.

Schaltung

Die Schaltung besteht aus drei Komponenten.

Das Klingelsignal wird mit einer Diode und einem Kondensator gleichgerichtet und anschließend mit einem Widerstand so weit runter gedrückt, dass eine LED angesteuert werden kann.

Statt einer einfachen LED kommt ein Optokoppler zum Einsatz. Ein Optokoppler besteht aus einer LED und einen Fotosensor, und ermöglicht so das Schalten eines Stromkreises von einem anderen.

Klingel und ESP32 sind also von einander getrennt, der ESP32 hat seine eigene Stromquelle.

Die Ausgangspins von dem Optokoppler werden an den ESP32 angeschlossen. Für den ESP32 ist dies das gleiche, als wenn man einen einfachen Taster anschließt.

Schaltung

Teile

  • 1x 1N4001 Gleichrichter Diode
    Es hat keinen besonderen Grund genau diese Diode zu nutzen, ich hatte die halt noch. Die Diode sollte aber auf jeden Fall eine Gleichrichter­diode sein!
     
  • 1x Kondsensator 220µF 25VDC
    Man kann die Größe des Kondensators berechnen, ich habe aber einfach auf dem Oszilloskop geschaut, bei welcher Kapazität die Reaktionszeit am besten/schnellsten ist.
     
  • 1x CNY17-2 Optokoppler
    Das Optokoppler Modell hat mein Kollege vorgegeben. Es gibt sichlich auch andere Modelle, mit denen das genau so gut funktioniert.
     
  • 1x 820 Ohm Widerstand (Bei einer 12V Klingel)
    Die Größe des Widerstands ergibt sich aus dem Datenblatt des Optokopplers und kann mit der Formel für die Berechnung eines LED Vorwiderstands berechnet werden.
     
  • 1x 12k Ohm Widerstand
    Pull-Down Widerstand für das Eingangssignal am ESP32.

Schaltung auf dem Breadboard

Bild in Groß

ESPHome

Wie bereits erwähnt erspart ESPHome jegliches schreiben von Code. Welche Komponenten es gibt und wie diese miteinander kommunizieren wird mit YAML definiert.

Die Kommunikation “nach außen” wird über MQTT realisiert, dafür betreibe ich einen Mosquitto Broker.

esphome:
  name: esp_floor
  platform: ESP32
  board: nodemcu-32s

wifi:
  ssid: "ExampleWifi"
  password: "password1"

binary_sensor:
  - platform: gpio
    pin:
      number: 26
      mode: INPUT_PULLDOWN
    name: "Door Bell"
    state_topic: smarthome/floor/door_bell
    filters:
      - delayed_off: 100ms
    on_press:
      then:
        - output.turn_on: led18
    on_release:
      then:
        - output.turn_off: led18

output:
  - platform: gpio
    id: led18
    pin:
      number: 18

mqtt:
  broker: 192.168.1.1
  username: esphome
  password: password1
  discovery: True
  discovery_retain: True
  topic_prefix: smarthome/floor

Der binary_sensor ist der Pin an dem der Optokoppler hängt. Ob die Klingel gerade gedrückt wurde oder nicht, wird über den MQTT Topic smarthome/floor/door_bell veröffentlicht.

Gleichzeitig unterstützt ESPHome aber auch eigene Automationen, so schaltet der Sensor mit on_press und on_release eine LED (mit passenden Vorwiderstand) an Pin 18 entsprechend an oder aus.

Home Assistant

Und nun zu dem besten Teil an ESPHome, der Auto-Discovery von Sensoren. Der MQTT Bus ist auch in Home Assistant eingebunden und neue Sensoren werden automatisch angelegt.

Die dunkle Magie machen dabei die Einstellungen discovery und discovery_retain, welche über automatisch generiete Topics in MQTT Metadaten zur Anlage der Sensoren an Home Assistant senden.

Der Binary Sensor in Home Assistant kann nun zum Beispiel dafür benutzt werden, Benachrichtigungen zu verschicken oder eine Lampe blinken zu lassen.

Türklingel in Home Assistant

Vielen Dank an alle, die mit sehr sehr viel Geduld meine ganzen Fragen beantwortet haben. :-)


serverless.industries BG by Carl Lender (CC BY 2.0)
653345fd 2021-08-01 20:30