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

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • 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: 431
Sehr cooles Modul, vielen Dank :)

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1100
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: 4420
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: 431
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: 4420
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 2 Liste anzeigen

Offline viegener

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

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • 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: 4420
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: 657
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?

Offline viegener

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

Offline JoeALLb

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

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • 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: 23
Hallo,

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

Offline JoeALLb

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

Offline viegener

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

Offline JoeALLb

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

Offline viegener

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

Offline pitamiga

  • Newbie
  • Beiträge: 2
Hallo,

meine Frau hätte auch einen Featurerequest...

wenn man die Liste (als Option?) alphabetisch sortieren könnte, dann könnte man z.B. bei Benutzung als Einkaufsliste am Anfang das Geschäft schreiben und hätte so alle Einträge zu dem Geschäft in dem man sich gerade befindet gesammelt und muss Sie sich nicht innerhalb Liste zusammensuchen.

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
Hallo,

meine Frau hätte auch einen Featurerequest...

wenn man die Liste (als Option?) alphabetisch sortieren könnte, dann könnte man z.B. bei Benutzung als Einkaufsliste am Anfang das Geschäft schreiben und hätte so alle Einträge zu dem Geschäft in dem man sich gerade befindet gesammelt und muss Sie sich nicht innerhalb Liste zusammensuchen.

Habe gerade eine neue Version ins SVN gespielt, darin kann man auch sortieren.
Ausserdem habe ich die Behandlung von doppelten Einträgen angepasst (allerdings bleiben Dubletten erlaubt)

Ist ab morgen/übermorgen per update verfügbar
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline pitamiga

  • Newbie
  • Beiträge: 2
danke für die fixe Umsetzung, gerade getestet, funktioniert prima!

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4420
So. Jetzt bin ich mal dazu gekommen, das Modul auszuprobieren. Das gefällt mir sehr gut. Ich denke, so kann ich einen reibungslosen Übergang von wunderlist schaffen, denn das wird schon bald abgeschaltet.

Fragen:

- Kann man die nochmalige Nachfrage, ob innerhalb des Dialogs ein Punkt zur Liste hinzugefügt werden soll, auch abschalten? Diese kann auf Dauer und beim erstellen längerer Listen nerven. Also derart, dass Punkte, die ich innerhalb des Dialogs schreibe einfach hinzugefügt werden, ohne Nachfrage? Kann man das ggf. konfigurierbar machen?
- ähnlich beim Löschen bzw. erledigen: Kann ein Punkt einfach durch anklicken gelöscht werden (also ohne die weitere "ja/nein" Nachfrage? Das Löschen erfordert aktuell 3 Klicks.

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
So. Jetzt bin ich mal dazu gekommen, das Modul auszuprobieren. Das gefällt mir sehr gut. Ich denke, so kann ich einen reibungslosen Übergang von wunderlist schaffen, denn das wird schon bald abgeschaltet.

Fragen:

- Kann man die nochmalige Nachfrage, ob innerhalb des Dialogs ein Punkt zur Liste hinzugefügt werden soll, auch abschalten? Diese kann auf Dauer und beim erstellen längerer Listen nerven. Also derart, dass Punkte, die ich innerhalb des Dialogs schreibe einfach hinzugefügt werden, ohne Nachfrage? Kann man das ggf. konfigurierbar machen?
- ähnlich beim Löschen bzw. erledigen: Kann ein Punkt einfach durch anklicken gelöscht werden (also ohne die weitere "ja/nein" Nachfrage? Das Löschen erfordert aktuell 3 Klicks.

Das automatische Hinzufügen gibt es schon - Attribut handleUnsolicited allerdings muss dafür ein Dialog offen sein. Nur dann wird gefragt ob der Eintrag hinzugefügt werden soll.

Ausserdem kann man mehrere Punkte beim Hinzufügen durch Komma in einem Rutsch hinzufügen.

Die Abfragen kann ich abschaltbar machen, das steht jetzt auf meiner Liste
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
- Kann man die nochmalige Nachfrage, ob innerhalb des Dialogs ein Punkt zur Liste hinzugefügt werden soll, auch abschalten? Diese kann auf Dauer und beim erstellen längerer Listen nerven. Also derart, dass Punkte, die ich innerhalb des Dialogs schreibe einfach hinzugefügt werden, ohne Nachfrage? Kann man das ggf. konfigurierbar machen?
- ähnlich beim Löschen bzw. erledigen: Kann ein Punkt einfach durch anklicken gelöscht werden (also ohne die weitere "ja/nein" Nachfrage? Das Löschen erfordert aktuell 3 Klicks.

Jetzt muss ich doch nochmal nachfragen:

Also das mit dem Löschen verstehe ich, aber wo gibt es eine Nachfrage beim Hinzufügen?
-> Click auf "Hinzu" --> schreiben --> Absenden --> fertig

Oder kenne ich mein eigenes Modul nicht mehr?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
Fürs delete gibt es jetzt ein neues Attribut confirmDelete - mit einem Wert 0 wird keine weitere Bestätigung abgefragt. Kommt ab morgen im Update.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4420
Jetzt muss ich doch nochmal nachfragen:

Also das mit dem Löschen verstehe ich, aber wo gibt es eine Nachfrage beim Hinzufügen?
-> Click auf "Hinzu" --> schreiben --> Absenden --> fertig

Oder kenne ich mein eigenes Modul nicht mehr?


Ich habe das Eintragen  innerhalb des Dialogs gemeint, nicht über "hinzu". Wenn man Enter = Senden eingestellt hat (am PC) , werden die Nachfragen sogar noch häufiger. Jammern auf hohem Niveau  ;)


Das Attribut für das Löschen ist schonmal hilfreich. Vielen Dank

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
@marvin78: löst das das attribut handleUnsolicited nicht?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4420
Nicht ganz, da es ja jedes Mal eine Nachfrage gibt, ob man die items wirklich hinzufügen möchte. Das ist ok, wenn man mehrere Items hinzufügt und man bspw. am Handy nicht Enter = Send eingestellt hat. Dann führt ein Enter dazu, dass man zunächst eine Liste erstellen kann, dann den send Button bekommt und dann nur eine Nachfrage für alle items. Das kann man verkraften. Hat man aber Enter=Send eingestellt kommt die Nachfrage nach jedem item. Wenn man diese Nachfrage also ganz abestellen könnte (per Attribut?), wäre es hilfreich.

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3063
    • Meine Seite im fhemwiki
Ahh - jetzt habe sogar ich es verstanden - ok neues Attribut confirmUnsolicited ist eingechecked ins SVN kommt per update

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

Offline marvin78

  • Hero Member
  • *****
  • Beiträge: 4420
Perfekt. Danke. Testen werde ich aber erst nächste Woche können. Ggf. bekommst du eher Feedback von anderen.

 

decade-submarginal