Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

Maista

Hallo Johannes

Alles klar.  Irgendwann werd ich auch durch steigen  :-[

Am Samstag komme ich wieder zum testen.
Geht gleich in "Fuck ju Göte".

Gruss

Gerd

Maista

#136
Hallo Johannes,

am PC ist das doch einfacher als am Smartphone.


  • Bild mit 35.4kB - Funktioniert
  • Bild mit 1.5MB - Funktioniert
  • Bild mit 2.1MB - Funktioniert nicht mehr > FHEM ist abgestürzt und musste in der Bash neu gestartet werden

Sieht so aus als hätte HttpUtils hier ein Problem ?
Datei zu gross?
Fehlten noch 350kB.
Offset outside string at FHEM/HttpUtils.pm line 372
Zitat2015.10.03 16:13:43 3: syswrite written data so far: 1720320:  current chunk :400265:
2015.10.03 16:13:43 3: syswrite returned ::  check
2015.10.03 16:13:43 3: directWriteFn phase 2 err? ::
2015.10.03 16:13:43 3: directWriteFn phase 2 Continues:
2015.10.03 16:13:43 3: directWriteFn entering with : 2:
2015.10.03 16:13:43 3: syswrite written data so far: 1736704:  current chunk :383881:
2015.10.03 16:13:43 3: syswrite returned ::  check
2015.10.03 16:13:43 3: directWriteFn phase 2 err? ::
2015.10.03 16:13:43 3: directWriteFn phase 2 Continues:
2015.10.03 16:13:43 3: directWriteFn entering with : 2:
2015.10.03 16:13:43 3: syswrite written data so far: 1753088:  current chunk :367497:
2015.10.03 16:13:43 3: syswrite returned ::  check
2015.10.03 16:13:43 3: directWriteFn phase 2 err? ::
2015.10.03 16:13:43 3: directWriteFn phase 2 Continues:
2015.10.03 16:13:43 3: directWriteFn entering with : 2:
2015.10.03 16:13:43 3: syswrite written data so far: 1769472:  current chunk :351113:
2015.10.03 16:13:43 3: syswrite returned ::  check
2015.10.03 16:13:43 3: directWriteFn phase 2 err? ::
2015.10.03 16:13:43 3: directWriteFn phase 2 Continues:
2015.10.03 16:13:54 3: HttpUtils url=https://api.telegram.org/bot122452545:Ajkhsdglhsgkhslkghslkghlskhg14/sendMessage
2015.10.03 16:13:54 3: directWriteFn entering with : 2:
Offset outside string at FHEM/HttpUtils.pm line 372.
2015.10.03 16:19:14 1: Including fhem.cfg

Die frage ist ob es Sinn macht so große Bilder zu verschicken.
Eventl. kannst Du ja auch zu große Dateien ablehnen?!
Am Smartphone werden die Bilder auch nicht 1:1 verschickt und verkleinert.

Das Bild kann überall auf der Platte stehen um es zu verschicken. Ist das beabsichtigt?

Funktioniert soweit also bestens!

Danke für die Arbeit. Werde dann mal weiter probieren.

Schönes Wochenende.

Gerd

viegener

Hallo Gerd,
Danke für den Test. Das mit den grossen Dateien ist sicher fragwürdig, allerdings ist die maximale Grösse offensichtlich abhängig von der PLattform und möglicherweise anderen Einflüssen. Ich habe gerade nochmals erfolgreich bis zu 8 MB übertragen. Bei 10MB und darüber macht wohl telegram schlapp, allerdings konnte ich bei mir 28MB ohne Absturz transferieren, dann kam von telegram eine Invalid-Meldung (vermutlich wg. Grösse).

Ich kann vielleicht einen Parameter vorsehen, der die Grösse beschränkt, ich habe das mal auf meine Liste gepackt.

Allerdings scheint mir die Meldung auch irgendwie komisch zu sein, denn offensichtlich läuft bei fhem die Übertragung zu Ende obwohl noch keine 2,1MB geschrieben wurden...

Auf welcher Plattform betreibst Du fhem, oder hattest Du das schon irgendwo erwähnt?

Johannes

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

Maista

Hallo Johannes,

Plattform ist ein RPi B.
Fhem V5.6

Gerd

viegener

Das klingt erstmal ähnlich (wobei ich einen PI 2 verwendet). Kannst Du mir Bescheid sagen, wenn das wieder passiert?

Ja das Bild kann überall stehen, ich wollte dazu keine Einschränkungen definieren. Ich hatte dabei keine Sicherheitsbedenken.


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

viegener

ich habe (in github) nochmals eine neue Version hochgeladen, die ein paar Neuerungen enthält

Die gesendeten Kommandos werden in einem Reading gespeichert (max 10) - reading StoredCommands

Über ein zusätzliches CommandKey word --> attribute cmdSentCommands
lassen sich diese direkt von einem CLient abrufen --> also man sendet das entsprechende commando und erhält eine Liste der letzten Kommandos zurück

Ausserdem habe ich ein paar Änderungen an der Doku gemacht und ein paar Fixes.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Maista

#141
Hallo Johannes

wann schläfst Du eigentlich? :P

Okay, die Meldung des Neustarts wird nun auch ausgegeben.
Soweit also Funktioniert das nun ebenso bei mir.

Das große Bild werde ich dann bei Gelegenheit noch mal los schicken.

Der Pi2 liegt noch in der Schublade.

Bis dahin , einen schönen Sonntag

Gerd

Maista

Hallo Johannes,

nach dem
Zitatshutdown restart

steht im Log
Zitat2015.10.04 13:35:44 3: TelegramBot_Define myfhemBot: called
2015.10.04 13:35:45 2: TelegramBot_DoUrlCommand myfhemBot: FAILED http access returned error :https://api.telegram.org/bot12000045:AAHnxUb_Bo1Wwxxxxxxxxxs9Dk/getMe: Can't connect(2) to https://api.telegram.org:443:  SSL wants a read first:

Verbose stand auf 1.

Habe nun noch einmal das 2.1MB Bild übertragen.
Diesmal gab es keine Probleme. Ging auch recht flott.

Verbose hatte ich zuvor auf 4 gesetzt.

Zitat
2015.10.04 13:52:42 3: syswrite written data so far: 2104201:  current chunk :7049:
2015.10.04 13:52:42 3: syswrite written data finally: 2104201:  length :2104201:
2015.10.04 13:52:42 3: directWriteFn phase 2 err? :<none>:
2015.10.04 13:52:42 3: directWriteFn phase 2 finished moving to 3:
2015.10.04 13:52:42 3: directWriteFn entering with : 3:
2015.10.04 13:52:42 3: directWriteFn cleanup :
2015.10.04 13:52:43 3: <hidden>: HTTP response code 200
2015.10.04 13:52:43 3: HttpUtils <hidden>: Got data, length: 765
2015.10.04 13:52:46 3: TelegramBot_Callback myfhemBot: resulted in :NonBlockingGet timed out on read from https://api.telegram.org/bot12000045:AAHnxUb_Bo1Wwxxxxxxxxxxxx9Dk/getUpdates?offset=0&limit=5&timeout=10: from Polling

Ist das Log soweit ok?

Gerd

viegener

Hallo Gerd,
2015.10.04 13:35:45 2: TelegramBot_DoUrlCommand myfhemBot: FAILED http access returned error :https://api.telegram.org/bot12000045:AAHnxUb_Bo1Wwxxxxxxxxxs9Dk/getMe: Can't connect(2) to https://api.telegram.org:443:  SSL wants a read first:

die Meldung ist unkritisch beim Start, ich werde aber trotzdem hier noch etwas mehr Fehlertoleranz einbauen, denn bei der SSL-Aushandlung zwischen telegram und fhem scheint das gelegentlich aufzutreten.

Ja der Transfer sieht gut aus.

2015.10.04 13:52:46 3: TelegramBot_Callback myfhemBot: resulted in :NonBlockingGet timed out on read from https://api.telegram.org/bot12000045:AAHnxUb_Bo1Wwxxxxxxxxxxxx9Dk/getUpdates?offset=0&limit=5&timeout=10: from Polling

Die Meldung hat mit dem Transfer nichts mehr zu tun und kommt gelegentlich, wenn der telegram-Server nicht in der vorgesehenen Zeit antwortet. Ich habe die timeouts hier bereits erhöht und normalerweise ist es nur unschön wg. des log-Eintrags.

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

Maista

#144
Hallo zusammen,

hier ein mal meine Anpassung der Mülleimer-Benachrichtigung aus http://www.fhemwiki.de/wiki/Pushover.

Was muss gemacht werden:

In der fhem.cfg wird die Konfiguration Telegram_Ereignisse.cfg definiert.
# Ereignisse laden und via Telegram ausgeben
include /opt/fhem/FHEM/Telegram_Ereignisse.cfg


In dieser wird der Kalender und das Ausgabe-Device (Telegram-Bot) vorgegeben.

Es muss in der Telegram_Ereignisse.cfg noch der Name des eigenen Telegram-Bots angepasst werden!
In meinem Beispiel ist das myfhemBot.

Die gewünschten Termine werden in der Datei /opt/fhem/FHEM/events.holiday abgelegt.
Das Format wird unter http://fhem.de/commandref.html#holiday oder http://fhem.de/commandref_DE.html#holiday erklärt.

Beide Dateien sind als Beispiel angehängt.

Gruss

Gerd

viegener

Hallo Gerd,
Danke für die Einstellung Deines Szenarios.

Mich bringt das auf die Idee, dass es Sinn machen könnte eine generische Schnittstelle für Messaging-Dienste zu haben.
Also dafür zu sorgen dass, telegram, yowsup(WhatsApp) und ähnliche die gleiche Syntax / Befehle Attirbute verwenden, dann sind solche Umstellungen in Zukunft gar nicht mehr nötig...

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

Maista

Hallo Johannes,

ja das wäre am einfachsten. Aber dazu müssten alle Dienste die gleichen Möglichkeiten/Optionen haben!?
Das Pushover usw. können auch Überschriften oder Tabellen erzeugen.
Man hat auch die Möglichkeit per RegEx bestimmte Gruppen ansprechen zu können.

Dazu müssten sich alle auf einen Nenner einigen  8)

Gute Nacht
Gerd


viegener

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

Maista

#148
Hallo Johannes,

das Aktuelle PM bringt Fehler Meldungen.
Ich habe nochmals ein "shutdown restart" gemacht.
Aber es klappt nicht mehr.
Im Log stehen diverse Meldungen das zwei Variablen Probleme machen.
Zitat
2015.10.06 17:28:28 1: Including /opt/fhem/FHEM/TelegramBot.cfg
Scalar value @clist[$cmdId] better written as $clist[$cmdId] at ./FHEM/50_TelegramBot.pm line 654.
2015.10.06 17:28:28 3: TelegramBot_Define myfhemBot: called

2015.10.06 07:30:25 0: Server started with 67 defined entities (version $Id: fhem.pl 9307 2015-09-25 18:44:20Z rudolfkoenig $, os linux, user fhem, pid 8237)
2015.10.06 07:30:27 3: get events today : Test Gruener Sack rausstellen
Test Gruener Sack rausstellen2015.10.06 07:30:27 1: PERL WARNING: Use of uninitialized value $addPar in concatenation (.) or string at ./FHEM/50_TelegramBot.pm line 828.


1 Minute, wie gewünscht,  habe ich gewartet mit etwas schreiben. Da aber das Event nach dem Restart ansteht geht/ging das nicht.

Habe den Event nach dem restart deaktiviert.
Nun ist der Bot wieder ansprechbar. Die Fehlermeldung  mit Zeile 828 kam diesmal nicht.
Nur die Zeile 654  ;)

Ich werde also erst ein mal das Event nach dem Starten draußen lassen.

Gerd

Edit1: Zeile 654 im PM wie von Perl vorgeschlagen, angepasst > Keine Meldung mehr
Edit2: cmdFavorites & Favoriten funktioniert Klasse! ;D
Edit3: Wenn man bei z.B. als cmdKeyword "/hey"  gesetzt hat und cmdFavorites mit "/" definiert, wird immer nur die Favoriten-Liste ausgegeben.

viegener

Zitat von: Maista am 06 Oktober 2015, 20:05:36

das Aktuelle PM bringt Fehler Meldungen.
Ich habe nochmals ein "shutdown restart" gemacht.
Aber es klappt nicht mehr.
Im Log stehen diverse Meldungen das zwei Variablen Probleme machen.
Nun ist der Bot wieder ansprechbar. Die Fehlermeldung  mit Zeile 828 kam diesmal nicht.
Nur die Zeile 654  ;)

Edit1: Zeile 654 im PM wie von Perl vorgeschlagen, angepasst > Keine Meldung mehr
Edit2: cmdFavorites & Favoriten funktioniert Klasse! ;D
Edit3: Wenn man bei z.B. als cmdKeyword "/hey"  gesetzt hat und cmdFavorites mit "/" definiert, wird immer nur die Favoriten-Liste ausgegeben.

Hallo Gerd,
die aktuelle version in Github sollte die Perlwarnungen nicht mehr bringen.
Allerdings konnte ich Dein Verhalten bei mir nicht nachvollziehen, auch mit einem notify beim Start.

Wichtig: Das Polling zum Empfang startet bereits seit der letzten Version verzögert, damit erst alle Attributwerte und auch der Server vollständig gestartet ist. Kannst Du das mit der neuesten Version nochmals prüfen?

Zu Deinem Edit 3: Die verschiedenen Komandokeywords dürfen nicht als Teil eines anderen Keywords vorkommen, da ja nach dem Keyword noch weitere Texte folgen können.

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