Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

viegener

Zitat von: JoJota am 23 November 2015, 15:26:32
Hallo Johannes,

Seit ca. letzter Woche funktioniert bei mir das Erzeugen einer neuen Zeile mit \n nicht mehr. \n erscheint in der ankommenden Nachricht zwar nicht mehr, wird aber nur durch einen Leerschlag statt einen Zeilenumbruch ersetzt. Woran könnte das liegen?

Gruß JoJota
Hallo Jojota,
sieht so aus, als ob da (leider mal wieder) eine Änderung auf der Telegram-Seite stattgefunden hat. Ich habe eine neue Version in github eingecheckt, bei der \n wieder funktionieren sollte...
Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Zitat von: nhetzke am 24 November 2015, 14:46:25
Hallo,

ich versuche mich gerade die Einbindung von Telegram in FHEM. Auf der Komandozeile habe ich die Kommunikation bereits erfolgreich testen können. Nun bin ich bei der Einbindung in FHEM ins Stocken geraten.
Mein Problem:
Nach dem Download des Modules: "50_TelegramBot.pm", Konfiguration in der fhem.cfg "define TelegraBot TelegramBot 130306834:---------vws-Vc" und Neustart von FHEM erhalte ich folgende Fehlermeldung:
Undefined subroutine &main::HttpUtils_Close called at ./FHEM/50_TelegramBot.pm line 1468.
Ist Deine FHEM-Installation aktuell? Die Routine HTTPUtils_Close gibt es eigentlich schon viele Monate.
Die Github-Version musst Du auch nur herunterladen, wenn Du eine neuere Version verwenden willst, als die offizielle Distribution, die mit FHEM verteilt wird.

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

Ralli

Hallo,

ich hätte noch einen kleinen Verbesserungsvorschlag.

Es wäre super, wenn man mehrere Adressaten angeben könnte. Beispiel:

set TelegramBotDev message @user1,@user2 Nachricht

... ich weiß, dass man auch an Gruppen schicken kann. Das ist aber nicht immer sinnvoll.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

masterpete23

kurze Frage: ich bekomm den Bot nicht in eine Gruppe - hat wer einen howto link oder so für mich?
Danke

JoJota

Zitat von: viegener am 24 November 2015, 22:49:29
Hallo Jojota,
sieht so aus, als ob da (leider mal wieder) eine Änderung auf der Telegram-Seite stattgefunden hat. Ich habe eine neue Version in github eingecheckt, bei der \n wieder funktionieren sollte...
Gruss,
Johannes

Hallo Johannes,
vielen Dank für die - mal wieder - schnelle Hilfe!
Aus der FHEM Kommandozeile heraus funktioniert \n wieder richtig, allerdings tritt das Problem bei einem Aufruf aus der 99_myUtils.pm weiterhin auf.
Nach etwas probieren habe ich herausgefunden, dass alle \n vorher escaped werden müssen, um im Telegram Modul auch als \n anzukommen. Anstelle von \n funktioniert jetzt nur noch \\n innerhalb der 99_myUtils.pm.

JoJota

Zitat von: masterpete23 am 25 November 2015, 11:42:03
kurze Frage: ich bekomm den Bot nicht in eine Gruppe - hat wer einen howto link oder so für mich?
Danke
Den Chat mit dem Bot öffnen, oben auf das Bild bzw. den Namen des Bots klicken. Anschließend rechts oben auf die drei Punkte klicken und dann "Zur Gruppe hinzufügen".

masterpete23

Kann ich nicht eine Gruppe mit ihm und mir machen? muss da zwingend noch wer anders mit drin sein, also vorher wohl

JoJota

Zitat von: masterpete23 am 25 November 2015, 12:08:26
Kann ich nicht eine Gruppe mit ihm und mir machen?

Doch, wenn du nur mit ihm einen neuen Chat beginnst. In der Telegram Suche @ und dann den Namen des Bots eingeben (z.b. @NameDesBots) und ihm dann eine Nachricht schreiben.

nhetzke

Zitat von: viegener am 24 November 2015, 22:59:47
Ist Deine FHEM-Installation aktuell? Die Routine HTTPUtils_Close gibt es eigentlich schon viele Monate.
Die Github-Version musst Du auch nur herunterladen, wenn Du eine neuere Version verwenden willst, als die offizielle Distribution, die mit FHEM verteilt wird.

Gruss,
Johannes

Hallo Johannes,

ich habe nun nochmal die PM Datei aus dem Verzeichnis genommen und ein Update von FHEM gemacht, inkl. "/usr/bin/perl ./contrib/commandref_join.pl" auf der CMD. Nun bekomme ich keine Fehler mehr ausgegeben. Augenscheinlich wird auch das define nun ohne Fehler gesetzt.

Wenn ich nun aber mittels dem Beispiel "set TelegraBot  message @@<Benutzername>" versenden möchte, erhalte ich immer "FAILED peer not found".
Hast du eine Idee?
Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

Ralli

Du musst zunächst das Attribut pollingTimeout setzen, damit das neue TelgramBot-Device mindestens einmal bei Telegram schauen geht, was für es da ist. Erst dann bekommt es die Kontakte mitgeteilt, die Du danach dann auch erst adressieren kannst (Du hast dann das Reading Contacts - so lange das nicht da ist, kannst Du jemanden, der da nicht drin steht, nicht adressieren).

Und vorher musst Du von dem User aus, der durch den Bot angeschrieben werden soll, eine Eröffnung an den Bot schreiben.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

nhetzke

Zitat von: Ralli am 25 November 2015, 13:06:58
Du musst zunächst das Attribut pollingTimeout setzen, damit das neue TelgramBot-Device mindestens einmal bei Telegram schauen geht, was für ihn da ist. Erst dann bekommt er die Kontakte mitgeteilt, die Du danach dann auch erst adressieren kannst (Du hast dann das Reading Contacts - so lange das nicht da ist, kannst Du jemanden, der da drin steht, nicht adressieren).

Und vorher musst Du von dem User aus, der durch den Bot angeschrieben werden soll, eine Eröffnung an den Bot schreiben.

Hi,

danke für die Hilfe an alle. Hab nun noch pollingTimeout 0 gesetzt und dem Bot eine Nachricht geschrieben. Danach ging dann auch die Nachricht von FHEM -> Telegram.

Danke
Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

speex

Hi nhetzke, ich würde dir mal empfehlen dich durch folgenden Wiki-Eintrag zu lesen denn "pollingtimeout 0" sollte zu Problemen führen wenn ich mich nicht irre. - Bei pollingtimeout 0 funktioniert doch die Kommunikaton von Telegram zu Fhem nicht oder hab ich was falsch in Erinnerung. http://www.fhemwiki.de/wiki/TelegramBot#Hinweise_zum_Betrieb_mit_Fhem

Desweiteren wenn du im TelegramBot-Device bist kannst du unten rechts auch auf "Device specific help" klicken und erhältst dann weitere Infos zum Modul.

Zitat von: nhetzke am 25 November 2015, 13:39:46
Hi,

danke für die Hilfe an alle. Hab nun noch pollingTimeout 0 gesetzt und dem Bot eine Nachricht geschrieben. Danach ging dann auch die Nachricht von FHEM -> Telegram.

Danke

Viel erfolg! :)

P.S. Die Möglichkeit mehrere Empfänger für eine Nachricht definieren zu können fände ich übrigens auch sehr cool!

viegener

Zitat von: speex am 25 November 2015, 16:47:22
Hi nhetzke, ich würde dir mal empfehlen dich durch folgenden Wiki-Eintrag zu lesen denn "pollingtimeout 0" sollte zu Problemen führen wenn ich mich nicht irre. - Bei pollingtimeout 0 funktioniert doch die Kommunikaton von Telegram zu Fhem nicht oder hab ich was falsch in Erinnerung. http://www.fhemwiki.de/wiki/TelegramBot#Hinweise_zum_Betrieb_mit_Fhem

Desweiteren wenn du im TelegramBot-Device bist kannst du unten rechts auch auf "Device specific help" klicken und erhältst dann weitere Infos zum Modul.

Viel erfolg! :)

Absolut richtig, pollingtimeout 0 heisst es wird NICHT nach Änderungen gefragt und damit werden keine Nachrichten empfangen (Es kann nur gesendet werden).

Versuche hier im "telegrammstil"  ;) die generelle Vorgehensweise nochmals aufzulisten aus dem Kopf (sollte so eigentlich auch im wiki/doku stehen, vielleicht nicht als eine Liste):

- Über telegram vom eigenen account beim Botfather einen neuen Bot anmelden
- Diesen Bot beim Botfather so konfigurieren, dass er Nachrichten auch aus Gruppen lesen kann (Optional, wenn man das braucht/nutzen will)
- API Token gut speichern und nicht weitergeben!
- define mit dem API token in FHEM
- Prüfen ob der device in fhem seinen Bot-Namen in den Internals hat, dann ist sicher, dass Verbindung zu telegram und identität des Bots klappt
- Für das Empfangen von Nachrichten noch das Attribut pollingTimeout auf einen Wert grösser 0 setzen (20 oder 60 sind übliche Werte)
- Testmessage an den bot vom eigenen Account schicken
- Nach einiger Zeit sollte die Nachricht in den Readings angezeigt werden - wenn nicht reset auf dem telegrambot Device ausführen und nochmals etwas warten
- Für alle weiteren Benutzer ERST eine Nachricht an den Bot senden, erst dann kann von FHEM aus an die Benutzer gesendet werden (Benutzer werden in Contacts abegelegt und man kann dadruch sehen, wer dem Bot bekannt ist)
- Weitere Konfiguration nach eigenem Geschmack...

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

Ralli

Zitat von: viegener am 25 November 2015, 17:06:30
- Für das Empfangen von Nachrichten noch das Attribut pollingTimeout auf einen Wert grösser 0 setzen (20 oder 60 sind übliche Werte)

Nach meiner Erfahrung muss das pollingTimeout auf jeden Fall nach der Definition einmal auf größer 0 gesetzt werden, um überhaupt einmal erst Kontakt zu Telegram herzustellen und ein Update der Kontaktliste zu bekommen.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

viegener

#284
Zitat von: Ralli am 25 November 2015, 17:13:56
Nach meiner Erfahrung muss das pollingTimeout auf jeden Fall nach der Definition einmal auf größer 0 gesetzt werden, um überhaupt einmal erst Kontakt zu Telegram herzustellen und ein Update der Kontaktliste zu bekommen.

OK habs gerade getested,zumindest der Name des Bots (im Internal me) wird auch ohne Pollingtimeout gesetzt.
Aber Du hast auf jeden Fall Recht, dass die Kontaktliste nur über Message-Polling aufgefrischt wird, da es leider keine Abfrage von Kontakten über das API gibt.

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