Der Miniserver bietet mit seiner App die Möglichkeit, sich per Push-Nachricht über die aktuellen Geschehnisse auf dem Laufenden halten zu lassen. Ich persönlich mag es jedoch lieber, per Telegram benachrichtigt zu werden, da auch meine anderen Smarthome-Geräte dies so tun. Hier hatte ich bereits die Grundlagen zum automatisierten Versenden von Telegram-Nachrichten beschrieben und in diesem Beitrag geht es nun darum, wie man das mit dem Loxone Miniserver (Gen. 1 & Gen. 2) nutzt und Telegram Nachrichten versendet.
Inhalt
Vorbereitung
Ich gehe davon aus, dass ihr den Bot bereits eingerichtet habt und er grundsätzlich in der Lage ist, euch per URL-Aufruf Nachrichten zu senden. Falls nicht, solltet ihr zuerst nochmal nachlesen und alles vorbereiten.
Für diesen Beitrag nutze ich folgende Beispieldaten:
- User-ID (bzw. Chat-ID):
238470164
- Token:
5035750014:AAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao
- LoxBerry IP-Adresse:
192.168.243.77
Somit ergibt sich für das direkte Absetzen einer Nachricht per Telegram folgende Beispiel-URL:
https://api.telegram.org/bot5035750014:AAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao/sendmessage?chat_id=238470164&text=Nachricht
HTTP vs. HTTPS
Bekanntermaßen ist der Miniserver Gen. 2 in der Lage verschlüsselte Verbindungen zu nutzen, somit ist bei ihm eine direkte Integration von Telegram möglich. Der Miniserver Gen. 1 kann das jedoch nicht, daher muss hier ein kleiner Umweg gemacht werden, denn die Telegram-API ist nur verschlüsselt (per HTTPS) erreichbar.
Der Umweg für die erste Generation ist, dass ein HTTP-Aufruf in HTTPS gewandelt werden muss. Dafür gibt es sicherlich verschiedene Möglichkeiten, doch die einfachste ist das LoxBerry-Plugin https2http.
Das Plugin ist schnell installiert und besitzt keine Einstellmöglichkeiten. Beim Aufruf der Plugin-Seite wird jedoch ein Konverter angeboten der im Prinzip auch schon erklärt, wie das Ganze funktioniert: Statt die Telegram-URL direkt aufzurufen wird die URL des Plugins aufgerufen und die Telegram-URL als Parameter übergeben. Den Rest macht das Plugin von alleine.
Trägt man im Konverter im oberen Feld unsere Beispiel-URL ein, so macht das Plugin daraus:
http://192.168.243.77/plugins/https2http/?url=https%3A%2F%2Fapi.telegram.org%2Fbot5035750014%3AAAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao%2Fsendmessage%3Fchat_id%3D238470164%26text%3DNachricht
Das ist nichts anderes als die Grundadresse http://192.168.243.77/plugins/https2http/?url=
gefolgt von der Ziel-Adresse, bei der alle Sonderzeichen in der Prozentdarstellung geschrieben sind. Damit können wir arbeiten.
Telegram-Benachrichtigung in Loxone Config
In Loxone Config legen wir einen neuen Virtuellen Ausgang an und nennen ihn Telegram. Je nach Version des Miniservers wird im Feld Adresse nun entweder die IP-Adresse des LoxBerry eingetragen (Gen.1 ), oder aber die Adresse der Telegram-API (Gen. 2). In diesem Beitrag zeige das immer mit dem Miniserver Gen. 1, schreibe aber die Werte für Gen. 2 daneben.
Beispiel 1: statischer Text
Anschließend legen wir einen Virtuellen Ausgang Befehl an, und tragen bei Befehl bei EIN den Rest der URL ein:
/plugins/https2http/?url=https%3A%2F%2Fapi.telegram.org%2Fbot5035750014%3AAAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao%2Fsendmessage%3Fchat_id%3D238470164%26text=Taster EIN
Als Bezeichnung für den Befehl verwende ich „tgm_Taster“ und als Text „Taster EIN“, denn wir wollen diesen Befehl gleich mit einem Taster-Baustein verknüpfen.
Virtueller Ausgang
Adresse: http://192.168.243.77
Virtueller Ausgang Befehl
Bezeichnung: tgm_Taster
Befehl bei EIN:
/plugins/https2http/?url=https%3A%2F%2Fapi.telegram.org%2Fbot5035750014%3AAAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao%2Fsendmessage%3Fchat_id%3D238470164%26text=Taster EIN
Virtueller Ausgang
Adresse: https://api.telegram.org
Virtueller Ausgang Befehl
Bezeichnung: tgm_Taster
Befehl bei EIN:
/bot5035750014:AAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao/sendmessage?chat_id=238470164&text=Taster EIN
%3D
hinter text
gegen ein =
auszutauschen, da man so direkt erkennen kann, wo der eigentliche Nachrichtentext beginnt und was dessen Inhalt ist. Der Plugin hat damit kein Problem und ruft die URL korrekt auf. Selbiges funktioniert auch mit anderen Sonderzeichen in der URL. Es gibt nur zwei Zeichen, die vermieden werden müssen: mit :
hat der Miniserver ein Problem, &
bringt das Plugin dazu, nicht zu reagieren. Jetzt muss der Ausgang nur noch mit einem Taster-Baustein verschaltet und in den Miniserver geladen werden. Durch das Betätigen des Taster-Bausteins erhält man nun die Nachricht „Taster EIN“ per Telegram zugesandt.
Beispiel 2: Text mit Werten
Nun legen wir uns einen weiteren Virtuellen Ausgang Befehl an, den ich „tgm_Schalter“ nenne. Wir wollen uns den aktuellen Zustand eines Schalters zusenden lassen, also befüllen wir die Parameter wie folgt:
Virtueller Ausgang Befehl
Bezeichnung: tgm_Schalter
Befehl bei EIN:
/plugins/https2http/?url=https%3A%2F%2Fapi.telegram.org%2Fbot5035750014%3AAAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao%2Fsendmessage%3Fchat_id%3D238470164%26text=Schalter <v>
Befehl bei AUS:
/plugins/https2http/?url=https%3A%2F%2Fapi.telegram.org%2Fbot5035750014%3AAAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao%2Fsendmessage%3Fchat_id%3D238470164%26text=Schalter <v>
Virtueller Ausgang Befehl
Bezeichnung: tgm_Schalter
Befehl bei EIN:
/bot5035750014:AAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao/sendmessage?chat_id=238470164&text=Schalter <v>
Befehl bei AUS:
/bot5035750014:AAEV9N2H0TBhtmnTv2lbvYjWMv5ERRaozao/sendmessage?chat_id=238470164&text=Schalter <v>
Der Platzhalter für dynamische Werte ist <v>
und funktioniert bei der Benachrichtigung über Telegram genauso, wie auch sonst bei virtuellen Ausgängen.
Beim Einschalten des Schalters erhalten wir die Nachricht „Schalter 1„, beim Ausschalten die Nachricht „Schalter 0„.
Ergebnis
Ein Blick in die Telegram-App zeigt uns die Nachrichten, die wir erhalten haben:
Wie man die Benachrichtigung nun am besten nutzt ist sicherlich eine sehr individuelle Sache. Durch die Platzhalter für dynamische Werte hat man jedoch sehr viele Möglichkeiten.
Fehlersuche
Sollte etwas nicht wie gewünscht funktionieren oder die Nachricht einfach nicht ankommen wollen, dann hilft ein Blick in das Logfile vom https2http-Plugin. Man kann sehen, ob der Aufruf überhaupt da angekommen ist und wie die Antwort von der Telegram-API lautete.
Weiterführende Links
- LoxBerry allgemein: https://loxwiki.atlassian.net/wiki/spaces/LOXBERRY/overview
- https2http-Plugin: https://loxwiki.atlassian.net/wiki/spaces/LOXBERRY/pages/1189741195/https2http
- URL-Encoding & Prozentdarstellung von Zeichen: https://de.wikipedia.org/wiki/URL-Encoding
- Proxmox: „Failed to connect to Server“ mit Safari auf MacOS - 28. Januar 2023
- Loxone: Benachrichtigung per Telegram - 15. Januar 2022
- Telegram: Nachrichten per Bot von der Heimautomation aufs Handy - 2. Januar 2022