Springe zum Inhalt

Türklingel mit Home Assistant und Telegram auf das Handy weiterleiten

Wenn wir im Garten sitzen bekommen wir es leider nicht mit wenn jemand an der Tür klingelt. Ich habe deshalb nach Möglichkeiten gesucht, das Signal irgendwie weiterzuleiten. Und ich wurde bei ELV fündig: dort gibt es das Homematic Modul HM-Sen-DB-PCB. Das ist mit wenigen Handgriffen fertig bestückt und in ein Gehäuse verpackt. 

Der zusammengebaute HomeMatic Wireless Doorbell Sensor

Statt Batterien werde ich die Spannung per Step-Down-Konverter an der Klingel abgreifen.  Der Draht am Push Button dient zum Testen.

Es folgt das Versetzen von Homegear in den Anlern-Modus und drücken des Tasters am Sensor zum Pairen.

Anlernen des HomeMatic-Sensors: Install Mode aktivieren

Nach dem Anlernen stellte sich heraus, dass der Sensor in HomeAssistant nur als Batteriesensor auftaucht. Nach etwas Nachlesen erklärte sich, dass das Absicht bei dieser Art von Sensoren ist. Per sudo homegear -r konnte ich mich davon überzeugen, dass das Gerät korrekt angelernt wurde.

Alles gut laut Homegear Konsole

Daher musste etwas anderes zum Testen her: Telegram. Einen Bot hatte ich mir schon vor einigen Jahren zum Spielen angelegt.

Nach dem Erstellen des Bots können kann die Konfiguration in der Datei configuration.yml angepasst werden... Da der Raspberry aktuell nicht aus dem Internet erreichbar ist muss als Empfangsmethode polling verwendet werden (ansonsten würde sich webhooks anbieten).

# telegram
telegram_bot:
- platform: polling
api_key: "xxxxxxxxxx"
parse_mode: html
allowed_chat_ids:
- 1111111111
# notifications via telegram
notify:
- name: telegram_notifier
platform: telegram
chat_id: 1111111111

Anschließend Neustart: sudo systemctl restart home-assistant@homeassistant.service

Testen kann man dann mit den Entwicklertools - Der Dienst heißt hier (laut name Parameter) notify.telegram_notifier, dort wird die message als Parameter angegeben und Call Service geklickt. Innerhalb von 1-2 Sekunden sollte die Meldung im Telegram-Client auftauchen. 

Als nächstes kommt die Weiterleitung des Klingel-Signals auf's Handy. Man legt eine Automatisierung an. Das geht über die WebUI oder direkt in der automation.yml.

- id: 'hma01'
alias: "Türklingel auf Telegram"
trigger:
platform: event
event_type: homematic.keypress
event_data:
name: Doorbell
channel: 1
param: PRESS_SHORT
action:
service: notify.telegram_notifier
data:
message: "Türklingel betätigt"

Nach einem Neustart taucht die Regel in der GUI auf.

Der erste Test bestätigt: funktioniert NICHT.

Ein Blick in das Homegear-Log:

07/12/20 21:24:44.616 HomeMatic BidCoS packet received (My-C1101-Module, RSSI: -34 dBm): 0B04A2406DF794FD96230104
07/12/20 21:24:44.619 Module HomeMatic BidCoS: Info: INSTALL_TEST on channel 1 of HomeMatic BidCoS peer 3 with serial number QEQ0889114 was set to 0x04.
07/12/20 21:24:44.620 Module HomeMatic BidCoS: Info: PRESS_SHORT on channel 1 of HomeMatic BidCoS peer 3 with serial number QEQ0889114 was set to 0x04.

Und das HomeAssistant-Log:

2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic._hm] RPCFunctions.event: interface_id = homeassistant-wireless, address = QEQ0889114:0, value_key = RSSI_DEVICE, value = -34
2020-07-12 21:24:44 INFO (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: address=QEQ0889114:0, interface_id=homeassistant-wireless, key=RSSI_DEVICE, value=-34
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: Using callback functools.partial(<function _hm_event_handler at 0x689b5b70>, <homeassistant.core.HomeAssistant object at 0x753efeb0>, 'wireless')
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic._hm] RPCFunctions.event: interface_id = homeassistant-wireless, address = QEQ0889114:0, value_key = LOWBAT, value = False
2020-07-12 21:24:44 INFO (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: address=QEQ0889114:0, interface_id=homeassistant-wireless, key=LOWBAT, value=False
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: Using callback functools.partial(<function _hm_event_handler at 0x689b5b70>, <homeassistant.core.HomeAssistant object at 0x753efeb0>, 'wireless')
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic._hm] RPCFunctions.event: interface_id = homeassistant-wireless, address = QEQ0889114:1, value_key = INSTALL_TEST, value = True
2020-07-12 21:24:44 INFO (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: address=QEQ0889114:1, interface_id=homeassistant-wireless, key=INSTALL_TEST, value=True
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: Using callback functools.partial(<function _hm_event_handler at 0x689b5b70>, <homeassistant.core.HomeAssistant object at 0x753efeb0>, 'wireless')
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic._hm] RPCFunctions.event: interface_id = homeassistant-wireless, address = QEQ0889114:1, value_key = PRESS_SHORT, value = True
2020-07-12 21:24:44 INFO (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: address=QEQ0889114:1, interface_id=homeassistant-wireless, key=PRESS_SHORT, value=True
2020-07-12 21:24:44 DEBUG (Thread-2) [pyhomematic.devicetypes.generic] HMGeneric.event: Using callback functools.partial(<function _hm_event_handler at 0x689b5b70>, <homeassistant.core.HomeAssistant object at 0x753efeb0>, 'wireless')
2020-07-12 21:24:44 DEBUG (Thread-2) [homeassistant.components.homematic] Event PRESS_SHORT for QEQ0889114 channel 1
2020-07-12 21:24:44 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event homematic.keypress[L]: name=QEQ0889114, param=PRESS_SHORT, channel=1>

Sieht gut aus. Die letzte Zeile verrät das Problem: Natürlich muss für den Trigger der name korrekt gesetzt sein, statt Doorbell in meinem Fall also QEQ0889114. Nach Anpassung der automation.yml und einem erneuten Neustart von HomeAssistant klappt alles.

Beim Erkennen der Türklingel kommt eine Nachricht auf Telegram
Das Modul fertig verbaut und an der vorhandenen MP3-Türklingel für Klingelsignal und Stromversorgung angeschlossen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.