Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

Begonnen von viegener, 20 Juni 2015, 18:59:41

Vorheriges Thema - Nächstes Thema

viegener

50_TelegramBot-Modu ist das "offizielle" Telegram-Modul, das direkt mit FHEM verteilt und aktualisiert wird. Es basiert auf dem Telegram-Bot API das über https angesprochen wird.

Historisch gibt es noch das 70_Telegram Modul basierend auf dem frei verfügbaren separaten telegram-cli. Dieses Modul wird nicht mehr weitergepfelgt und benötigt die separate Installation des telegram-cli systems (Linux)





TelegramBot - Benutzt das Telegram BOT API

telegramBot Modul für FHEM --> 50_TelegramBot.pm

Diese Modul erlaubt das Senden und Empfangen von Nachrichten über den telegram Messaging Dienst. --> https://telegram.org/.

Telegram clients (und auch deren Benutzung) sind frei und für sehr viele Plattformen erhältlich. Dazu gehören iOs, Android, Windows Phone, viele Desktop-Betriebssysteme und auch web browser. Hilfreich ist, dass auch mehrere parallel Verbindungen / Anmeldungen unterstützt werden. Ausserdem kann telegram auch Gruppenchats, Bilder, etc.

Dies umfasst Text und Bild-nachrichten sowie das Ausführen von Kommandos, die über telegram an fhem gesendet werden.
Ziel ist es über telegram mobil Benachrichtigungen, Alarmmeldung und Infos zu erhalten und auch Kommandos, und Aktionen zu senden.

Vergleich 50_TelegramBot vs. 70_Telegram
+ Es ist keine andere Software auf dem Server notwendig, das Modul sollte demnach auch auf anderer Hardware funktionieren können (insbesondere kein telegram-cli)
+ Es ist keine Rufnummer erforderlich für die Registrierung reicht die telegram BOT Registrierung wie hier beschrieben: https://core.telegram.org/bots
+ Es können Favoriten für Kommandos definiert werden
+ Gruppenchats werden unterstützt
- Es gibt keine secret chats (im BOT API nicht enthalten)

Hinweis:
o Das Attribut pollingTimeout muss auf einen Wert > 0 gesetzt sein, sonst wird nichts empfangen
o Ohne verändertes httputils-Modul (siehe Github) können Bilder nur bis zu einer Grösse von ca. 10-15kB übertragen werden (je nach Plattform)
o Bots können NICHT von sich beliebige telegram user kontaktieren, die erste Kommunikation muss immer von einem normalen Telegram-Benutzer gestartet werden





70_Telegram - Verwendet und erfordert ein installiertes telegram-cli (nur Linux)

Diese Modul wird nicht mehr weiterentwickelt

Erste Version eines moduls für das Empfangen und Senden von messages per Telegram:
https://telegram.org/

Das 70_Telegram Modul basiert auf dem frei verfügbaren telegram-cli (inoffiziellen Linux command line client). Dieser ist hier verfügbar:
https://github.com/vysheng/tg. Bau und Betrieb des Clients hat bei mir sehr gut geklappt und der Client erscheint mir sehr stabil, denkbar wäre aber auch eine Umstellung auf das offizelle Telegram API.





Neueste Version für beide ist jetzt auch in Github zu finden:

https://github.com/viegener/Telegram-fhem
Beim Herunterladen aus github daraufachten, dass man die Datei "raw" (button "raw" in github) herunterlädt und nicht die HTML-Seite speichert.

Weitere Details zur Benutzung von Telegram sind in der jeweiligen Command-Doku enthalten.

Gruss,
Johannes

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Maista

Hallo Johannes,

Klasse das Du das gemacht hast.  ;D
Ich suche schon die ganze Zeit eine Lösung welche auch beschrieben wird.

Ich habe auf meinem RPi aber noch die alte Version laufen.
Wollte ich erst nach dem kauf eines RPi2 alles neu aufsetzen.

Mal sehen wann ich das umgesetzt bekomme (viele Baustellen).

Danke !

Gerd

igami

Hallo Johannes,

interesse ist auf jeden Fall da.
Werde ich morgen mal testen.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

viegener

Zitat von: Maista am 20 Juni 2015, 21:10:47
Hallo Johannes,

Klasse das Du das gemacht hast.  ;D
Ich suche schon die ganze Zeit eine Lösung welche auch beschrieben wird.

Ich habe auf meinem RPi aber noch die alte Version laufen.
Wollte ich erst nach dem kauf eines RPi2 alles neu aufsetzen.

Mal sehen wann ich das umgesetzt bekomme (viele Baustellen).

Danke !

Gerd

Ich kenne die alte Version leider nicht, aber wenn diese per tcp erreichbar ist und auch Nachrichten empfängt sollte es gehen. Momentan wird quasi aus dem cli nur folgende Befehle verwendet:

- msg - sends a message to a peer
- main_session - sorgt dafür dass ankommende Nachrichten direkt ausgegeben werden (und damit vom Modul gelesen werden können)

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Zitat von: igami am 20 Juni 2015, 21:15:07
Hallo Johannes,

interesse ist auf jeden Fall da.
Werde ich morgen mal testen.

Grüße
igami

Ich bin schon auf Feedback gespannt. Bei Problemen einfach melden, die Tests waren bisher noch etwas rudimentär...

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Ma_Bo

#5
Hallo, melde auch Interesse an.

Werde so schnell wie möglich dein Modul mal testen. Berichte dann.

Kannst du vielleicht ein kurzes HowTo schreiben, was muss alles installiert werden und wie wird was definiert.

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

viegener

Zitat von: Ma_Bo am 21 Juni 2015, 00:45:59
Kannst du vielleicht ein kurzes HowTo schreiben, was muss alles installiert werden und wie wird was definiert.


Also ein Teil des howtos ist natürlich in der Doku zum Modul enthalten, insbesondere was in fhem konfiguriert werden muss.

Wichtig ist aber die Vorbedingung, dass telegram-cli installiert sein muss (erfordert linux).

Also folgende Schritte aber nur Quick&Dirty, das kann dann noch weiter verfeinert werden.


  • telegram-cli herunterladen. Dies befindet sich hier: https://github.com/vysheng/tg. Das kann entweder durch den link "Donwload Zip" auf de Seite erfolgen oder durch clonen des github repositories
  • Ab jetzt wird angenommen, dass der Inhalt des Repositories in einem Verzeichnis tg steht
  • Python und eine Reihe von weiteren Bibliotheken müssen installiert werden/sein. Die Befehle für verschiedene Unixe sind auf der Seite enthalten. Für Raspbian ist natürlich die debian Variante anzuwenden. Es sollte für FHEM auch ohne lua u.a. gehen, denn die Skript-Möglichkeiten werden nicht verwendet, das habe ich aber nicht probiert.
  • Dann das eigentliche Programm telegram-cli erzeugen über folgende Befehle im Verzeichnis tg ausführen:

    ./configure
    make

    Unter Umständen sind hier bei Fehlern entsprechende Optionen anzugeben bei mir war disable python nötig:

    ./configure --disable-python
    make


  • Wenn das alles geklappt hat, sollte ein ausführbares Programm telegram-cli im Verzeichnis tg/bin existieren. Dieses sollte man jetzt starten:

    bin/telegram-cli -k tg-server.pub


  • Beim ersten Start ist eine Konfiguration der entsprechenden Telefonnummer (Account) nötig. Dazu wird eine SMS mit Code oder eine Anruf mit Code-Ansage an diese Nummer gehen. Diesen Code (und weitere Daten) muss man eingeben. Der Client führt da einigermassen durch. Das müsste auch mit existierenden Accounts gehen.
  • Nach erfolgreicher Registrierung sollte man noch Kontakte (zumindest einen) anlegen. das erreciht man mit dem Kommando:

    add_contact <phone-number> <first-name> <last-name>

  • Testweise sollte man dann versuchen, ob eine Nachricht verschickt (msg-Befehl) und empfangen (d.h. von anderem Client gesendet) werden kann. Wenn das funktioniert ist der telegram-cli eingerichtet.
  • Jetzt das Modul 70_Telegram.pm in FHEM installieren (also FHEM-Verzeichnis) und neustarten- Am besten auch die Commandref neu erzeugen über das entsprechende Skript, damit man die Doku anzeigen kann
  • In der Telegram-Doku ist der Befehl, um den telergam-cli im Hintergrund zu starten beschrieben. Dies ist im Prinzip so:

    telegram-cli -k <path to key file e.g. tg-server.pub> -W -C -d -P <portnumber> [--accept-any-tcp] -L <logfile> -l 20 -N &


  • Wenn der cli im Hintergrund läuft, kann man einen Device in FHEM anlegen. Der define ist auch ind er Doku beschrieben:

        define <name> Telegram [<hostname>:]<port>

  • Jetzt sollte noch das Attribut defaultPeer gesetzt werden damit Messages verschickt werden können (über den set msg Befehl)

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Habe eine leicht erweiterte Version 0.3 hochgeladen. Findet sich im ersten Post

Kurzer Changelog:
- Einige reimplementierung und Stabilisierung
- raw Command um direkt Befehle an telegram-cli zu sende
- GET msgById um einzelne messages abzurufen
- ReadFn um auch mehrere Mesages auf einmal sauber zu verarbeiten

Bitte diese Version verwenden.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

igami

Hallo Johannes,

habe nun alles soweit mit der Version 0.3 eingerichtet. Was ich bisher nur halb hinbekomme: Secret Chat
Habe im cli einen secret Chat erstellt, der dann da heißt !_Michael. Diesen kann ich auch unter defaultPeer eintragen und nachrichten verschicken, nur das empfangen klappt nicht.

Was mir nun noch fehlt, aber schon über raw geht

  • get contact_list
  • set add_contact
  • set create_secret_chat
  • set msg <contact> msg

Sollte mir noch mehr auffallen werde ich mich melden. Erstmal vielen Dank für das Modul.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

viegener

Zitat von: igami am 21 Juni 2015, 10:01:32
Hallo Johannes,

habe nun alles soweit mit der Version 0.3 eingerichtet. Was ich bisher nur halb hinbekomme: Secret Chat
Habe im cli einen secret Chat erstellt, der dann da heißt !_Michael. Diesen kann ich auch unter defaultPeer eintragen und nachrichten verschicken, nur das empfangen klappt nicht.

Was mir nun noch fehlt, aber schon über raw geht

  • get contact_list
  • set add_contact
  • set create_secret_chat
  • set msg <contact> msg

Sollte mir noch mehr auffallen werde ich mich melden. Erstmal vielen Dank für das Modul.

Grüße
igami


Hi Igami,
das klingt schonmal sehr gut. Das man mit raw eigentlich alles machen kann, war mir gar nicht bewusst, denn eigentlich hatte ich es erstmal nur für Debugzwecke eingebaut.

ich habe bisher keine secret chats verwendet, für die Kommunikation mit fhem hat mir die Transportverschluesselung gereicht.
Ich werden selbst mal versuchen einen Secret chat aufzusetzen.

Kannst Du denn normale also nicht-End2End-verschluesselte Nachrichten empfangen?

Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

igami

Normale Chats klappen Problemlos, Verschlüsselt senden geht auch, nur empfangen wird nicht in den Readings, allerdings habe ich im internal

REMAINING NSWER 60 -5052882357861749739 [16:36] !_Michael »»» Test

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

gomezrr

Telegram Modul. Sehr schön, werde ich auch testen

viegener

Zitat von: igami am 21 Juni 2015, 16:37:39
Normale Chats klappen Problemlos, Verschlüsselt senden geht auch, nur empfangen wird nicht in den Readings, allerdings habe ich im internal

REMAINING NSWER 60 -5052882357861749739 [16:36] !_Michael »»» Test


OK, das mit den secret chats ist nicht so super schön, da man leider nicht überprüfen kann, ob mit einem peer schon ein secret chat existiert (zumindest habe ich keinen weg gefunden bisher).

Ich habe trotzdem jetzmal Unterstützung für Secret chats eingebaut:
- Generell geht das Empfangen jetzt, denn die secret chats haben eine etwas andere Meldung, die ist jetzt auch unterstützt
- Statt einer msgId wird jetzt secret als id angezeigt (bei secret chats ist die id eine kryptische Zahl)
- über das attribut defaultSecret werden die Messages im message set sicher verschickt
- Dazu muss man einmal set secretChat ausführen (oder den secretChat vom Empfänger senden)

Die Version ist als 0.4 im ersten Post angehängt / Doku ist auch upgedated


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

tagedieb

Hallo und Guten Abend
Ich wollte dieses vielversprechende Modul mal ausprobieren, doch es scheitert schon an der Erstellung das Devices Telegram  :'( - da ich mit meinem Anfängerwissen hier passen muss

ich habe etwas von einer DOKU gelesen, jedoch kann ich diese nicht finden   :'(
wo finde ich die Daten für den Hostnamen und den Port, welches  das  Modul erfordert?

Eine kleine Hilfestellung wäre nett

gruss tagedieb
FHEM 5.6 auf Cubitruck
CUL und Cul 868 und 2 HM LAN an Zbox
Remoteserver auf 2.Zboxi
HM-CC-RT-DN,HM-LC-Bl1PBU-FM,HM-LC-SW1-FM,HM-LC-SW4-PCB,HM-LC-Sw1PBU-FM,HM-PB-2-WM55,HM-PB-6-WM55,HM-SCI-3-FM,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SC-2,HM-SEC-TIS,HM-WDS10-TH-O u.viele mehr
diverse IT Empfänger und LW3

viegener

Zitat von: tagedieb am 22 Juni 2015, 22:02:38
Hallo und Guten Abend
Ich wollte dieses vielversprechende Modul mal ausprobieren, doch es scheitert schon an der Erstellung das Devices Telegram  :'( - da ich mit meinem Anfängerwissen hier passen muss

Hallo tagedieb,
Vorbedingung für den Betrieb des Moduls ist das Programm telegram-cli. Ich habe weiter oben im Thread ein sehr knappes howto zur Installation gemacht. Achtung diese erforder Unix/Linux als Betriebssystem.

Zitat von: tagedieb am 22 Juni 2015, 22:02:38
ich habe etwas von einer DOKU gelesen, jedoch kann ich diese nicht finden   :'(

Die Doku ist wie bei anderen Modulen auch im Modul selbst enthalten. Und wird nach Installation des Moduls in FHEM in commandref abgelegt (Englisch) wenn man folgenden Befehl im Wurzelverzeichnis von fhem ausführt. Näheres dazu findet sich auch im wiki

perl contrib/commandref_join.pl

Zitat von: tagedieb am 22 Juni 2015, 22:02:38
wo finde ich die Daten für den Hostnamen und den Port, welches  das  Modul erfordert?


Wie gesagt, es wird telegram-cli benötigt und hostname muss dann von dem Rechner angegeben werden auf dem telegram-cli laeuft. Den Portnamen gibt man beim Start von telegram-cli als Parameter an und diesen muss man dann hier angeben.

Wenn telegram-cli auf demselben Rechner wie fhem läuft reicht nur der Port.

Aber wie gesagt das ist auch in der Doku / commandref enthalten

Hoffe geholfen zu haben,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können