Mit dem Telegram Binding in OpenHAB kann man sehr schöne Sachen machen.

Ich zeige euch, wie man das Binding in OpenHAB3 einbindet und konfiguriert. Anschließend können wir uns dann regelmäßig per Telegram Chatnachricht Informationen zukommen lassen, oder sogar  on-demand Informationen abrufen.

Installation

Um das Binding nutzen zu können, muss es erst installiert werden.

Klickt dafür in OpenHAB3 auf “Einstellungen – Bindings – “+”” sucht nach “Telegram” und klickt auf INSTALL.

Öffnet nun Telegram auf eurem Smartphone/Rechner und beginnt einen Chat mit “BotFather”. Sendet diesem Chat die Nachricht: /newbot

Er wird euch nach einem Namen für den Bot fragen. Dies wird der Name des Chats sein.

Anschließend benötigt ihr einen Usernamen. Diesen darf es nur einmal geben und ist später nicht im Chat sichtbar.

Anschließend erhaltet ihr eine Bestätigungsnachricht mit einem Link zu eurem Chat. Klickt diesen an und schreibt etwas hinein, erst dann ist er aktiv und wir können mit den weiteren Schritten fortfahren.

Außerdem erhaltet ihr einen HTTP API Key. Speichert euch diesen gut weg, da wir ihr jetzt benötigen.

Öffnet nun einen Browser und geht auf die Webseite: https://api.telegram.org/bot<token>/getUpdates

Hierbei müsst ihr <token> mit dem API Key ersetzen, den ihr erhalten habt.

Es wird eine JSON Datei angezeigt. Keine Angst, hier lesen wir nun die ID aus. Diese speichern wir uns ebenfalls.

Test

Um zu testen, ob euer Bot funktioniert, gebt folgende URL in euren Browser ein:

https://api.telegram.org/bot<token>/sendMessage?chat_id=<chatId>&text=testing

Ersetzt hier wieder <token> mit eurer HTTP API und <chatid> mit der ID.

Ihr solltet nun eine Chatnachricht erhalten haben. Wenn nicht, geht die Schritte noch einmal durch.

Konfiguration

Erstellt in OpenHAB nun eine neue Thing Datei. Zum Beispiel “telegram.thing”

Hier tragt ihr Folgendes ein:

Thing telegram:telegramBot:Telegram_Bot [ chatIds="ID", botToken="TOKEN" ]
String telegramMessage "Telegram Message" { channel = "telegram:telegramBot:XXXXXXXXXX:lastMessageText" }

“ID” ersetzt ihr wieder durch eure ChatID, “TOKEN” durch euren HTTP API Key und X durch die Thing ID.

Speichert diese Datei ab.

Anschließend navigieren wir in OpenHAB nach “Einstellungen – Things – Telegram Bot”.

In der Zeile Identifier sehen wir die Thing ID: telegram:telegramBot:XXXXXXXXXX

Die Thing ID (hier durch X gekennzeichnet) speichern wir uns wieder weg.

Unter “Bot Token” und “Chat Id(s)” tragen wir die entsprechenden Daten ein und klicken auf “Save”.

Das war’s, nun haben wir unser Binding entsprechend vorbereitet. Nun erstellen wir uns eine neue Regel.

Regel erstellen

Wir erstellen uns eine neue Regel Datei “telegram.rules”

Anschließend können wir uns unsere Regeln bauen.

Beispiel 1: Jeden Abend um 21 Uhr

rule "Telegram - 21:00 Uhr Lueften"

when
	Time cron "0 00 21 1/1 * ? *"


then
        val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXX")
	if((HeizungWohnzimmer_Currenttemperature.state as Number).intValue > (Weather_Current.state as Number).intValue) sendTelegram("Wohnzimmer Lüften!")

end

Es wird die innen und außen Temperatur verglichen. Ist es drinnen wärmer als draußen, erhalte ich eine Benachrichtigung, dass ich das Wohnzimmer lüften soll. Das ist gerade im Sommer hilfreich.

Beispiel 2: Informationen auf Anfrage

Man kann sich aber auch Informationen auf Abruf zukommen lassen.

rule "Receive telegram"

when
      Item telegramMessage received update "Info"

then
      val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXX")
      telegramAction.sendTelegram("Wohnzimmer Temperatur: %s", HeizungWohnzimmer_Currenttemperature.state.toString)

end

Sobald ich “Info” in den Chat schreibe, erhalte ich eine Antwort mit der aktuellen Temperatur im Wohnzimmer. Hier ist wichtig, dass auf Groß- und Kleinschreibung geachtet wird.

Euch wird die Zeile “val telegramAction…” aufgefallen sein. Hiermit erstellen wir die Variable, um den Telegram Chat senden zu können. Ich hätte diese Variable am liebsten nur einmal als erste Zeile in der Datei deklariert, jedoch scheint es in dem Fall zu Problem zu kommen. Deswegen deklariere ich die Variable für jede Regel separat. Das X ersetzen wir wieder durch unsere Thing ID.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert