Autor Thema: neues Modul 49_TBot_List Todo- oder Einkaufslisten mit Telegram (und PostMe)  (Gelesen 674 mal)

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
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:
« Letzte Änderung: 01 März 2017, 20:56:22 von viegener »
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Thyraz

  • Full Member
  • ***
  • Beiträge: 289
Sehr cooles Modul, vielen Dank :)

Online JoeALLb

  • Sr. Member
  • ****
  • Beiträge: 939
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 (12 Watt),
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

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4307
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?

Offline Thyraz

  • Full Member
  • ***
  • Beiträge: 289
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.

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4307
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.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
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

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
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

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4307
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.

Offline automatisierer

  • Sr. Member
  • ****
  • Beiträge: 588
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?

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
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:

Zitat
define 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

Offline automatisierer

  • Sr. Member
  • ****
  • Beiträge: 588
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.

Online JoeALLb

  • Sr. Member
  • ****
  • Beiträge: 939
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 (12 Watt),
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

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
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
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Pusemukel

  • New Member
  • *
  • Beiträge: 12
Hallo,

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

Online JoeALLb

  • Sr. Member
  • ****
  • Beiträge: 939
Kleiner Verbesserungsvorschlag: Schön wäre, wenn ich per newline eingegebene weitere Zeilen direkt als neue Einträge angelegt werden würden, quasi als Abkürzung.
Im Moment wird es angelegt, danach aber als Fehler angezeigt und kann nicht mehr gelöscht werden....
FHEM-Server auf IntelAtom+Debian (12 Watt),
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

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
Habe eine neue Version in SVN eingecheckt mit dem Vorschlag von JoeALLb. Ausserdem gibt es ein neues Attribut handleUnsolicited dadurch kann man wenn ein Dialog aktiv ist automatisch neue Einträge erzeugen, wenn man einfach eine Nachricht im entsprechenden chat sendet.

Neue Version ist im SVN verfügbar
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Online JoeALLb

  • Sr. Member
  • ****
  • Beiträge: 939
Danke für das Update, habe es auch gleich getestet!! Sehr schönes Feature!!

Was mir noch auffällt: Wenn ich 2x den selben Eintrag speichern möchte, funktioniert dies nicht, er wird nur 1x angezeigt, das ist gut so.
wenn ich jedoch zuerst
1 hinzufüge und danach
1
2
3

Dann wird "1" 2x angezeigt in der Liste.
Wenn ich dann auf 1 klicke und dieses lösche, werden beide gelöscht.
Ist nicht wichtig, nur eine Kleinigkeit, die mir aufgefallen ist...
FHEM-Server auf IntelAtom+Debian (12 Watt),
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

Online viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2483
    • Meine Seite im fhemwiki
Danke für das Update, habe es auch gleich getestet!! Sehr schönes Feature!!

Was mir noch auffällt: Wenn ich 2x den selben Eintrag speichern möchte, funktioniert dies nicht, er wird nur 1x angezeigt, das ist gut so.
wenn ich jedoch zuerst
1 hinzufüge und danach
1
2
3

Dann wird "1" 2x angezeigt in der Liste.
Wenn ich dann auf 1 klicke und dieses lösche, werden beide gelöscht.
Ist nicht wichtig, nur eine Kleinigkeit, die mir aufgefallen ist...

Klingt nach einem Bug
Ich kümmere mich drum - Bin immer froh über andere Tester - Altes Problem: ich programmiere lieber Fehler als zu Testen  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können