TelegramBot

Aus FHEMWiki
Version vom 11. Oktober 2015, 21:49 Uhr von Viegener (Diskussion | Beiträge) (Erste Version zum telegramBot Modul)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
TelegramBot
Zweck / Funktion
Senden und Empfangen von Nachrichten (Text und Fotos) mit dem freien Messagingdienst Telegram
Allgemein
Typ Inoffiziell
Details
Dokumentation Thema
Support (Forum) Unterstützende Dienste
Modulname 50_TelegramBot.pm
Ersteller Viegener (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Das TelegramBot-Modul ermöglicht das Senden und Empfangen von Nachrichten über den Telegram-instant messaging Dienst (https://telegram.org/). Es entsteht eine Möglichkeit Benachrichtungen aus Fhem zu versenden, zum Beispiel Alarmmeldungen. Ausserdem können auch Kommandos über Telegram an Fhem gesendet werden um Steuerungsbefehle in Fhem auszulösen.

Das TelegramBot-Modul benötigt keine Zusatzsoftware auf dem Fhem-Server (anders als die Variante Telegram), sondern verwendet das TelegramBot-API über https-Aufrufe.

Für die Unterstützung von WhatsApp siehe Modul yowsup.

Über Telegram Instant Messaging

Telegram-IDs und Versand/Empfang von Nachrichten sind kostenfrei. Clients sind für gängige Smartphonesysteme erhältlich (iOS iPhone und Tablet, Android, Windows Phone) und können auch aus dem WebBrowser verwendet werden. Es gibt auch einen Kommandozeilen-Client für Linux, der die Grundlage dieses Moduls darstellt. Mehrfachanmeldungen, auch parallel mit verschiedenen Geräten (z.B. Tablet und Smartphone), sind möglich. Gruppenchats und Chats mit End-2-End-Verschlüsselung werden ebenfalls unterstützt.

Features

Unterstützt werden:

  • Versand von Textnachrichten
  • Versand von Bildern
  • Empfang von Textnachrichten von beliebigen Kontakten
  • Kommandos in Fhem über telegram-Nachrichten von aussen auslösen

Eine detaillierte Beschreibung des Moduls ist im Fhem Forum und in der (englischen) Dokumentation zum Modul in diesem Diskussionsthread zu finden, die jeweils aktuelle Version des Moduls ist im ersten Beitrag als Anhang verfügbar.

Hinweise zum Betrieb mit Fhem

Für die Anlage eines TelegramBot Devices in Fhem ist ein Authtoken erforderlich. Dieses Token wird über Anlegen eines neuen Bots im Botfather erzeugt. Die Namen für Bots müssen auf "Bot" enden.

Emblem-question-yellow.svgAchtung: Dieses Authtoken ist die einzige Authentifizierung für den Bot und sollte deshalb nicht aus der Hand gegeben werden. Die verwendeten Urls sind deshalb auch in den Log-Files nicht enthalten, da diese das Authtoken in Klartext enthalten. Auch im Forum sollte dieses Token nicht aufgenommen werden.


Der telegram Bot kann erst dann Nachrichten an einen telegram user schicken, wenn dieser zuerst an den telegram bot eine Nachricht gesendet hat.

Damit der telegram bot auch Meldungen in Gruppen sieht, müssen über den botfather die prviacy-Einstellungen geändert werden.


Beispielszenarien

Benachrichtigungen über Ereignisse

Das einfachste Szenario für die Integration von Messaging-Diensten mit Fhem ist zur Benachrichtigung über Ereignisse. Diese Funktion kann zum Beispiel verwendet werden, um über einen erfolgten Neustart von Fhem zu informieren:

define notify_fhem_reload notify global:INITIALIZED set telebotdevice message fhem newly started - just now !

In diesem Beispiel wird der Nachrichtentext "fhem newly started - just now !" an den als default eingestellten Kontakt (Attribut: defaultPeer) gesendet, sobald Fhem neu gestartet wurde. Natürlich kann man auch beliebige andere Benachrichtigungen einführen.

Versand von Bildern

Es ist auch möglich Bilder auf dem Fhem-Server, die zum Beispiel von einer Kamera oder einem Wettermodul stammen über Telegram zu versenden. So wäre es z.B. möglich jeweils morgens die aktuelle Wetterkarte zu erhalten.

ACHTUNG: TelegramBot verwendet das HTTPUtils-Modul zur Kommunikation mit dem TelegramBot-API. Das aktuelle HTTPUtils-Modul (Stand Oktober 2015) kann noch keine grossen Dateimengen übertragen, so dass momentan nur Bilder bis zu einer Grösse von etwa 14KB versendet werden können (Plattformspezifische Grenze). Detaillierte Infos finden sich im Forum Fhem-Forum. Es gibt dazu ein modifiziertes HTTPUtils-Modul, dass diese Beschränkung aufhebt und auch grosse Dateien übertragen kann.


define notify_fhem_reload notify wetter:report set telebotdevice sendPhoto /opt/fhem/wetter.jpg

Bei Erreichen des entsprechenden Status am wetter-Modul wird ein Image über telegram versendet. Hier sind lokale Pfade (relativ zu fhem) oder absolute Pfade wie oben möglich.


Kommandos auslösen

Ein wichtiges Szenario ist die Möglichkeit Kommandos in Fhem ausführen zu können, ohne einen Zugang durch die Firewall einrichten zu müssen. Dazu ist die Definition eines Schlüsselwortes (Attribut: "cmdKeyword")erforderlich, mit dem man die Nachrichten beginnen muss, damit der TelegramBot die Kommandos erkennt.

attr telebotdevice cmdKeyword doit

Somit kann man dann durch Nachrichten die mit "doit" beginnen Kommandos an Fhem senden, die ähnlich wie im Kommandoeingabefeld von Fhemweb dann von Fhem ausgeführt werden. Das Ergebnis der Ausführung wird zurück an den Sender (und an den definierten defaultPeer) geschickt.

Somit können nicht nur Aktionen angestossen werden, sondern auch Infos abgefragt werden.

Beispiele

dofhem set schalter on

dofhem list telegrambot

Emblem-question-yellow.svgAchtung: Bei den Kommandos sollten man unbedingt das Attribut "cmdRestrictedPeer" setzen, damit nicht jeder Kommandos auf dem Fhem-Server ausführen kann. Dazu sollten die Benutzerids der erlaubten Benutzer (durch Leerzeichen getrennt angeben). Da Benutzernamen selber vergeben werden und nicht unbedingt eindeutig sind, sollten hier auch NUR Benutzerids verwendet werden.


Favoriten für Kommandos anlegen

Grundidee bei den Favoriten ist, dass man lange Befehle, die man haeufig braucht auf "Kurzwahl" legt.

Beispiel-Kommandos wie z.B. set TYPE=ROLLADEN pos 100 und set TYPE=ROLLADEN pos 0, die man immer wieder braucht. Um nicht jedesmal dieses Kommando eintippen zu müssen auf dem Smartphone, kann man auch dafür Favoriten anlegen.

Dazu gibt man erstmal die beiden Kommandos getrennt durch Semikolon im Attribut favorites an:

attr telegrambotdevice favorites set TYPE=ROLLADEN pos 100;set TYPE=ROLLADEN pos 0

Um die Favorites jetzt ausführen zu können braucht man noch ein Schlüsselwort dafür. Nehhmen wir mal an man möchte die Favoriten mit /short ausführen können. Dazu muss dann das Attribut "cmdFavorites" setzen

attr telegrambotdevice cmdFavorites /short

Wenn man nun im Telegram Client /short 1 an den Bot schickt führt der Bot den ersten Favoriten aus und das Ergebnis der Ausführung wird zurückgeschickt.

Ausserdem kann man im Telegram Client /short an den Bot schicken, dann antwortet der Bot mit

Favorites

1
set TYPE=ROLLADEN pos 100
2
set TYPE=ROLLADEN pos 0


Links

--Viegener (Diskussion) 22:49, 11. Okt. 2015 (CEST)