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

fhemMal 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.

Tablet InfoPanel

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.

Dieser Beitrag wurde unter Fhem-Hausautomation abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Antworten zu Fhem: Fernsteuern von Fhem mit Telegram

  1. Robin sagt:

    Hallo Georg,

    gut zu wissen, checke ich nach und übernehme es in meinem Blog. Vielleicht mich noch mal per pm kontaktieren über die genaue Installation. Ich starte immer noch das Teil von Hand. Aber ok, nach 100 Tagen online und reboot (wegen Backup des Images der SD-Karte) kann man das ja mal machen 🙂

    LG
    /robin

  2. Georg sagt:

    Hallo Robin! Danke für den Tipp!
    Hab den Script aus dem Forum verwendet und kam auch nicht weiter.
    Hab aber denke ich das Problem gelöst, vielleicht auf einer ungewöhnliche Weise, aber besser kann ich es nicht.. 🙂

    Als erstes hatte ich das Problem das nach dem starten und wieder stoppen weitere Startversuche nichts gebracht haben, ob über den Script oder direkt mit dem Befehl.
    Da beim stoppen der Befehl „sudo pkill telegram-cli“ verwendet wird, fährt die Anwendung nicht sauber herunter. Es hinterlässt eine Datei „/home/USER/.telegram-cli/state“, diese verhindert nochmaligen start. Wenn man diese löscht, hat es wunderbar geklappt.

    Das zweite Problem war, das es beim booten nicht starten wollte, hab dann den Aufruf in die „/etc/rc.local“ umgezogen:

    (/bin/sleep 30 && /etc/init.d/telegram-daemon start)

    Und jetzt startet der Dienst Telegram beim booten.

    Gruß,
    Georg

  3. Robin sagt:

    Hallo Georg, ich habe es auch mit init.d versucht (quasi Startup-Script) aus dem Forum, klappt bei mir aber noch nicht.
    http://forum.fhem.de/index.php/topic,38328.msg318707.html#msg318707

    LG
    /robin

  4. Georg sagt:

    Super Sache! Kann mir noch jemand ein Tipp geben wie man telegram-cli zusammen mit dem System automatisch startet? Also Rebootfest machen.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.