Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

Betonklotz

Zitat von: amenomade am 18 Mai 2020, 02:42:44
Ich weiss nicht, ob das mit Alias funktionieren würde, aber was ich hier sehe kann auf keinen Fall funktionieren

Leider nein, wäre auch zu einfach gewesen:

2020.05.18 11:29:54 3: Forbidden command perl for Haus_bot
2020.05.18 11:29:54 1: stacktrace:
2020.05.18 11:29:54 1:     main::allowed_Authorize             called by fhem.pl (3775)
2020.05.18 11:29:54 1:     main::CallFn                        called by fhem.pl (5632)
2020.05.18 11:29:54 1:     main::Authorized                    called by fhem.pl (1115)
2020.05.18 11:29:54 1:     main::AnalyzePerlCommand            called by fhem.pl (1171)
2020.05.18 11:29:54 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.05.18 11:29:54 1:     main::AnalyzeCommandChain           called by ./FHEM/98_cmdalias.pm (92)
2020.05.18 11:29:54 1:     main::CommandCmdAlias               called by fhem.pl (1247)
2020.05.18 11:29:54 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.05.18 11:29:54 1:     main::AnalyzeCommandChain           called by ./FHEM/50_TelegramBot.pm (1427)
2020.05.18 11:29:54 1:     main::TelegramBot_ExecuteCommand    called by ./FHEM/50_TelegramBot.pm (1260)
2020.05.18 11:29:54 1:     main::TelegramBot_SendFavorites     called by ./FHEM/50_TelegramBot.pm (1574)
2020.05.18 11:29:54 1:     main::Telegram_HandleCommandInMessages called by ./FHEM/50_TelegramBot.pm (2603)
2020.05.18 11:29:54 1:     main::TelegramBot_ParseMsg          called by ./FHEM/50_TelegramBot.pm (2281)
2020.05.18 11:29:54 1:     main::TelegramBot_Callback          called by FHEM/HttpUtils.pm (634)
2020.05.18 11:29:54 1:     main::__ANON__                      called by fhem.pl (754)
2020.05.18 11:29:54 3: TelegramBot_ExecuteCommand Haus_bot: cmd executed :tiefbrunnenpumpe_an: -->    :Forbidden command {Tiefbrunnenpumpe_schalten ("an")}.:


bei allowed commands

tiefbrunnenpumpe_an, Tiefbrunnenpumpe_an, Tiefbrunnenpumpe_schalten

viegener

Zitat von: Betonklotz am 18 Mai 2020, 11:35:01
Leider nein, wäre auch zu einfach gewesen:

2020.05.18 11:29:54 3: Forbidden command perl for Haus_bot
2020.05.18 11:29:54 1: stacktrace:
2020.05.18 11:29:54 1:     main::allowed_Authorize             called by fhem.pl (3775)
2020.05.18 11:29:54 1:     main::CallFn                        called by fhem.pl (5632)
2020.05.18 11:29:54 1:     main::Authorized                    called by fhem.pl (1115)
2020.05.18 11:29:54 1:     main::AnalyzePerlCommand            called by fhem.pl (1171)
2020.05.18 11:29:54 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.05.18 11:29:54 1:     main::AnalyzeCommandChain           called by ./FHEM/98_cmdalias.pm (92)
2020.05.18 11:29:54 1:     main::CommandCmdAlias               called by fhem.pl (1247)
2020.05.18 11:29:54 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.05.18 11:29:54 1:     main::AnalyzeCommandChain           called by ./FHEM/50_TelegramBot.pm (1427)
2020.05.18 11:29:54 1:     main::TelegramBot_ExecuteCommand    called by ./FHEM/50_TelegramBot.pm (1260)
2020.05.18 11:29:54 1:     main::TelegramBot_SendFavorites     called by ./FHEM/50_TelegramBot.pm (1574)
2020.05.18 11:29:54 1:     main::Telegram_HandleCommandInMessages called by ./FHEM/50_TelegramBot.pm (2603)
2020.05.18 11:29:54 1:     main::TelegramBot_ParseMsg          called by ./FHEM/50_TelegramBot.pm (2281)
2020.05.18 11:29:54 1:     main::TelegramBot_Callback          called by FHEM/HttpUtils.pm (634)
2020.05.18 11:29:54 1:     main::__ANON__                      called by fhem.pl (754)
2020.05.18 11:29:54 3: TelegramBot_ExecuteCommand Haus_bot: cmd executed :tiefbrunnenpumpe_an: -->    :Forbidden command {Tiefbrunnenpumpe_schalten ("an")}.:


bei allowed commands

tiefbrunnenpumpe_an, Tiefbrunnenpumpe_an, Tiefbrunnenpumpe_schalten


OK, dann ist die Prüfung in FHEM für allowed Commands entsprechend restriktiv auch alias aufzulösen. Das ist ja an sich gut für die Sicherheit, aber natürlich keine Lösung für Dich.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

stefanovic88

#2462
Hallo zusammen,

ich nutze den Telegram Bot nun schon seit einiger Zeit zum Schicken von Bildern vor der Haustüre wenn jemand klingelt.
Nun hat das ganze hervorragend funktioniert, bis gestern Abend. Seit heute geht das nicht mehr und ich sehe immer im Log folgendes:

2020.07.02 17:02:52 3: TelegramBot_Callback zz: resulted in NonBlockingGet timed out on read from <hidden> after 30s from SendIt
2020.07.02 17:02:52 3: TelegramBot_Callback zz: Reached max retries (ret: NonBlockingGet timed out on read from <hidden> after 30s) for msg -[id] : /opt/fhem/www/snapshots/InstarHaustuere_snapshot.jpg

Daraufhin habe ich mal versucht FHEM zu updaten , neustarten, hat aber nicht geholfen.

Im Wiki (https://wiki.fhem.de/wiki/MsgDialog) bin ich auf die Meldung gestoßen und es wurde ein UTF Thema suggeriert, kann ich aber nicht vorstellen, da es nur ein Image ist. Trotzdem habe ich das genannte Attribut für die UTF-8 Kodierung gesetzt.

Habe versucht andere Images zu schicken im FHEM Verzeichnis, bei manchen gehts.
Habe auch versucht relative Pfade zu nutzen, ging gar nicht, da hat er gleich nach Befehleingabe gemeckert, checkt wohl den Pfad.
Mir kommt es vor als findet er das Image aber hat Perobleme das zu senden.
Hat irgendjemand einen Tip?

Danke & Gruß



viegener

Zitat von: stefanovic88 am 02 Juli 2020, 17:25:45
Hallo zusammen,

ich nutze den Telegram Bot nun schon seit einiger Zeit zum Schicken von Bildern vor der Haustüre wenn jemand klingelt.
Nun hat das ganze hervorragend funktioniert, bis gestern Abend. Seit heute geht das nicht mehr und ich sehe immer im Log folgendes:

2020.07.02 17:02:52 3: TelegramBot_Callback zz: resulted in NonBlockingGet timed out on read from <hidden> after 30s from SendIt
2020.07.02 17:02:52 3: TelegramBot_Callback zz: Reached max retries (ret: NonBlockingGet timed out on read from <hidden> after 30s) for msg -[id] : /opt/fhem/www/snapshots/InstarHaustuere_snapshot.jpg

Daraufhin habe ich mal versucht FHEM zu updaten , neustarten, hat aber nicht geholfen.

Im Wiki (https://wiki.fhem.de/wiki/MsgDialog) bin ich auf die Meldung gestoßen und es wurde ein UTF Thema suggeriert, kann ich aber nicht vorstellen, da es nur ein Image ist. Trotzdem habe ich das genannte Attribut für die UTF-8 Kodierung gesetzt.

Habe versucht andere Images zu schicken im FHEM Verzeichnis, bei manchen gehts.
Habe auch versucht relative Pfade zu nutzen, ging gar nicht, da hat er gleich nach Befehleingabe gemeckert, checkt wohl den Pfad.
Mir kommt es vor als findet er das Image aber hat Perobleme das zu senden.
Hat irgendjemand einen Tip?

Danke & Gruß

Wie gross sind denn die Bilder - sind diese unterschiedlich gross (gibt es nur Probleme bei grossen Bildern ?)

Relative Pfade sollten schon gehen aber kommt eben drauf an relativ zu was...

Ich denke mit UTF8 sollte das hier eher nichts zu tun haben.

Generell immer die Frage was hat sich geändert oder was könnte sich geändert haben also auch externe Einflüsse.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

stefanovic88

Zitat von: viegener am 02 Juli 2020, 20:27:29
Wie gross sind denn die Bilder - sind diese unterschiedlich gross (gibt es nur Probleme bei grossen Bildern ?)

Relative Pfade sollten schon gehen aber kommt eben drauf an relativ zu was...

Ich denke mit UTF8 sollte das hier eher nichts zu tun haben.

Generell immer die Frage was hat sich geändert oder was könnte sich geändert haben also auch externe Einflüsse.

Mit kleinen ich sage jetzt mal unter 50 kb kein Problem. Wenn ich jetzt welche mit 100 kb + versuche bekomme ich den Fehler. Regulär die kamera Bilder sind ca 500 kb.

Das System läuft eigentlich ohne große Eingriffe. Über die Nacht bis morgens wurde nichts gemacht, Updates werden auch nur manuell installiert. Wie gesagt FHEM Update wurde gemacht, aber eigentlich als Lösungsidee, da es ja seid morgens nicht mehr ging.

Speicherplatz habe ich mal gecheckt, sollte alles ok sein. Könnte ggf schon an der Image Größe liegen, wobei ich mir jetzt nicht vorstellen kann warum plötzlich 500kb Bilder ein Problem darstellen sollten.

stefanovic88

Nun ja, was soll ich sagen, nachdem ich mich über ein Tag lang damit beschäfigt habe, scheint es seit ein paar Minuten wieder zu gehen. Fotos lassen sich auch wieder ohen Probleme versenden.

viegener

Zitat von: stefanovic88 am 03 Juli 2020, 14:10:47
Nun ja, was soll ich sagen, nachdem ich mich über ein Tag lang damit beschäfigt habe, scheint es seit ein paar Minuten wieder zu gehen. Fotos lassen sich auch wieder ohen Probleme versenden.

Gut zu hören, es auch in der Vergangenheit immer mal wieder bei Telegram lokale Effekte, die zu temporären Ausfällen geführt haben. Das dabei Bilder betroffen sind ist allerdings neu.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TWART016

Gibt es die Möglichkeit vom Server eine Nachricht an einen User zu senden und zusätzlich 2 Buttons einzufügen (Ja / Nein) ähnlich wie bei cmdFavorites.

viegener

Zitat von: TWART016 am 09 Juli 2020, 15:24:38
Gibt es die Möglichkeit vom Server eine Nachricht an einen User zu senden und zusätzlich 2 Buttons einzufügen (Ja / Nein) ähnlich wie bei cmdFavorites.

Generell gibt es die Möglichkeit über queryInline . Allerdings musst Du dann selbst auf die zurückkomende QUery Id reagieren
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TWART016

Ziel ist es folgendes zu Senden:
set Telegram queryInline (Ja,einschalten|Nein,ausgeschalten) Soll das Licht eingeschalten werden?

Bei Ja, möchte ich dann mit einem notify das Licht einschalten. Über die Internals sehe ich den zuletzt gesendeten Text. Wenn zwischendurch was anderes gesendet wird, verliert er die Zuordnung.

Kann man das mit dem Modul abfangen, oder muss ich mir was mit eigenen Readings bauen bzw. den Text bei queryInline so eindeutig, dass er einmalig ist?

flummy1978

Zitat von: TWART016 am 09 Juli 2020, 23:51:03
Ziel ist es folgendes zu Senden:
set Telegram queryInline (Ja,einschalten|Nein,ausgeschalten) Soll das Licht eingeschalten werden?

Das funktioniert wunderbar, ALLERDINGS ist es wichtig, IMMER den Text hinten dran zu schicken und einen Empfänger auszuwählen. Ohne funktioniert es nicht.

Ich habe das Ganze über ein eigenen Teil in myUtils gelöst, weil dort doch ein paar Sachen beachtet werden müssen, inkl Sicherheitssachen und und und

Grüße
Andreas

TWART016

Zitat von: flummy1978 am 12 Juli 2020, 16:23:44
Das funktioniert wunderbar, ALLERDINGS ist es wichtig, IMMER den Text hinten dran zu schicken und einen Empfänger auszuwählen. Ohne funktioniert es nicht.

Ich habe das Ganze über ein eigenen Teil in myUtils gelöst, weil dort doch ein paar Sachen beachtet werden müssen, inkl Sicherheitssachen und und und

Wie meinst du das? Wie sieht die myUtils aus?

flummy1978

Die myUtils ist erstmal wurscht (es sei denn Du kannst Perl ein wenig - das weiss ich ja nicht) aber mach einfach mal in Deinem Fhem (wenn Telegram eingerichtet ist):

set telegram_device queryInline @ID/Name (Einschalten:TextEIN) (Ausschalten:TextAUS) textvorButtons

Dann weisst Du was die myUtils ausgeben müsste. Ich habs leider noch nicht hinbekommen die Buttons in einer Zeile zu machen (müsste auch irgendwie gehen) Da ich aber meist mehr als 2 oder einen Button habe, hab ich dort keine Mühen mehr reingesteckt  ;)

Wenns hilft ist gut, bei Fragen fragen :)

Andreas

TWART016

Zitat von: flummy1978 am 12 Juli 2020, 18:51:17
Die myUtils ist erstmal wurscht (es sei denn Du kannst Perl ein wenig - das weiss ich ja nicht) aber mach einfach mal in Deinem Fhem (wenn Telegram eingerichtet ist):

set telegram_device queryInline @ID/Name (Einschalten:TextEIN) (Ausschalten:TextAUS) textvorButtons

Dann weisst Du was die myUtils ausgeben müsste. Ich habs leider noch nicht hinbekommen die Buttons in einer Zeile zu machen (müsste auch irgendwie gehen) Da ich aber meist mehr als 2 oder einen Button habe, hab ich dort keine Mühen mehr reingesteckt  ;)

Wenns hilft ist gut, bei Fragen fragen :)

Andreas
Ich glaube ich bin da schon ein bisschen weiter. Mit diesem Code bekomme ich das gleiche hin, weil das Attribut defaultPeer gesetzt ist. Solltest du dir vllt mal ansehen ;)

set Telegram queryInline (Ja:einschalten|Nein:ausgeschalten) Soll das Licht eingeschalten werden?

attr Telegram defaultPeer Name


Damit funktioniert es übrigens in einer Zeile
(Ja:einschalten|Nein:ausgeschalten)


Meine Frage war eigentlich wie ich die Zuordnung von der Antwort zuweisen kann. Das konnte ich mit dem Doppelpunkt lösen und dahinter einen einmaligen Text definieren.
Vielen Dank für die Hilfe.

flummy1978

Das Default Peer hab ich bei mir aktiviert, aber war hier nicht die Frage und ich weiß genau wie ich mich am Anfang dusselig gesucht hab, warum das Beispiel aus dem Forum (ohne Empfänger) nicht funktionierte  ;D ::)

Zitat von: TWART016 am 12 Juli 2020, 20:26:03
Damit funktioniert es übrigens in einer Zeile
(Ja:einschalten|Nein:ausgeschalten)


Meine Frage war eigentlich wie ich die Zuordnung von der Antwort zuweisen kann. Das konnte ich mit dem Doppelpunkt lösen und dahinter einen einmaligen Text definieren.
Vielen Dank für die Hilfe.
Perfekt .. habsch auch was gelernt ;)

Und Memo an mich selbst: Manchmal hilft auch vernünfitig lesen (oder besser verstehen) .... ich hab mich im ersten Moment gewundert, ob ich es falsch verstanden habe, warum das bei Dir so nicht funktionierte und irgendwie den Unterschied "Ja,einschalten" zu "Ja:einschalten" dezent ignoriert.... sorry

Hauptsache es hat geholfen und Du bist einen Schritt weiter als vor Deiner Frage  8)

Viele Grüße
Andreas