neues Modul 49_TBot_List Todo- oder Einkaufslisten mit Telegram (und PostMe)

Begonnen von viegener, 26 Februar 2017, 14:29:33

Vorheriges Thema - Nächstes Thema

viegener

Da es mit PostMe ein Modul zur Verwaltung von Listen (also Einkaufslisten, Todolisten oder ähnliches) gibt und es praktisch ist diese unterwegs dabeizuhaben und zu pflegen habe ich ein Modul dafür gebaut um diese direkt aus dem TelegramBot zu pflegen.

Das Modul 49_TBot_List.pm

Diese ist ursprünglich im TelegramBot-Thread beschrieben worden: https://forum.fhem.de/index.php/topic,38328.msg563341.html#msg563341

Jetzt habe ich das Modul offiziell ins SVN eingechecked und damit ist es normal per update verfügbar

Die jeweils neueste Version ist aber auch immer über github verfügbar:

https://github.com/viegener/Telegram-fhem/tree/master/TBot_List
Beim Herunterladen aus github daraufachten, dass man die Datei "raw" (button "raw" in github) herunterlädt und nicht die HTML-Seite speichert.




Anlegen der Kopplung(Annahme - TelegramBot - telebot existiert und ist eingerichtet inklusive allowedPeers

- PostMe Device testpostme und Liste testlist anlegen (oder existierende Liste verwenden)

define testpostme PostMe
set testpostme create testlist


- Neues TBotList Device testlistbot

define testlistbot TBot_List testpostme testlist
attr testlistbot telegramBots telebot


- Favoriten zum Start des Dialogs anlegen (im attribute favorites in telebot)

/l=set testlistbot start telebot;


Dann kann man mit /l im telegram client die Interaktion starten




Achtung: Die Kopplung ist darauf angewiesen, dass Events vom Bot auch bei TBot_List landen, speziell verwendet das Device Änderung an den Readings sentMsgId und msgReplyMsgId. Dies muss speziell vei Verwendung der Attribute event-on-*-reading berücksichtigt werden.




Unten finden sich auch ein paar Bilder, wie das im Telegram-Client aussieht:
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thyraz

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

JoeALLb

Hi,
was habe ich falsch gemacht wenn ich diese Meldung erhalte, wenn ich einen vorhanden Eintrag löschen möchte?
Einen neuen Ergänzen geht ebenfalls nicht, lediglich das Anzeigen bestehender Einträge.
AnswerInline: TBot_List_handler: tbot - telegram ERROR no msgId known for peer :123451234: cmd :list_askclr: - 639431755788640953
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

marvin78

Ich habe mir dieses Modul noch nicht anschauen können. Meine Frage wäre: Ist das Modul in der Lage auch mit anderen Listen umzugehen? Es gibt das wunderlist Modul und eine Anbindung an Telegram wäre sicher für viele interessant. Oder funktioniert das nur, weil Telegram ohnehin schon eine Art Integration in PostMe hat?

Thyraz

Die PostMe Integration von pah war ja auch selbstgestrickt.

Die Dialoge (InlineQuery) sind ja Bestandteil des TelegramBot Moduls und können für alles Mögliche verwendet werden.
Wenn es nicht wie hier gleich ein Modul sein soll, kann man sowas im kleineren Maßstab ja auch mit Notifies etc. automatisieren.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

marvin78

Das ist mir bewusst.

Meine Frage zielte eher darauf, ob ich, als Autor des wunderlist-Moduls, etwas tun kann/muss, um eine Verwendung dieses Moduls möglich zu machen oder ob es so generisch sein kann, dass es mit jeder Liste etwas anfangen kann.

Bei Gelegenheit schaue ich mir das selbst an, diese kommt aber erst wieder in 2 Wochen.

viegener

Zitat von: JoeALLb am 01 März 2017, 11:24:05
Hi,
was habe ich falsch gemacht wenn ich diese Meldung erhalte, wenn ich einen vorhanden Eintrag löschen möchte?
Einen neuen Ergänzen geht ebenfalls nicht, lediglich das Anzeigen bestehender Einträge.
AnswerInline: TBot_List_handler: tbot - telegram ERROR no msgId known for peer :123451234: cmd :list_askclr: - 639431755788640953

Das kann ich so vermutlich noch nicht beantworten. Also Du startest über eine Favoriten die Anzeige einer PostMe-Liste?
Dann kommt die Liste und zwar als Buttons? -> Was passiert wenn Du direkt danach auf OK clickst?

Wenn dann dieselbe Fehlermeldung kommt, so bekommt der Listbot aus irgendeinem Grund die ID der gesendetn Nachricht (mit den Buttons) nicht mit - dazu kann es mehrere Gründe geben (z.B. hast Du an den readings des Telegrambot etwas gesetzt - im sinne von event-on attibuten?)

Auf jeden Fall würde mir direkt nach dem empfang der ersten Nachricht mit den Buttons ein list des TBOT_List devices interessieren, vielleicht kann aich da etwas herauslesen.

System ist neugestartet nach Update etc?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Zitat von: marvin78 am 01 März 2017, 11:44:36
Ich habe mir dieses Modul noch nicht anschauen können. Meine Frage wäre: Ist das Modul in der Lage auch mit anderen Listen umzugehen? Es gibt das wunderlist Modul und eine Anbindung an Telegram wäre sicher für viele interessant. Oder funktioniert das nur, weil Telegram ohnehin schon eine Art Integration in PostMe hat?

Generell ist eine solche Anpassung möglich - ich habe versucht die Funktionen zum Zugriff auf das PostMe-Modul bewusst zu kapseln und rufe nur set/get/reading-Funktionen (also quasi offizielle Befehle in Postme auf), damit sollte es möglich sein das auch an Wonderlist anzupassen. Ich kann mir das mal näher anschauen. Es könnte sein, dass es etwas Aufwand bedeutet, da im Grunde PostMe für das Modul nur eine Liste von mit Koma getrennten Einträgen ist und einen Namen hat, die Liste wird zum Teil bei PostMe komplett neu gesetzt. Die Schwierigkeit könnte das synchrone Verhalten werden, also das Änderungen sofort auch sichtbar sein sollen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

marvin78

Wenn du Infos von mir brauchen solltest...

Ich habe PostMe länger nicht angeschaut (ich habe aktuell einfach zu selten Zeit für FHEM) und weiß aktuell nicht, wie es das setzen auf die Liste oder das Abrufen macht.

wunderlist stellt jeden Eintrag als Reading zur Verfügung, stellt aber auch ein Reading mit der Liste in Komma getrennter Form bereit.

get habe ich nicht implementiert, da Readings vorliegen, ich hätte aber kein Problem damit, hier eine Anpassung zu machen.

automatisierer

Ich habe wie im ersten Post beschrieben, die Devices angelegt. Bei gesetztem 'attr csrfToken random' kann ich beim PostMe Device keine Listen oder Einträge darin erstellen, auch über telegram funktioniert es nicht - nur über die Befehlzeile direkt funktioiniert es und wenn ich 'csrfToken none' einstelle. Hat PostMe evtl. noch ein Problem mit dem csrfToken?

viegener

Zitat von: automatisierer am 01 März 2017, 14:26:48
Ich habe wie im ersten Post beschrieben, die Devices angelegt. Bei gesetztem 'attr csrfToken random' kann ich beim PostMe Device keine Listen oder Einträge darin erstellen, auch über telegram funktioniert es nicht - nur über die Befehlzeile direkt funktioiniert es und wenn ich 'csrfToken none' einstelle. Hat PostMe evtl. noch ein Problem mit dem csrfToken?

Kannst Du das noch etwas genauer erklären? Die Liste selbst lässt sich nicht über Telegram anlegen. Die Liste und der PostMe device müssen bereits existieren:

Zitatdefine testpostme PostMe
set testpostme create testlist

Der Zusammenhang mit dem csrfToken ist mir noch ein Rätsel...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

automatisierer

Also das eingeben von Daten in die Liste über telegran funktioniert nun, ich hatte 'event-on-change-reading state' gesetzt.

Der Rest hat dann sicherlich nichts mit TBotList zu tun sondern mit PostMe.

Befehle die ich in die Befehlzeile eingebe funktionieren. Wenn ich aber über die Buttons (die Dinger unter der Befehlszeile) etwas bei PostMe mache, z.B. versuche einen Eintrag in die Liste zu schreiben, dann wird das Browserfenster nur weiß und sonst passiert nix. Ohne csrfToken funktioniert es.

JoeALLb

Zitat von: viegener am 01 März 2017, 12:21:36
Wenn dann dieselbe Fehlermeldung kommt, so bekommt der Listbot aus irgendeinem Grund die ID der gesendetn Nachricht (mit den Buttons) nicht mit - dazu kann es mehrere Gründe geben (z.B. hast Du an den readings des Telegrambot etwas gesetzt - im sinne von event-on attibuten?)

Das wars, vielen Dank!! Daran habe ich nicht gedacht!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

viegener

Zitat von: automatisierer am 01 März 2017, 20:15:52
Also das eingeben von Daten in die Liste über telegran funktioniert nun, ich hatte 'event-on-change-reading state' gesetzt.


Eigentlich dachte es ist toll, dass TBot_List und TelegramBot über events gekoppelt sind, aber das geht natürlich nur wenn auch events kommen :-)

Ich füge mal etwas zur Beschreibung hinzu.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Pusemukel

Hallo,

Ich wollte mich einfach nur bedanken für dieses super Modul, genau das hab ich gesucht  ;D