Robins Blog – Technik und Multimedia

Fhem: Fernsteuern von Fhem mit Telegram

Update: 05.03.2016 Das ist ein alter Blog-Beitrag. Bitte den Telegram-Bot benutzen, weil dieses Modul weiterentwickelt wird. Der Telegram-Bot ist einfacher zu installieren, eine Hilfe gibts in der Wiki hier

Update 13.09.2015: Blog-Beitrag erweitert

Mal wieder ein kleiner Beitrag für unsere Freunde der Hausautomation Fhem. Fhem ist mittlerweile so vielseitig, man kann ganze Bücher über die Features schreiben, dank Open Source und eine sehr aktive Entwickler-Gemeinde. Heute geht es um den kostenlosen Dienst Telegram. Was Telegram ist, könnt ihr auf der Website nachlesen. Auf dem Smartphone gibt man in der Telegram App einen Befehl ein, beispielsweise OK Fhem Laterne on und dieser Befehl wird dann von Fhem ausgeführt und schaltet die Laterne ein. Ebenfalls kann man mit Telegram auch zum Pushen verwenden, ähnlich wie die Pushover-App. So können beispielsweise Zustandsdaten an das Smartphone geschickt werden. Beispielweise ein Hinweis an Telegram falls noch ein Fenster geöffnet ist, wenn man das Haus verlässt. Oder eine Telegram-Nachricht, wenn die Kühltruhe eine bestimmte Temperatur überschreitet. Wie man sieht, unendliche Möglichkeiten, man muss sie nur scripten. Das Ganze ist vom Entwickler noch in der Testphase (Stand August 2015) und man muss einzelne Dateien noch manuell auf dem Server kopieren.

Die ganze Idee fängt mit diesem Thread im Fhem-Forum an: siehe hier

Um nicht die ganzen Thread durchzulesen, wurde auch schon abgekürzt etwas in der Wiki geschrieben, siehe hier.

Wichtig ist es, zunächst einen Account, genauer gesagt zwei (oder mehrere für die Familienmitglieder) Accounts bei Telegram zu erstellen. Einen Account für das Smartphone, ein anderes für Fhem. Ich habe meine Festnetznummer für Fhem bei den Einstellungen eingegeben. Ihr könnt Euch den Aktivierungscode nämlich auch via Voice mitteilen lassen, sonst kommt er per SMS. Dann muss der oder die Kontakte, mit der Fhem nach außen kommunizieren soll, mit add_contact in die Liste hinzugefügt werden. Die genaue Beschreibung für die Installation von Telegram auf Fhem findet ihr auch in dem Thread.

Meine Meinung nach eine gute Idee, sie wird bei mir Pushover ablösen, welches – wie der Name schon sagt – nur Mitteilungen von Fhem senden kann.

Falls Fragen, fragen in den Kommentaren und viel Spaß beim Ausprobieren!

Hier ein Screenshot, wie Telegram in Fhem ungefähr aussehen sollte, wenn es richtig installiert wurde. Wichtig ist hier das State = opened

DEF
1234
DeviceName
localhost:1234
FD
75
NAME
user1
NR
1652
PARTIAL
Port
1234
Protocol
telnet
REMAINING
STATE
opened
TYPE
Telegram
lastmessage
User xxx online (was online [2015/08/12 21:41:32])
sentMsgPeer
xxx
sentMsgResult
NO RESULT
sentMsgSecure
normal
sentMsgText
FHEM INITIALIZED

Autostart:
Blog-Leser Georg hat noch einen Tip, wie man das Problem mit dem Autostart löst:
Er startet den Dienst einfach 20 Sekunden später, und so geht es:

Die Datei /etc/rc.local um folgenden Eintrag erweitern (vor dem exit 0):
/bin/sleep 20 && /etc/init.d/telegram-daemon start
Infos zum init.d telegram-daemon findet ihr oben in den Link zum Fhem-Forum.

Update 13.09.2015: Der Vorteil von Telegram gegenüber von Pushover ist, das man die Versendung von Nachrichten auch bi-direktional verwenden kann. So kann man beispielsweise auf dem Smartphone eine Nachricht schreiben und mit

pt 30
text v1 0 380 {"Info: ".ReadingsVal("user1","msgText",0)}

erscheint diese Info auf dem InfoPanel (-> Blog-Beitrag und -> Blog-Beitrag).

Um diese Meldung nach eine gewissen Zeit wieder automatisch zu löschen, nutze ich bei Fhem den AT-Befehl und schicke eine Nachricht an das System selber

define trigger_Telegram_Cleanup at +*01:00:00 setreading user1 msgText -
Hier wird die Nachricht nach einer Stunde gelöscht.

Aktionen mit Telegram von Fhem ausführen:
Stellen wir uns einmal vor, wir würden jede Minute ein Camerabild machen, welches wir auf /opt/fhem/www/snapshots/snap.jpg speichern.
Wir könnten jetzt von unterwegs dieses Snapshot anfordern und uns das Kamerabild per Telegram auf das Smartphone schicken lassen.
Wir müssen an unserem Bot in Fhem ein Codewort schicken, sodass der Befehl von Fhem ausgeführt werden kann. Das Attribut bei Fhem heisst: cmdKeyword. Wir legen als cmdKeyword bspw. das Wort Fhem fest. Möchten wir nun ein aktuelles Cam-Bild empfangen sagen wir hier:

Fhem set user1 sendImage /opt/fhem/www/snapshots/snap.jpg

Mit diesem Befehl schicken wir mit dem Code-Wort Fhem an den user1 (Name des Telegram-Devices) eine Aufforderung in dem Pfad /opt/fhem/www/snapshots/snap.jpg zu schauen und die jpg zu posten. Wichtig ist hier vorab einmal das Attribut pollingTimeout auf 1 zu setzen.

Die mobile Version verlassen