Modul: wunderlist - Task-/Listenverwaltung über FHEM + Widget

Begonnen von marvin78, 21 Juli 2016, 11:37:36

Vorheriges Thema - Nächstes Thema

marvin78

Ich empfehle den Umstieg auf den Dienst todoist und das Modul 98_todoist. wunderlist wird seinen Dienst in naher Zukunft einstellen. todoist ist eine sehr gute Alternative zu wunderlist und bietet aktuell sogar deutlich mehr, als das als deprecated eingestufte wunderlist. Weiterentwicklungen (u.a. Frontend) wird es vermutlich nur noch im todoist Modul geben.

Ein kleines Modul zum Lesen einer wunderlist-Taskliste und zum erstellen oder ändern von Tasks in einer wunderlist. Das Modul tut bei mir eine Weile seinen Dienst. Benötigt wird ein wunderlist-Konto sowie die CLIENT-ID und ein ACCESS-TOKEN aus einer App (Entwicklerbereich). Support dazu gibt es bei wunderlist, nicht hier!

Als APP URL und AUTH CALLBACK URL kann jeweils http://127.0.0.1 eingegeben werden.

Eine Taskliste kann folgendermaßen definiert werden:

define <name> wunderlist <CLIENT-ID> <LIST-ID>

Die ID der Liste kann als Anwender der URL entnommen werden, wenn man im Browser eine der wunderlist Listen aufruft. Der Access-Token wird über set gesetzt und verschlüsselt abgelegt.

Eine kleine Doku ist im Modul. Man benötigt die Perl-Module JSON,  Data::Dumper and MIME::Base64. Das Modul ruft die Daten in einem Interval (Standard 1800 Sekunden) über die wunderlist-API ab. Das Interval ist über das Attribut pollInterval konfigurierbar, es darf aber nicht unter 600 Sekunden liegen. Das Modul sollte non-blocking sein. Neue Tasks können mit Optionen erstellt werden.

Das Modul wird zusammen mit einem FHEMWEB weblink-Widget geliefert (siehe Anlage). Damit das funktioniert, muss die Datei wunderlist.js aus dem git nach

<FHEMPFAD>/www/pgm2/

kopiert werden.

Der weblink wird dann bspw. so definiert:

define Einkaufsliste weblink htmlCode {wunderlist_Html("wunderlist_Einkaufsliste")}

für eine spezielle Liste. Dabei muss wunderlist_Einkaufsliste durch euer wunderlist-Device ersetzt werden.

define Einkaufslisten weblink htmlCode {wunderlist_AllHtml()}

für alle Listen im fhem-System nebeneinander.

Feedback ist gerne gesehen, Support zum Modul gibt es hier (nicht in Echtzeit), Support zu wunderlist oder der API nicht (da gibt es bessere Quellen).

Was ihr damit anfangen könnt, ist eurer Phantasie überlassen. Ich nutze es, um abends und/oder morgens noch einmal an die noch offenen Punkte einer gemeinsamen Einkaufsliste zu erinnern.

Installation:

update all https://raw.githubusercontent.com/marvin78/FHEM-wunderlist/master/controls_wunderlist.txt

Download: https://github.com/marvin78/FHEM-wunderlist



Beispiele:

Setze einen neuen Punkt auf die Einkaufsliste:

set Einkaufsliste addTask 3 Brötchen

Setze einen neuen Punkt auf die Einkaufsliste und setze ein Fälligkeitsdatum:
set Einkaufsliste addTask 3 Brötchen due_date=2017-01-13

Ändere einen Punkt auf der Einkaufsliste (mit wunderlist-ID):
set Einkaufsliste updateTask ID:12345678 title='5 Brötchen' due_date='2017-01-12'

Ändere einen Punkt auf der Einkaufsliste (mit FHEM-ID):
set Einkaufsliste updateTask 2 title='5 Brötchen' due_date='2017-01-12' remove=starred,recurrence_type

Einen schon erledigten Task auf unerledigt setzen (mit wunderlist-ID):
set Einkaufsliste updateTask ID:12345678 completed='false'

Einen schon erledigten Task auf unerledigt setzen (mit FHEM-ID):
set Einkaufsliste updateTask 5 completed='false'

Hake einen Punkt auf der Einkaufsliste ab (mit wunderlist-ID):
set Einkaufsliste completeTask ID:12345678

Hake einen Punkt auf der Einkaufsliste ab (mit FHEM-ID):
set Einkaufsliste completeTask 3

Lösche einen Punkt von der Einkaufsliste (mit wunderlist-ID):
set Einkaufsliste deleteTask ID:12345678

Lösche einen Punkt von der Einkaufsliste (mit FHEM-ID):
set Einkaufsliste deleteTask 3

Lösche alle Tasks
set Einkaufsliste clearList


Updates:

Update: count Reading hinzugefügt.

Update 14.08.2016: UTF8 für Task Title, Readings count und listText korrigiert

Update 14.08.2016 (2): einfache Taskerstellung per newTask (bisher nur mit Titel)

Update 14.08.2016 (3): ID des Tasks wird als Reading bereit gestellt. Außerdem werden auch assignee_id und assigner_id ausgelesen.

Update 15.08.2016: Task kann über FHEM-Reading ID abgeschlossen werden (completeTask)

Update 16.08.2016: deleteTask löscht einen Task, newTask in addTask umbenannt.

Update 26.09.2016: addTask mit due_date erweitert.

Update 24.12.2016: alphabetisches Sortieren mit sortTasks

Update 06.01.2017: Ansprache der Tasks über ihre wunderlist-ID, zusätzliche Parameter bei addTask möglich

Update 07.01.2017: updateTask, neue Readings (Parameter des Tasks)

Update 09.01.2017: clearList (löscht alle Tasks der FHEM-Liste), Attribut "getCompleted" holt auch erledigte Aufgaben ab

Update 11.01.2017: User zur Liste werden ausgelesen

Update 14.01.2017: X_Copy und X_Delete eingebaut

Update 24.02.2017: attr <NAME> sortTasks 2 sortiert die Tasks in wunderlist Reihenfolge

Update 18.01.2017: neue weblink Widgets

Update 19.01.2017: Widget für mehrere Listen kann nun mit Filer (nach Devspec) versehen werden

Ma_Bo

Super Modul, habe es gerade installiert und werde es testen.
Danke
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

Was noch nicht funktioniert, wenn in meiner Liste ein Umlaut wie Ü drin steht, bekomme ich ein Zeichen angezeigt. Hast du ne Idee, wie ich das hinbekomme, dass das Ü auch angezeigt wird ?

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

Was noch genial wäre, wenn man mit fhem einträge auf die Liste setzen könnte, ist sowas machbar ?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

marvin78

Danke für das Feedback.

Umlaute sind so eine Sache in FHEM. Das muss ich mir ansehen.

Bezüglich Einträge aus FHEM heraus erstellen: Das habe ich auf der Liste. Möglich ist es auf jeden Fall.

Ggf. komme ich nächste Woche wieder dazu, etwas am Modul zu machen.

Ma_Bo

Danke für die schnelle Antwort.
Kein Stress, Umlaute sind jetzt nicht ganz so wichtig, Einträge von FHEM aus wären schon richtig gut, aber das hat Zeit, erstmal mach ich jetzt nen dauertest ob das alles stabil läuft. ;)


Gesendet von iPhone mit Tapatalk
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

Bis jetzt läuft das Modul stabil und ohne erkennbare Probleme.
Was noch schön wäre, wenn ich nichts in der liste stehen habe, gibt es im reading Count noch nen wert und im reading listText steht auch noch der letzte wert. Da diese nicht mehr aktualisiert werden.
kannst du es so einrichten dass der Count dann 0 anzeigt und der listText auch 0 oder none oder ähnliches anzeigt?

Gruß Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

marvin78

Neue Version im ersten Post. Der Titel wird nun vor dem Erzeugen der Readings UTF8 kodiert und die beiden Readings count und listText funktionieren nun auch bei leerer Liste korrekt.

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

marvin78

Oben gibt es eine neue Testversion mit der auch Tasks erstellt werden können (newTask). Es wird nur ein normaler Task mit Titel erstellt. due_date und andere Optionen sind (noch) nicht möglich.

Bitte testen. Falls was nicht funktioniert, verbose im Modul auf 5 drehen und hier anhängen (wie üblich).

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

marvin78

Wie. Das ging schnell... ;)

Sind Optionen wie due_date oder assignee_id interessant? Das werden sie sicher erst irgendwann für mich selbst.

Ma_Bo

Interessant auf jeden Fall, aber z.Z. brauch ich das nicht, mir reicht es wie es jetzt läuft schon.
Danke für die schnelle Einbindung.

Werde das jetzt erstmal ausgiebig testen und berichten ob alles stabil läuft.

Gruß Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

marvin78

Noch ein kleines Update: Die wunderlist-ID der Tasks wird als Readings zur Verfügung gestellt. Ob das so bleibt, oder ob wir bspw. für das abhaken des Tasks aus FHEM heraus die ID nur intern speichern müssen, weiß ich noch nicht.

Ma_Bo

Ok, kann ich erst später testen oder morgen.


Gesendet von iPhone mit Tapatalk
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.