Benachrichtigungen mit Telegram einrichten

Benachrichtigungen im SmartHome sind Basisfunktionen, mit denen man immer auf dem aktuellen Stand ist, wenn sich Zustände im Haus ändern. Für HomeMatic kann dies mit einem Programm umgesetzt werden, dass die Benachrichtigungen über „Telegram“ versendet.

Vorwort

Vor der Nutzung von Telegram habe ich auch schon die Alternative PushOver ausprobiert. Bei meinen Tests kamen die Telegram-Nachrichten aber schneller an und die App ist auch noch kostenlos.

Zum Beginn meiner Tests, habe ich den Versandaufruf direkt in den jeweiligen Programmen eingebaut. Das Vorgehen hat sich leider als nicht wartungsfreundlich herausgestellt, da ich immer wieder die verschiedensten Skripte anpassen muss. Mit der folgenden Anleitung wird für den Telegram-Versand ein zusätzliches Programm angelegt, das den Nachrichtentext aus einer Systemvariable sendet. Die eigentlichen Benachrichtigungsprogramme enthalten bei mir nur noch das Befüllen der Systemvariable mit einem Text. Ist diese befüllt, stößt das Telegramm-Versand-Programm den Versand an. Somit kann ich an zentraler Stelle in der HomeMaticCCU das Versandskript anpassen und zentral warten.

Telegram einrichten

Zur Nutzung von Telegramm als Nachrichtendienst muss ein Telegram-Bot angelegt sein und man muss dessen Bot-ID und Chat-ID kennen. Eine Anleitung zum Einrichten von Telegram und dem Anlegen des Chat-Bots gibt es hier.

CUxD einrichten

Weiterhin muss auf der CCU das Plugin Cux-Daemon installiert werden, um die instabile navtive Funktion system.Exec() nicht genutzt werden muss. Folgende Seiten sind hierfür sehr hilfreich:

Nach der Installation wird ein neues CuxD-Gerät im Plugin angelegt und das Gerät im Posteingang der CCU bestätigt. Im neuen Gerät merkt man sich die Seriennummer wie z.B. CUX2801001:1

Systemvariable einrichten

Nachdem man das CUxD-Gerät hinzugefügt hat, muss noch eine Systemvariable angelegt werden. Der Typ der neuen Systemvariablen ist „Zeichenkette“, der Name ist „Telegram“. Der Name wird auch bei allen Beispielen hier auf den Seiten genutzt, aber prinzipiell ist er frei wählbar. Sollte man sich für einen anderen Namen entscheiden, muss der Variablenname in den jeweiligen Skripten auch angepasst werden.

Variable „Telegram“ in der CCU

CCU-Programm anlegen

Das Programm zum Absenden einer Nachricht muss wie folgt erstellt werden:
WENN „Systemzustand“ Telegramm = <leer> „bei Aktualisierung auslösen“
DANN <passiert nichts>
SONST
„Skript“ ausführen „verzögert um 2 Sekunden“

CCU Programm zum Versandt von Benachrichtigungen per Telegram

Ich lasse hier bewusst das Skript verzögert senden, da bei meiner CCU2 bei sofortigem Versand viele Nachrichten leider nicht ankamen, wo auch immer sie hängen geblieben sind. Mit der eingebauten Verzögerung gab es keine Probleme mehr.

Als Skript nutze ich aktuell das von Christian Lütgens.

! HomeMatic-Script
! TELEGRAM-FRAMEWORK
! http://www.christian-luetgens.de/homematic/telegram/telegramframework/T-Framework.htm

object o_msg = dom.GetObject ("Telegram");
if (o_msg.Value() != "") {
  string s_cmd = "wget --no-check-certificate --quiet -O /dev/null \"https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=XXXXXXXX&text=" # o_msg.Value() # "\"";
  dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State (s_cmd);
  o_msg.State ("");
}

!  Ende des Scripts

Angepasst werden muss die Bot-ID und die Chat-ID. Ggf. muss noch die CuxD-Gerätenummer angepasst werden.

Die Nachricht, die später in der Variable gespeichert und gesendet wird ist frei definierbar, aber Umlaute und Sonderzeichen (Ä, Ö, Ü, ä, ö, ü, ß, &) dürfen nicht genutzt werden, diese werden in der Telegram-App nicht korrekt angezeigt, da sie URL-encoded gesendet werden müssten. Hier findet sich auch noch eine weitere Skriptvariante, die auch die Umlaute URL-encoded.

4 Antworten auf „Benachrichtigungen mit Telegram einrichten“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.