Home Assistant + Signal: Benachrichtigungen für das Smart Home
Wer Kinder in der Gehirnumbauphase hat, kennt das Problem: Licht bleibt gerne mal an, Fenster bleiben gerne mal offen. Meine Frau behauptet zwar, dass ihre kalten Füße der beste Sensor wären, um offene Fenster zu erkennen, aber erstens kriegen meine Kinder leider davon nichts mit und zweitens ist es dann schon zu spät. Aus diesem Grund wollte ich eine Lösung haben, damit die Dachfenster nicht Stunden geöffnet bleiben und wir für den Frieden heizen. Egal ob offene Fenster, Waschmaschine fertig oder kleine Statusmeldungen – solche Informationen möchte ich direkt und unkompliziert auf meinem Smartphone erhalten, auch unterwegs. Außerdem sollen die Kinder erinnert werden, wenn die Fenster länger als 20 Minuten offen sind und zwar über ein Gerät, mit dem sie fest verwachsen sind.
Da in meiner Familie eh schon alle den Messenger Signal nutzen, bot es sich an, diesen auch für die Benachrichtigungen zu verwenden. Signal ist auf allen Geräten verfügbar und lässt sich mit ein wenig Aufwand in Home Assistant einbinden und es gibt eine offizielle Anbindung. In diesem Beitrag zeige ich, wie ich die Einrichtung vorgenommen habe und wie ich Signal z. B. für meine Fensterüberwachung nutze. Ich habe mich dabei entschieden, meine bereits registrierte Nummer zu nutzen, d.h. alle anderen bekommen die Nachricht von meinem Account. Wer das nicht möchte, braucht eine eigene Nummer, die vorher noch registriert werden muss.
Einrichtung der Signal-Integration in Home Assistant
Für die Integration benötigt man das Add-on Signal Messenger, das die signal-cli REST API zur Verfügung stellt.
Schritt 1: Add-on installieren
Wer keine manuelle Docker-Installation machen möchte, kann sich für das Add-on ein Repository hinzufügen und nach einem Neustart unter Einstellungen -> Addons einfach „Signal Messenger“ auswählen und installieren.
Schritt 2: QR-Code erzeugen
Damit das Add-on als Gerät bei Signal registriert wird, muss zwingend ein QR-Code über die Konsole erzeugt werden. In der Home Assistant Konsole (SSH Add-on oder Terminal) ausführen:
curl -H "Content-Type: application/json" \
-o /config/qr.png \
"http://ip-der-ha-instanz:8080/v1/qrcodelink?device_name=HomeAssistant"
💡 Hinweis:ip-der-ha-instanz durch deine Home-Assistant-IP ersetzen, z. B.:
http://192.168.1.38:8080
device_name solltet man so wählen, wie er nachher in Signal bei den gekoppelten Geräten angezeigt werden soll. Der QR-Code wird beim Aufruf des Befehls unter /config/qr.png gespeichert.
QR-Code anzeigen und Gerät koppeln
In Home Assistant kann man die Datei z.B. mit dem File Editor anschauen und z. B. sein Smartphone dann zum Einbinden von Home Assistant verwenden (Signal -> Einstellungen -> Gekoppelte Geräte -> Neues Gerät koppeln). Einfach auf das Bild klicken und dann mit der Signal-App scannen.
Damit ist das Signal-Add-on als Gerät unter seiner eigenen Nummer registriert und kann Nachrichten senden. Wer ein neues Konto mit einer neuen Nummer anlegen möchte, kann das aber auch.
Schritt 3: notify-Dienste in Homeassistant einrichten
Nach der Kopplung muss man noch notify-Dienste hinzufügen, damit man Nachrichten über Signal verschicken kann. Dafür ergänzt man die configuration.yaml mit dem File Editor:
Meine Einträge in der configuration.yaml
Um Home Assistant mitzuteilen, an wen Nachrichten geschickt werden sollen, habe ich Folgendes eingetragen:
notify:
- platform: signal_messenger
name: signal_kind1
number: "+491111111111" # meine Nummer
url: "http://ip-der-ha-instanz:8080"
recipient: "+491234567890" # Kind1
- platform: signal_messenger
name: signal_kind2
number: "+491111111111" # meine Nummer
url: "http://ip-der-ha-instanz:8080"
recipient: "+491234567891" # Kind2
- platform: signal_messenger
name: signal_alle
number: "+491111111111" # meine Nummer
url: "http://ip-der-ha-instanz:8080"
recipients:
- "+491234567890" # Kind1
- "+491234567891" # Kind2
Nach einem Neustart sind diese Dienste sofort nutzbar. Man kann prinzipiell auch Gruppen nutzen, braucht dann aber die Gruppen-ID, das habe ich aber noch nicht probiert.
Praxisbeispiel: Fenster über 20 Minuten offen
Ich habe jetzt alle vier Fenster unterm Dach mit Kontaktsensoren ausgestattet.
Sobald eines davon länger als 15 Minuten geöffnet bleibt, sollen Kind1 und Kind2 eine kurze Nachricht bekommen.
Hier die Automation als YAML:
alias: Fenster länger als 15 min offen → Signal an Kinder
description: >
Sendet eine Signal-Nachricht, wenn eines der Fenster länger als 15 Minuten
offen bleibt – aber nur an anwesende Personen.
triggers:
- entity_id:
- binary_sensor.sensor_fenster_bad_contact
- binary_sensor.sensor_fenster_kind2_contact
- binary_sensor.sensor_fenster_kind1_contact
- binary_sensor.sensor_fenster_vorraum_contact
to: "on"
for: "00:15:00"
trigger: state
conditions: []
actions:
- choose:
- conditions:
- condition: state
entity_id: person.kind2
state: home
sequence:
- action: notify.signal_kind2
data:
message: >
🤖 Das Fenster "{{ trigger.to_state.name | replace('Sensor Fenster ', '') }}" ist seit über 15 Minuten geöffnet. Bitte schließen! 😘
- conditions:
- condition: state
entity_id: person.kind1
state: home
sequence:
- action: notify.signal_kind1
data:
message: >
🤖 Das Fenster "{{ trigger.to_state.name | replace('Sensor Fenster ', '') }}" ist seit über 15 Minuten geöffnet. Bitte schließen! 😘
mode: parallel
Die Automation schickt an alle Kinder, die auch zu Hause sind, eine Nachricht, das bitte das Fenster geschlossen werden soll. Der Name des Fensters wird automatisch aus dem jeweiligen Sensor übernommen. Die replace-Befehle verschönern einfach die Ausgabe der Nachricht.
Was soll ich sagen? Es funktioniert!


Fazit
Es ist ein wenig Aufwand, das einmalig einzurichten. Danach kann ich aber jetzt in jeder Automation auch zusätzlich eine Benachrichtigung aufs Smartphone bekommen oder an Familienmitglieder schicken.
P.S.: Der Text kann Spuren von LLM enthalten, vor allem die YAML-Files mache ich mittlerweile gerne mit externer Hilfe, da es echt gut funktioniert und mir elende Klickerei erspart.