TelegramBot – Kommuniziere mit deiner FHEM-Installation

Mit Pushover kann man sich Push-Benachrichtigungen auf seinen Smartphone schicken. Dies geschieht leider nur ein eine Richtung. Möchte man auch selber Nachrichten an FHEM senden, ist man auf andere Möglichkeiten angewiesen. In diesem Beitrag erkläre ich euch, wie ihr mit dem Chat-Client „Telegram“ (App-Store, Play-Store, Windows-Store) Nachrichten und somit auch Befehle an eure FHEM-Installation sendet.

Telegram ist ein Instant-Messaging Dienst der ähnlich wie WhatsApp verwendet werden kann. Er kann auf Smartphones, Tablets und PCs verwendet werden. Es lassen sich Nachrichten empfangen und senden.

Telegram auf Smartphone installieren

Um Nachrichten Empfangen und Senden zu können, ist es nötig, dass die Applikation „Telegram Messenger“ auf ein Endgerät installiert ist. Natürlich besteht auch die Möglichkeit die Webanwendung zu benutzen https://web.telegram.org/#/login. Mehr Infos auf der offiziellen Homepage.

Nachdem starten der Applikation muss ein Chat mit @BotFather gestartet werden. Dies ist ein Chatroboter mit dem sich neue Clienten (Chatbots) einrichten lassen. Dies ist nötig, da FHEM später als solcher fungiert.

Telegram - Bothfather

Der Chatbot @BotFather wird mit Kurzbefehlen gesteuert. Eine List der verfügbaren Befehle erhält nach dem Tippen auf Start.

Telegram - Bothfather

Mit dem Befehl „/newbot“ lässt sich nun ein neuer Bot einrichten

Telegram - Bothfather

Es wird nach einem Namen gefragt. Dieser kann frei gewählt werden. Es ist der Name, der später als Absender der Nachrichten angezeigt wird. In diesem Fall habe ich ihn FHEM genannt.

Telegram - Bothfather

Anschließend wird nach dem „username“ gefragt. Dieser kann auch frei gewählt werden. Voraussetzung ist jedoch, dass er einmalig ist und auf „bot“ endet. Für diesen Beitrag habe ich mich für „FHEMwaschto_bot“ entschieden.

Wurde der Bot erfolgreich angelegt erhält man eine Nachricht mit einem Access-Token. Dieser wird benötigt, damit FHEM später über diesen Bot Nachrichten senden kann.

Telegram - Bothfather

Dieser „Token“ sollte gut und sicher aufbewahrt werden. Er ist das Einzige was den Bot gegenüber unbefugtem Benutzen absichert. Der zu Testzwecken angelegter Bot hat folgenden Token:

Dieser wird zum definieren innerhalb von FHEM benötigt. Aber dazu später mehr.

Möchte man, dass der Bot später auch Nachrichten innerhalb Gruppen verarbeiten kann, ist ein weitere Einstellung nötig. Diese kann ebenfalls über den BotFather vorgenommen werden.

Mit dem Befehl „/setprivacy“ lassen sich die Gruppen-Einstellungen ändern. Es wird nach dem Usernamen des gewünschten Bots gefragt. In diesem Fall „@FHEMwaschto_bot“. Über die Eingabe von „Enable“ bzw. „Disable“ lassen sich die Gruppennachrichten aktivieren, bzw. deaktivieren. Der BotFather lässt sich auch über die eingeblendeten Buttons steuern.

Telegram - BotFather

Der Bot wurde nun erfolgreich eingerichtet und die Mindestkonfiguration wurde vorgenommen. Über den BotFather lassen sich natürlich noch weitere Einstellungen vornehmen. Wie zum Beispiel das Profilfoto des erstellten Chatbots. Einfach mal die verfügbaren Befehle anschauen.

Einrichtung unter FHEM

Unter FHEM definiert man sich mit dem oben erhaltenen Token ein Device. Hier kommt das Modul TelegramBot zum Einsatz.

Der Name „Telegram“ kann frei gewählt werden.

Telegram - BotFather

Damit der TelegramBot nun auch Nachrichten empfangen kann, ist das Einstellen eines Timeouts größer 0 notwendig. Die Zeitangabe erfolgt hier in Sekunden.

Damit der Chatbot eingehende Nachrichten als ein FHEM-Befehl identifiziert, muss ein „Geheimwort“ festgelegt werden. Dies geschieht über das Attribut cmdKeyword.

Anschließend kann man die erste Testnachricht an FHEM senden. Dazu über die App den eingerichteten Bot suchen. Nach dem der Bot durch drücken von „Start“ gestartet wurde öffnet sich der Chat.

Mit dem Keyword und dem gewünschten Befehl lassen sich nun seine FHEM-Geräte steuern. Zum Beispiel

Telegram

Als Reading erhält man nun die Daten des abgesendeten Befehls.

Telegram

Wichtig ist hier das Reading „Contacts“. Dieses Reading gibt die Kontaktdaten des Absenders an.

Gegen unbefugten Zugriff absichern

Nur dieser Kontakt soll Befehle an FHEM senden dürfen. Damit andere Kontakte gesperrt werden, sollte das Attribut „allowUnknownContacts“ auf 0 gesetzt werden.

Dies bewirkt, dass nur noch Befehle von bekannten Kontakten verarbeitet werden. Dadurch, dass zuvor eine Nachricht an FHEM gesendet wurde, ist der Kontakt des Absenders dem Telegram-Modul bereits bekannt.

Eine weitere Absicherung kann mit dem Attribut „cmdRestrictedPeer“ erreicht werden. Hier lassen sich IDs angeben, von der Befehle verarbeitet werden. Durch das Reading „Contacts“ erhält man diese ID.

Hier sollten auch wirklich nur die IDS verwendet werden, da Benutzernamen frei vergeben werden können und somit nicht eindeutig sind.

Kurzbefehle für ein schnelleres Bedienen

Damit man nicht immer den kompletten Befehl samt „Geheimwort“ eingeben muss, gibt es die Möglichkeit sogenannte Kurzbefehle zu setzen. Dies geschieht über das Attribut „Favorites“

Weitere Kurzbefehle können durch ein ; getrennt werden.

Telegram

Diese eingetragenen Favoriten werden nun fortlaufend nummeriert. Bevor man diese jedoch verwenden kann, muss noch ein Wort für die Kurzbefehle eingerichtet werden. Dies geschieht über „cmdFavorites“.

Dieser Kurzbefehl kann frei gewählt werden. Es sollte jedoch ein Wort sein, welches nicht im normalen Sprachgebrauch verwendet wird. Um sich zusätzlich gegen ein ungewolltes Verwenden zu schützen, kann man ein Sonderzeichen verwenden. Wie hier der Fall „/cmd“. Der Schrägstrich hat zusätzlich noch den Vorteil, dass sich der Befehl im Chatverlauf der App antippen lässt und sich der Befehl so widerholt senden lässt.

Über den Chat lassen sich nun diese über /cmd1 bzw. /cmd2 usw. auswählen. Ein senden ohne Nummer „/cmd“ gibt eine Auswahl der vorhandenen Kurzbefehle zurück.

Telegram Kurzbefehle

Die Kurzbefehle lassen sich aber noch einfacher aufrufen. Rechts neben dem Eingabefeld befindet sich ein Shortcut zu den Kurzbefehlen.

Telegram Kurzbefehl

(Update 11.10.16) HINWEIS: Sollte das Shortcut zu den Kurzbefehlen nicht angezeigt werden, dann hilft es, kurz das „Favoriten-Wort“ zu senden. In diesem Fall „/cmd“. Danach sollte das Shortcut angezeigt werden.

Ab sofort lassen sich über die App alle FHEM-Befehle ausführen. Dazu einfach das ausgesuchte „Geheimwort“ und den gewünschten Befehl über den ChatBot an FHEM senden.

Für häufig gebrauchte Befehle lohnt es sich Kurzbefehle anzulegen.

Anwendungsbeispiele

Menüstruktur für ein einfaches Steuern

Das Steuern über Telegram ist zwar schon ganz schön praktisch, jedoch muss man dafür die FHEM-Befehle und den Namen der gewünschten Devices kennen. Für weitere Personen im Haushalt also eher unvorteilhaft.

Der FHEM-Forum-Benutzer „tiroso“ hat dafür eine elegante Lösung entwickelt. Über ein notify wird die empfangene Nachricht an ein Skript geleitet, welches dann entsprechende Wege einleitet. Gleichzeitig hat er eine Menüstruktur aufgebaut, mit der sich FHEM leicht steuern lässt.

In seinem Forums-Beitrag dazu hat er einen Ausschnitt seines Skriptes hochgeladen. Die perfekte Inspiration für sein eigenes Skript.

SVG-Plots senden

Der Telegram-Client kann natürlich auch Bilder senden und empfangen. Da liegt es doch nahe, dass man sich die SVG-Plots auf sein Handy schicken lässt.

Dazu sind noch einige Pakete nötig, die auf den Raspberry installiert werden müssen:

Über ein Perl-Befehl lassen sich nun SVG-Plots versenden:

 Entweder man baut diesen Befehl in sein Menü-Skript (siehe Menüstruktur) oder man erstellt sich ein einfaches Notify welches auf eine bestimmte Nachricht reagiert:

Sobald die Nachricht „/SVG“ eingeht, wird der SVG-Plot mit dem Namen „SVG_Wohnzimmer“ an das Gerät mit der ID „228427286“ gesendet.

Ich hoffe ich konnte euch den TelegramBot etwas näher bringen und euer Interesse dafür wecken. Bei Fragen einfach die Kommentarfunktion nutzen oder ins FHEM-Forum vorbei schauen.

8 Kommentare zu “TelegramBot – Kommuniziere mit deiner FHEM-Installation

  1. Hi,

    ich hab das gem. Deinem Tutorial eingerichtet. Funktioniert auch alles soweit, nachrichten empfangen und senden geht.
    Ich habe jedoch im EventMonitor andauern folgende Meldungen:
    2016-08-05 16:37:59 TelegramBot Telegram PollingLastError: NonBlockingGet timed out on read from after 245s
    2016-08-05 16:37:59 TelegramBot Telegram PollingErrCount: 533

    Weist Du was da los ist?
    gruß
    Stefan

    • genau das gleiche Problem habe ich auch. Gibt es eine Lösung, den Fehler NICHT zu loggen?

      Danke und Gruß

    • Hallo Jörg,
      ich habe schon versucht diesen Fehler irgendwie zu rekonstruieren, leider ohne Erfolg. Was ich eventuell die Fehlermeldungen unterbindet ist das Attribut „verbose“ (FHEM-Wiki). Damit lässt sich einstellen, welche Meldungen alle geloggt werden sollen. Dies würde jedoch nur die Fehler-Meldung unterdrücken, leider nichts am Problem selber verbessern. Aber wenn Telegram sonst funktioniert ist das ja erstmal eine Lösung.

      Gruß Daniel

  2. Hallo zusammen,
    zuerst mal ein Lob für die Anleitung, echt super.
    Nun zu meinem Problem, ich bekomme inn der App leider neben dem Eingabefeld keine Shortcuts angezeigt. Was muss ich da noch machen, damit das Feld angezeigt wird?

    Bitte um Hilfe.

    Danke.

    Mit freundlichen Grüßen
    JoeWanne

  3. Hallo JoeWanne,
    ich habe meinen Bot nochmal gelöscht und einen neuen eingerichtet. Hatte dann genau das gleich Problem wie du. Es wurden keine Shortcuts angezeigt. Geholfen hat es, einmal das Befehlswort zu senden, welches über das Attribut „attr Telegram cmdFavorites /cmd“ hinzugefügt wurde. Nachdem ich dann „/cmd“ gesendet haben, wurden mi die Shortcuts angezeigt und seit dem dann auch das Shortcut neben der Tastatur.
    Hoffe der Tipp hilft bei dir auch.
    Gruß Daniel

    • Hallo Daniel,
      danke für die schnelle Antwort, genauu das war es.
      Nun bekomme ich es angezeigt.

      Liebe Grüße
      JoeWanne

  4. Hallo Daniel,

    bei mir kommt im FHEM die Meldung:

    Cannot load Module TelegramBot

    Wie kann ich das Modul laden?

    Gruß
    Lutz

    • Hallo Lutz,
      normalerweise ist das benötigte Modul bereits standardmäßig installieren. Sonst einfach mal mit dem Befehl „update“ die FHEM-Installation updaten. Ansonsten lässt sich die Modul-Datei (50_TelegramBot.pm) hier downloaden:

      https://github.com/viegener/Telegram-fhem

      Die Datei dann einfach in das Modul-Verzeichnis von FHEM kopieren „opt/fhem/FHEM“ und FHEM anschließend neu starten.

      Gruß Daniel

Schreibe einen Kommentar

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

*