Benachrichtigungen machen aus der stillen Automatisierung ein System, das sich meldet, wenn es darauf ankommt: wenn beim Verlassen des Hauses ein Fenster offen geblieben ist, wenn FHEM neu gestartet wurde oder wenn ein Ereignis Aufmerksamkeit braucht. Hier wird dafür ein Messenger-Bot eingesetzt, der Nachrichten direkt auf das Smartphone schickt. Diese Seite zeigt die Einrichtung des Bots, das Auslösen von Meldungen aus Regeln heraus und einen Wartungsmodus, der das System bei Arbeiten ruhigstellt. Alle Tokens, IDs und Namen sind Platzhalter.
Messenger-Bot einrichten
Für Push-Nachrichten wird das Modul TelegramBot verwendet. Der Bot wird einmalig über den BotFather des Messengers erstellt; das dabei erzeugte Token wird beim Anlegen hinterlegt. Wichtig sind außerdem die Sicherheitsattribute, damit nur berechtigte Empfänger mit dem Bot kommunizieren können.
define Telegram TelegramBot 0000000:XXXXXXXXXXXXXXXXXXXXXXXXX
attr Telegram defaultPeer @DeinBenutzername
attr Telegram cmdRestrictedPeer 123456789
attr Telegram allowUnknownContacts 0
attr Telegram pollingTimeout 120
attr Telegram room hiddendefaultPeer– Standard-Empfänger aller Nachrichten.cmdRestrictedPeer– nur diese Chat-ID darf Befehle an den Bot senden.allowUnknownContacts 0– unbekannte Kontakte werden ignoriert.pollingTimeout 120– hält die Verbindung dauerhaft offen, damit Nachrichten sofort ankommen.
Ein erster Test stellt sicher, dass die Zustellung funktioniert:
set Telegram message FHEM ist online und sendebereit.Startmeldung beim Hochfahren
Praktisch ist eine automatische Nachricht, sobald FHEM nach einem Neustart oder einem Reload vollständig hochgefahren ist. Ein notify reagiert dafür auf das systemweite Ereignis global:INITIALIZED:
define n_fhem_start notify global:INITIALIZED set Telegram message FHEM wurde neu gestartet.
attr n_fhem_start room hiddenMeldung aus einer Regel auslösen
Benachrichtigungen entfalten ihren Nutzen vor allem in Kombination mit anderen Automatisierungen. Ein typisches Beispiel: Bleibt ein Fenster geöffnet, soll eine Erinnerung verschickt werden. Dies lässt sich direkt in die fenstergesteuerte Heizungsregel (siehe Heizungssteuerung) integrieren – die Nachricht wird dort einfach als zusätzlicher Befehl im „Fenster offen"-Zweig ergänzt:
define di_Fenster_Erinnerung DOIF ([Fensterkontakt_Badezimmer:state] =~ "opened")
(set Telegram message Fenster im Badezimmer bitte schließen!)
attr di_Fenster_Erinnerung wait 420
attr di_Fenster_Erinnerung room BenachrichtigungenDas wait 420 verzögert die Meldung um sieben Minuten: Kurzes Stoßlüften löst also keine Nachricht aus – erst ein dauerhaft offenes Fenster wird gemeldet.
Wartungsmodus zum Stummschalten
Bei Arbeiten an der Anlage – etwa beim Anlernen neuer Geräte – würden ständig Test-Ereignisse Meldungen auslösen. Ein Wartungsmodus als Dummy-Schalter unterbindet das zentral. Die Benachrichtigungsregeln fragen diesen Schalter ab und schweigen, solange er aktiv ist.
define WartungsModus dummy
attr WartungsModus setList true false
attr WartungsModus room BenachrichtigungenIn der Regel wird der Wartungsmodus als zusätzliche Bedingung berücksichtigt:
define di_Fenster_Erinnerung DOIF ([Fensterkontakt_Badezimmer:state] =~ "opened" and [WartungsModus:state] eq "false")
(set Telegram message Fenster im Badezimmer bitte schließen!)
attr di_Fenster_Erinnerung wait 420
attr di_Fenster_Erinnerung room BenachrichtigungenKomfortabel lässt sich der Schalter sogar per Messenger-Befehl umlegen. Über das Attribut favorites bietet der Bot dafür eine Schnellauswahl an:
attr Telegram favorites set WartungsModus true;; set WartungsModus false
attr Telegram cmdFavorites /WartungTest und Speichern
- Mit
set Telegram message Testdie Zustellung prüfen. - Ein Fenster öffnen und nach Ablauf der Wartezeit kontrollieren, ob die Erinnerung kommt – bei aktivem Wartungsmodus darf keine Nachricht erscheinen.
- Konfiguration sichern:
saveDamit verfügt das System über zuverlässige, gezielte Benachrichtigungen, die zwischen belanglosen und wichtigen Ereignissen unterscheiden und sich bei Wartungsarbeiten zentral stummschalten lassen.
