Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

hartenthaler

Laut Doku muss man Dateinamen mit Leerzeichen in "" einfassen. Geht aber nicht. Das Escapen der Leerzeichen durch "\ " bringt keine Veränderung. Das Ersetzen der Leerzeichen durch %20 führt dazu, dass das File nicht gefunden wird. Also auch keine Lösung. Einziger Work-Around ist das Umbenennen der Datei.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

micomat

#811
Hallo zusammen,

ich habe eben erfolgreich den TelegramBot integriert, habe nur ein Problem.
Mein DOIF loest mit gesetztem "do always" unendlich oft hintereinander aus?!
define test DOIF ([telegrambot:msgText] eq "Leistung") (set telegrambot message [Zaehler_Gesamt:Leistung])
attr test do always
attr test event-on-update-reading msgText


Ich kapier nur nicht wieso? Das Reading msgText updatet nur einmalig.

[EDIT]
Habs mit cmdPause nun geloest
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Brockmann

Zitat von: micomat am 31 August 2016, 22:40:22
Ich kapier nur nicht wieso? Das Reading msgText updatet nur einmalig.
1. Müsste es nicht attr telegrambot event-on-update-reading msgText heißen?
2. Das DOIF wird getriggert, wenn telegrambot ein Event erzeugt, also irgendein Reading oder Status von telegrambot aktualisiert wird. Wenn dann die Bedingung stimmt, löst es aus. Und die Bedingung stimmt ja solange, bis in msgText was anderes steht.

Ich triggere bei meinen DOIFs nicht auf das Reading, sondern auf das Event. So kann das DOIF nur einmal in dem Moment getriggert werden, wo einen Nachricht ankommt, weil die Bedingung nur in dem Moment wahr ist:
define test DOIF ([telegrambot:"Leistung") (set telegrambot message [Zaehler_Gesamt:Leistung])
attr test do always


Das reagiert, wenn Telegram eine Nachricht empfängt, die das Wort "Leistung" enthält. Voraussetzung ist wie oben beschrieben attr telegrambot event-on-update-reading msgText bzw. zumindest Events durch prevMsgText usw. sollten unterdrückt werden.

micomat

Danke, werde ich testen :)
EDIT:
Klappt, danke :) naechtlicher Denkfehler
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

viegener

Zitat von: hartenthaler am 28 August 2016, 05:31:39
Laut Doku muss man Dateinamen mit Leerzeichen in "" einfassen. Geht aber nicht. Das Escapen der Leerzeichen durch "\ " bringt keine Veränderung. Das Ersetzen der Leerzeichen durch %20 führt dazu, dass das File nicht gefunden wird. Also auch keine Lösung. Einziger Work-Around ist das Umbenennen der Datei.

Das ist leider richtig, Dateien mit Leerzeichen funktionieren momentan auch nicht mit Anführungsstrichen, ich muss mir dafür eine neuen Ansatz überlegen.

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

Muschelpuster

Na ja, vielleicht bin ich da etwas altmodisch, aber bei Dateinamen mit Leerzeichen beschleicht mich immer ein leichtes Unwohlsein. Ich weiß, dass das immer mehr gemacht wird, trotzdem halte ich es für eine Unsitte.

altmodische Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

RitterSport

Hallo,

kann mir jemand sagen woran es liegt wenn ich bei bestimmten Sendeversuchen folgendes bekomme:
PollingLastError

NonBlockingGet timed out on read from <hidden> after 65s 2016-09-07 18:05:20



viegener

Zitat von: RitterSport am 07 September 2016, 18:07:28
Hallo,

kann mir jemand sagen woran es liegt wenn ich bei bestimmten Sendeversuchen folgendes bekomme:
PollingLastError

NonBlockingGet timed out on read from <hidden> after 65s 2016-09-07 18:05:20


Die Fehlermeldung bezieht sich eigentlich auf Nachrichtenempfang, nicht auf das Senden. Ein Zusammenhang mit Sendeversuchen wäre mir jetzt nicht aufgefallen bisher. Eine gewisse Anzahl solcher Meldungen am Tag sind auch bei stabilem Internetzugang normal. Siehe dazu auch weiter oben im Thread.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Carsten

Hallo und erstmal vielen Dank für das Modul.
Funktioniert super!

Wäre es möglich, noch den Messagetyp Location zu integrieren?
Das Format sieht nicht so wahnsinnig komplex aus ( Lat. und Long )

Bräuchte das sowohl auf Empfangs- als auch Sendeseite.

viegener

Zitat von: Carsten am 20 September 2016, 14:47:20
Hallo und erstmal vielen Dank für das Modul.
Funktioniert super!

Wäre es möglich, noch den Messagetyp Location zu integrieren?
Das Format sieht nicht so wahnsinnig komplex aus ( Lat. und Long )

Bräuchte das sowohl auf Empfangs- als auch Sendeseite.

Ich habe mir dazu ein paar Gedanken gemacht, das müsste siche realisieren lassen. Sollte sich für die nächste Version machen lassen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Carsten

Zitat von: viegener am 22 September 2016, 23:25:14
Ich habe mir dazu ein paar Gedanken gemacht, das müsste siche realisieren lassen. Sollte sich für die nächste Version machen lassen.
Super! Ich war gerade dabei mir anzuschauen, wie ich das selbst reingewurschtelt kriege, aber dann hätte ich wieder das gleiche Problem wie bei yowsup, dass ich das nach jedem Update wieder reinwurschteln muss.  :)

Beim Schauen bin ich über die Inline-Keyboards gestolpert. Gibts ne Möglichkeit die für eigene Zwecke zu "mißbrauchen"?

viegener

Zitat von: Carsten am 22 September 2016, 23:54:36
Super! Ich war gerade dabei mir anzuschauen, wie ich das selbst reingewurschtelt kriege, aber dann hätte ich wieder das gleiche Problem wie bei yowsup, dass ich das nach jedem Update wieder reinwurschteln muss.  :)


Es gibt eine Version in github (siehe erstes Post), die sowohl locations senden kann und ausserdem venues und locations empfangen. Die empfangenen Koordinaten werden im msgText Reading abgelegt. Von dort muss man sie dann entsprechend weiterverabeiten.

Kannst Du gerne mal testen und Feedback geben, ich bin mal wieder geschäftlich unterwegs, deshalb stelle ich die offizielle Version erst später um.

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

viegener

Zitat von: hartenthaler am 28 August 2016, 05:31:39
Laut Doku muss man Dateinamen mit Leerzeichen in "" einfassen. Geht aber nicht. Das Escapen der Leerzeichen durch "\ " bringt keine Veränderung. Das Ersetzen der Leerzeichen durch %20 führt dazu, dass das File nicht gefunden wird. Also auch keine Lösung. Einziger Work-Around ist das Umbenennen der Datei.

Die neue Version in github kann auch Dateien mit Leerzeichen behandeln:

- Dazu gibt es ein Attribut: filenameUrlEscape, mit dem man einstellen kann, dass die Dateinamen mit URL-Escapezeichen angegeben werden. Wenn dieses Attribut auf 1 gesetzt ist, wird zum Beispiel %20 in ein Leerzeichen umgesetzt. Der Standard ist KEINE Ersetzung also 0.
zum Thema URL-Encoding siehe auch: https://wiki.selfhtml.org/wiki/Glossar:URL-Codierung

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

viegener

Zitat von: Carsten am 22 September 2016, 23:54:36
Beim Schauen bin ich über die Inline-Keyboards gestolpert. Gibts ne Möglichkeit die für eigene Zwecke zu "mißbrauchen"?

Bisher habe ich keine Möglichkeit geschaffen die Keyboards selbst zu nutzen, denn die Angabe über FHEM-Kommandos wäre ziemlich fehlerträchtig. Das bezieht sich entsprechend auch auf Inline-Keyboards.

Mir fehlt auch ein wenig ein guter use case dafür...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Carsten

Zitat von: viegener am 25 September 2016, 14:20:35
Bisher habe ich keine Möglichkeit geschaffen die Keyboards selbst zu nutzen, denn die Angabe über FHEM-Kommandos wäre ziemlich fehlerträchtig. Das bezieht sich entsprechend auch auf Inline-Keyboards.

Mir fehlt auch ein wenig ein guter use case dafür...
Hi, ich gebe zu, mein Anwendungsfall ist vielleicht auch etwas speziell und ich weiß auch gar nicht, ob das so funktionieren würde, wie ich es bräuchte, da es um einen Gruppenchat geht.
Ich nutze das Modul ( in diesem Fall ) nicht zum direkten Fernsteuern/Abfragen von FHEM, sondern als kleinen "Einsatzbot" für meine Löschgruppe. Ich bin hier in der Freiwilligen Feuerwehr und bei uns hat es sich schon unabhängig vom Bot eingebürgert, dass man ( sofern man die Zeit dazu hat ) mit einem Icon im Gruppenchat kurz mitteilt, ob man kommt ( grüner Haken ) oder nicht ( roter Kreis). Das macht es übersichtlicher und schneller als Prosa und man weiß, mit wem man und wie vielen man ungefähr rechnen kann. Die Icons werte ich bisher mit yowsup und jetzt mit TelegramBot aus.

Der Bot untercheidet jetzt vier Fälle: Komme, komme nicht, komme nach und komme direkt zum Einsatzort. Wenn man jetzt aber gerade das Icon nicht in der Liste der zuletzt genutzten Icons hat, ist das richtige nicht so einfach in der Menge der Icons zu finden. Daher die Überlegung, 4 Buttons anzubieten, sofern das in einer Gruppe überhaupt funktioniert.

Da das ganze zum großen Teil sowieso in bisher 2 X.pm's stattfindet, brauch ich nicht zwangsläufig einen FHEM-Befehl. Direkter Funktionsaufruf ginge ggf. auch, aber meine Perl-Kenntnisse sind begrenzt.
Mein letzter etwas plumper Versuch sah so aus:
{TelegramBot_SendIt( ($defs{LGBot}),$peerid, 'TelegramBot FHEM : $peerid\n Bestaetigung \n', ({TelegramBot_MakeKeyboard(($defs{LGBot}),1,("test"))}), 0) }
aber ich habe wohl unter anderem noch nicht verstanden, wie das Array für MakeKeyboard aussehen muss.

Die Locations werde ich gleich mal testen. Vielen Dank dafür!