Homematic: Benachrichtigungen von CCU per Telegram-Bot an Gruppe schicken
Alarmmeldungen oder Statusänderungen von Programmen der Homematic-Hausautomatisierung an das Mobiltelefon schicken? Kostenlos? Ganz ohne zusätzliche Homematic Add-Ons? Kein Problem. Wir erstellen uns einen Bot für den Messenger „Telegram“ und lassen über ein in Programme eingebundenes Script die Aussendungen durch den Telegram-Bot triggern.
In diesem Szenario wollen wir unsere mobilen Endgeräte mit Nachrichten aus der Homematic CCU (Affiliate-Link) versorgen. Das können dann zum Beispiel Alarmmeldungen sein wie „ALARM – Badezimmerfenster wurde geöffnet“ oder „STATUS – Alarmanlage scharf“.
Idealerweise erreichen diese Statusmeldungen nicht nur eine Person, sondern gleich mehrere Bewohner eines automatisierten Haushaltes. Sinnvoller Weise soll also eine Gruppe im Telegram-Messenger die Benachrichtigungen der Homematic CCU (Affiliate-Link) als Push-Nachricht erhalten.
Wie funktioniert das? Ganz einfach. Bei Eintritt einer bestimmten Bedingung innerhalb eines Homematic-Programms öffnet die Homematic eine entfernte URL. Dabei handelt es sich um eine URL, welche über die API des Messengers „Telegram“ bereitgestellt wird. Bei diesem Remote-Function-Call wird der angesprochene Bot (quasi das Sprachrohr der Übertragung), die Zielgruppe der Aussendung und die eigentliche Nachricht als Parameter in der URL übergeben und vom Telegram-Server interpretiert. Idealerweise erfolgt darauf eine Handlung des Bots, in unserem Falle eben die Aussendung der genannten Daten.
- Die leistungsstarke Zentrale für Smart-Home-Profis zur lokalen und komfortablen Steuerung des intelligenten Zuhauses.
- Bietet zahlreiche und individuelle Konfigurations- sowie Steuermöglichkeiten über die bewährte WebUI per Webbrowser
Folgt den nächsten Steps um genau das zu realisieren.
Wir brauchen einen Telegram-Bot
- Öffnet „Telegram“ auf dem Mobiltelefon/Tablet.
- Sucht den Bot „BotFather“ über die Suchfunktion der App und wählt diesen aus. Klickt anschließend auf die Schaltfläche „Starten“ um eine Konversation zu beginnen.
- Die Eingabe von „/newbot“ erzeugt einen neuen Bot. Im nächsten Step vergebt nun einen Namen für den Bot und einen Benutzernamen. Ich empfehle an dieser Stelle einen einprägsamen Namen, der nicht gleich offenbart, um welche Art von Bot es sich handelt (mich persönlich ziehen solche offenbarten Details immer magisch an um damit miese Dinge zu probieren). Der Benutzername muss mit der Zeichenfolge „bot“ enden.
- Notiert Euch den nun an Euch gesendeten API-Key ordentlich. Wir werden diesen später brauchen kopiert ihn, damit ihr ihn ohne große Aufwände auf Euren Desktop-PC/Notebook transferieren könnt.
- Nun muss der Bot noch wissen an welcher Konversation er teilnehmen soll. Der Einfachheit halber sollten wir diesen Punkt im Telegram Webclient am Desktop-PC/Notebook erledigen. Dazu brauchen wir erstmal die Konversation. Wir erstellen also zunächst eine Chat-Gruppe im Telegram. Die kann durchaus gleich heißen wie unser Bot, sollte aber ebenfalls nicht sofort den Einsatzzweck verraten.
- Wenn die Gruppe erstellt ist, schreiben wir irgendwas in die Gruppe, damit im Hintergrund auf den Telegram-Servern ein neuer Chat angelegt wird und diesem eine sogenannte Chat-ID vergeben wird.
- Nun öffnen wir IM SELBEN FENSTER folgende URL „https://api.telegram.org/botABCDEF123456/getUpdates„, wobei der rote Teil unser zuvor erhaltener API-Bot-Key ist.
- Es öffnet sich nun ein chronologischer Log unserer letzten Aktionen im Telgram-Messenger. Der letzte Eintrag müsste einen Group-Eintrag enthalten, darin wiederum einen Eintrag à la „“id“:-987654321„. Wahrscheinlich könnt Ihr die Zahl schon an dem vorangestellten Minus erkennen (signalisiert eine Gruppe). Diese ID kopiert ihr wieder in Sicherheit, mit dem vorangestellten Minus. Es handelt sich um die ID der Konversation an welche unser Bot später Nachrichten schicken soll.
- Mit den gesammelten Daten können wir die URL zusammenbauen um den Nachrichtenversand zu triggern. Beispiel: https://api.telegram.org/botABCDEF123456/sendMessage?chat_id=-987654321&text=Dies ist ein Test.
Kopiert die fertige URL, fügt Sie in die Adresszeile des Browsers ein uuund – Feuer! Eure Gruppe sollte eine Telegram-Push-Nachricht bekommen haben.
Homematic-Programm muss URL aufrufen
Öffnet ein beliebiges Programm in Eurer Homematic WebUI. Fügt diesem Programm nun einen (zusätzlichen) Dann-Block unter den Aktivitäten hinzu. Aktivitätstyp „Script“, mit Zeiteinstellung „sofort“. Klickt auf die drei kleinen Punkte und gebt im sich öffnenden oberen Fensterteil das folgende Script ein (natürlich wieder API-Bot-Key und Chat-ID durch die eigenen Daten ersetzen):
string stderr;
string stdout;
string url="\"https://api.telegram.org/botABCDEF123456/sendMessage?chat_id=-987654321&text=Dies ist ein Test. \"";
system.Exec("wget --no-check-certificate -q -O - "#url,
&stdout,
&stderr);
Speichert das Programm nun. Beim nächsten Eintreffen der Bedingung für das Programm wird als Aktion die Telegram-Nachricht an die Gruppe verschickt.
Die Gruppe kann nun bequem über das Smartphone um weitere Mitgleider erweitert werden, ohne dass der Bot oder die Homematicprogramme angepasst werden müssen.
Hagen Puttrich
Hallo,
nach Ihrer Anleitung wird doch nur der Text „Dies ist ein Test“ versendet, oder? Was muss man machen, damit die Statusmeldung selbst versendet wird?
Danke!
MfG
Hagen Puttrich