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: buki am 31 Juli 2016, 09:22:20
Danke für deine Antwort viegener.

Ich habe weder an der Konfiguration in fhem noch am Telegrambot etwas geändert.
Es ist so, dass Nachrichten verschickt werden können, jedoch kommen an den Bot gesendete Nachrichten nicht in fhem an und können deshalb nicht verarbeitet werden.


Wenn am telegrambot nichts geändert wurde und auch am Account des Bots nichts geändert wurde. Ist die Frage, was sich sonst geändert hat. Telegram selber funktioniert generell weiterhin. Der Account scheint auch noch senden zu können. Dann musst Du vermutlich nachprüfen, was sich geändert haben könnte: Also update von fhem oder linux? Netzwerkänderungen? andere fhem-Änderungen?

Hast Du fhem und den darauf laufenden Rechner mal runtergefahren und neu gestartet?

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

buki

Zitat von: viegener am 01 August 2016, 20:51:02
Wenn am telegrambot nichts geändert wurde und auch am Account des Bots nichts geändert wurde. Ist die Frage, was sich sonst geändert hat. Telegram selber funktioniert generell weiterhin. Der Account scheint auch noch senden zu können. Dann musst Du vermutlich nachprüfen, was sich geändert haben könnte: Also update von fhem oder linux? Netzwerkänderungen? andere fhem-Änderungen?

Hast Du fhem und den darauf laufenden Rechner mal runtergefahren und neu gestartet?



Es wurden keinerlei Netzwerkänderungen vorgenommen. Ich habe zwischenzeitlich Linux sowie fhem aktualisiert.
Der Rechner wurde schon ein paar mal neu gestartet.

viegener

Zitat von: buki am 01 August 2016, 21:21:16
Es wurden keinerlei Netzwerkänderungen vorgenommen. Ich habe zwischenzeitlich Linux sowie fhem aktualisiert.
Der Rechner wurde schon ein paar mal neu gestartet.


Wenn dir jemand helfen soll, musst Du schon etwas mehr an Infos herausgeben. Ich habe sonst das Gefühl Du veranstaltest ein Ratespiel
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

buki

Zitat von: viegener am 01 August 2016, 21:34:34
Wenn dir jemand helfen soll, musst Du schon etwas mehr an Infos herausgeben. Ich habe sonst das Gefühl Du veranstaltest ein Ratespiel

Es soll natürlich kein Ratespiel werden ;)
Welche Infos brauchst du?

viegener

Zitat von: Brockmann am 29 Juli 2016, 11:37:49
Frage bzw. vielleicht Featurewunsch:
Telegram unterstützt ja prinzipiell das Löschen von einzelnen Nachrichten eines Chats. Wird das auch von der API unterstützt und falls ja, könnte das Modul in Zukunft vielleicht darum erweitert werden?

Ich fände es praktisch, wenn FHEM Nachrichten, die sich zwischenzeitlich erledigt haben, selbst wieder löschen könnte, etwa wenn man sie bereits auf einem anderen Kanal bestätigt hat oder wenn sich die Situation ohnehin wieder verändert hat, etwa weil die Sensorwerte mittlerweile wieder im grünen Bereich sind.
Ich schicke mir beispielsweise bestimmte Hinweise oder Warnungen sowohl zur Anzeige auf lokale Tablets als auch per Telegram aufs Smartphone. Wenn jemand die Nachrichten am Tablet bestätigt, bekommt FHEM das mit und könnte sie dann auch bei Telegram wieder entfernen. So finde ich solche Nachricht immer auch auf dem Smartphone vor und muss sie ein zweites Mal löschen bzw. weiß nicht sicher, ob sich zuhause schon jemand drum gekümmert hat.

Generell fände ich aas auch eine gute Funktion, kenne aber momentan nur die Möglichkeit bot-nachrichten zu verändern. Das habe ich bisher noch nicht eingebaut, denn eine Löschfunktion kenn ich nicht.

Ich kenne aber auch im Telegram-Client keine Möglichkeit Nachrichten (bei anderen) zu löschen. Wenn im Client etwas gelöscht wird, bezieht sich das nach meinem Verständnis nur auf diesen Client. Bei anderen bleibt die Meldung weiterhin vorhanden.

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

Brockmann

Zitat von: viegener am 02 August 2016, 20:51:44
Ich kenne aber auch im Telegram-Client keine Möglichkeit Nachrichten (bei anderen) zu löschen. Wenn im Client etwas gelöscht wird, bezieht sich das nach meinem Verständnis nur auf diesen Client. Bei anderen bleibt die Meldung weiterhin vorhanden.
Sorry für mein Halbwissen. Ich habe noch mal genauer nachgelesen. Es gibt bei den geheimen Chats die Möglichkeit Nachrichten zu löschen bzw. mit einem Verfallsdatum zu versehen, nach dem sie automatisch gelöscht werden. Es wird dann sowohl beim Sender als auch beim Empfänger gelöscht. Aber eben nur in geheimen Chats.

Außerdem habe ich auch die Information gefunden, dass die Telegram Bot API das Löschen von Nachrichten derzeit nicht unterstützt. Insofern hat sich das Thema so oder so erstmal erledigt.
http://stackoverflow.com/questions/35269776/telegram-bot-how-to-delete-or-remove-a-message-or-media-from-a-channel-or-group

viegener

Zitat von: Brockmann am 03 August 2016, 08:54:27
Sorry für mein Halbwissen. Ich habe noch mal genauer nachgelesen. Es gibt bei den geheimen Chats die Möglichkeit Nachrichten zu löschen bzw. mit einem Verfallsdatum zu versehen, nach dem sie automatisch gelöscht werden. Es wird dann sowohl beim Sender als auch beim Empfänger gelöscht. Aber eben nur in geheimen Chats.

Außerdem habe ich auch die Information gefunden, dass die Telegram Bot API das Löschen von Nachrichten derzeit nicht unterstützt. Insofern hat sich das Thema so oder so erstmal erledigt.
http://stackoverflow.com/questions/35269776/telegram-bot-how-to-delete-or-remove-a-message-or-media-from-a-channel-or-group

Danke fürs Nachrecherchieren, denn ich habe die Anforderung bei mir für die Wetterbilder, die ich mir täglich zusenden lasse und die ich dann immer manuell löschen muss, da ich den Chat selbst nicht löschen möchte. Eine gute Lösung nur die aktuellen Wettervorhersagen vorzuhalten fehlt mir auch noch.

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

Knorki

Hallo Zusammen,

ich hab TelegramBot bei mir eingerichtet. Funktioniert soweit alles sehr gut. Nachrichten senden, empfangen, alles klappt.
Was mir aufgefallen ist: Im Logfile finde ich zahlreiche Einträge wie

2016.08.07 00:00:11 3: TelegramBot_Callback Telegram: Digest: Number of poll failures on 2016-08-06 is :1589:

Kann da jemand was mit anfangen? Google und Forum-Suche hat irgendwie nichts gescheites ergeben. Danke für eure Mithilfe.

Stefan

viegener

Zitat von: Knorki am 08 August 2016, 22:34:04
Hallo Zusammen,

ich hab TelegramBot bei mir eingerichtet. Funktioniert soweit alles sehr gut. Nachrichten senden, empfangen, alles klappt.
Was mir aufgefallen ist: Im Logfile finde ich zahlreiche Einträge wie

2016.08.07 00:00:11 3: TelegramBot_Callback Telegram: Digest: Number of poll failures on 2016-08-06 is :1589:

Kann da jemand was mit anfangen? Google und Forum-Suche hat irgendwie nichts gescheites ergeben. Danke für eure Mithilfe.

Stefan

Kurz zur Erklärung: Der TelegramBot baut eine Verbindung zum Telegram-Server auf, um über eingehende nachrichten für den Bot informiert zu werden (sogenanntes long poll). Diese Verbindung wird über einige Zeit gehalten (Attribut pollingTimeout ). Ein "poll failure" tritt auf, wenn es zu einem Fehler in dieser Verbindung kommt. Über das Attribut pollingVerbose lässt sich steuern wie detailliert die Fehler im log vermeldet werden. Default ist einmal in 24h wird nur die Anzahl der Fehler gemeldet (wie bei Dir).

Normalerweise sind eine kleine (meist einstellige Anzahl) von Fehlern, bei Dir sind es aber relativ viele. Bei einem angenommenen Timeout von 15sec sind es normalerweise etwa 6000 Polls in 24h, wenn also 1600 davon schiefgehen, ist etwas faul.

Somit wäre es vermutlich gut herauszufinden was das für Fehler sind, der jeweils letzte Fehler steht im Reading PollingLastError. Vielleicht wäre es sinnvoll mal pollingVerbose auf 2_Log zu setzen und die Fehler anzuschauen.

Gründe können Netzwerkinstabilität sein (sowohl von FHEM zum Router, als auch in der Internetanbindung). Manchmal kommt es auch vor dass die Telegramserver an einem Tag mal Probleme machen, das ist aber bei mir noch nicht über mehrere Tage passiert.

Also nicht besorgniserregend, aber es deutet auf ein Problem hin, wenn die Anzahl der Fehler über mehrere Tage hoch bleibt.





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

Knorki

Hallo,

ich hab pollingVerbose auf 2_Log gesetzt und bekomme nun nachstehende Fehlermeldungen ins log:
2016.08.10 16:41:01 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:41:21 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:42:17 2: TelegramBot_Callback Telegram: resulted in :SUCCESS: from Polling
2016.08.10 16:42:46 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:43:30 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:44:24 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling

Gruß
Stefan

viegener

Zitat von: Knorki am 10 August 2016, 16:47:14
Hallo,

ich hab pollingVerbose auf 2_Log gesetzt und bekomme nun nachstehende Fehlermeldungen ins log:
2016.08.10 16:41:01 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:41:21 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:42:17 2: TelegramBot_Callback Telegram: resulted in :SUCCESS: from Polling
2016.08.10 16:42:46 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:43:30 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling
2016.08.10 16:44:24 2: TelegramBot_Callback Telegram: resulted in :NonBlockingGet timed out on read from <hidden> after 245s: from Polling

Gruß
Stefan

Ich empfehle in der commandref polligTimeout auf einen Wert zwischen 15 und 60 zu setzen (auch weil Telegram intern einen Timeout hat, der meines Wissens unter 245s liegt):

ZitatpollingTimeout <number>
Used to specify the timeout for long polling of updates. A value of 0 is switching off any long poll. In this case no updates are automatically received and therefore also no messages can be received. It is recommended to set the pollingtimeout to a reasonable time between 15 (not too short) and 60 (to avoid broken connections).

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

DS_Starter

Hallo Johannes,

ich benutze nun ebenfalls dein Modul und bin dabei die Funktionen die es bietet in mein FHEM zu integrieren.
Vielen Dank für deine Arbeit !  :)

Beim Versenden von Kamerasnapshots (ca. 1,8 Mb pro Bild ) bin ich fast immer in einen Timeout gelaufen und das Bild/die Message wurde natürlich nicht versendet:

NonBlockingGet: returned write to https://api.telegram.org:443 timed out

Das Problem habe ich beseitigt, indem ich den Timeout-Parameter im Code auf 40 gesetzt habe:

my %TelegramBot_hu_do_params = (
                  url        => "",
                  timeout    => 40,
                  method     => "GET",
                  header     => $TelegramBot_header,
                  hideurl    => 1,
                  callback   => \&TelegramBot_Callback
);


Wahrscheinlich ist meine Internetanbindung in Verbindung mit vllt. noch anderen Faktoren etwas zu langsam.
Natürlich ist diese Anpassung beim nächsten Update wieder weg sofern ich das Modul nicht vom Update ausnehme was ich natürlich nicht möchte.

Deswegen die Frage, ob du nicht ein Attribut (z.B. httptimeout) einbauen könntest, mit dem der User diesen Timeout-Wert in seiner Umgebung anpassen könnte. So ein Feature wäre sicherlich auch für andere Nutzer m.M. nach recht hilfreich.

Danke und Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

viegener

@DS_Starter: Macht Sinn. Ich nehme das auf die Todoliste auf / für nach dem Urlaub  :)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Knorki

Zitat von: viegener am 10 August 2016, 17:01:58
Ich empfehle in der commandref polligTimeout auf einen Wert zwischen 15 und 60 zu setzen (auch weil Telegram intern einen Timeout hat, der meines Wissens unter 245s liegt):

Hi,

hab ich gemacht, und schon siehts deutlich besser aus:
2016.08.12 00:00:12 3: TelegramBot_Callback Telegram: Digest: Number of poll failures on 2016-08-11 is :2:

Vielen Dank

Stefan

arokh12

Hallo,

ich bin gerade dabei, von yowsup zu telegram zu wechseln. Ich habe bei mir einzelne 3 Kontakte eingerichtet. Das Senden von FHEM an jeden Einzelnen Kontakt funktioniert problemlos.

Per Yowsup habe ich vorher aus meinen Utils Programm-Dateien alle nacheinander aufgerufen. (set yowsup msg <Nummer> Text; set yowsup2 msg <Nummer> Text;...). Jetzt habe ich das ganze an Telegram angepasst (set Telegram1 message Text;; set Telegram2 message Text;...).

Dabei stellte sich das folgende Problem heraus, das der letzte in der Auflistung die Nachricht bekommt, und die anderen beiden, die davor aufgerufen werden, die Nachricht nicht verschickt wird.

Im Internal sentMsgResult steht dann dauerhaft waiting. Woran kann das liegen?

Vielen Dank im voraus

arokh12