Modul: todoist - Task-/Listenverwaltung in FHEM (Bsp. Einkaufsliste) + Frontend

Begonnen von marvin78, 27 Oktober 2017, 16:26:48

Vorheriges Thema - Nächstes Thema

crispyduck

Sicherheitshalber habe ich nochmal ein update gemacht und auch nochmal die files überprüft, aber die sind jetzt sicher der Letztstand.

Websocket hatte ich bereits ausprobiert, aber auch keine Änderung dadurch.

Keine Ahnung, was da bei mir anders ist das es nicht geht.  :(

marvin78



marvin78


crispyduck

Funkt!  :) :) :)

Was war es? Der Name meiner FHEMWEB Instanzen (das "web")?

Danke!!!
crispyduck

marvin78

Ja, ein dämlicher Fehler  8)

Das Modul ging davon aus, dass alle FHEMWEB Instanzen, die es informieren muss im Namen WEB enthalten. Das habe ich mal zum Testen eingebaut, als ich die ersten Versuche mit FW_directNotify gemacht habe und nie geändert. Da meine und sicher viele andere FHEMWEB-Instanzen tatsächlich WEB beinhalten, ist das bisher nicht aufgefallen. Sorry dafür. Es wird jetzt über TYPE=FHEMWEB nach Instanzen gesucht.

crispyduck

Na da muss man dann auch mal erst drauf kommen.  ;)

Danke! Hätte da es bei allen, oder zumindest den meisten anderen funktioniert wohl den Fehler in meiner Installation gesucht.

Lg
crispyduck

marvin78

@crispyduck: Im devel Zweig im git gibt es eine neue Version, die den Befehl cChildProjects kennt. Damit lassen sich (fehlende) untergeordnete  Projekte automatisch anlegen. Dabei werden alle eigenen Projekte durchsucht und daraufhin überprüft, ob ihre parent_id der aktuellen id entspricht. Ist das der Fall und gibt es noch keine Liste mit dieser ID, wird ein neues todoist Device angelegt. Allerdings muss dort noch der Access Token gesetzt werden. Auch ist die neu angelegte Liste erst einmal inaktiv.

Wenn du mal Zeit und Lust hast, kannst du ja mal testen, ob das so praktikabel ist:

https://github.com/marvin78/FHEM-todoist/tree/devel

crispyduck

Du bist ein Wahnsinn!

Wollte, mir jetzt eine sub in my_Utils schreiben die eigentlich genau das macht.

Dachte an alle Projekte via Api abfragen und dann alle Namen und IDs die eine gewisse parent_id haben mit allen todoist devices vergleichen. Gibt es eines welches nicht mit abgefragten Namen und ID übereinstimmt, wird es gelöscht, anschließend werden alle Projekte wo es noch kein device mit gleichem Namen und ID gibt angelegt. Devicename sollte man eventuell aus Parentname_Projektname zusammen stellen um Konflikte mit anderen FHEM devices zu verhindern. Zusätzlich könnte man auch gleich Attribute und den Token kopieren.
Soweit hab ich mir das mal überlegt, beim umsetzen warst du wieder schneller.

Schau mir dein neues Modul sobald ich Zeit habe an.

Danke
crispyduck

marvin78

Ich habe nochmal eine neue Version eingecheckt (nur im devel-Zweig), die einfach X_Copy aufruft und damit auch den Token kopiert.

Edit: noch einmal eine Änderung. Die neue Version nutzt dann direkt copy um die neuen Listen anzulegen.

crispyduck

Hallo eben getestet und für gut befunden!  ;)

Kommt delete auch noch mit rein? Sollte dann vielleicht aber uChildProjects heißen.

Was vielleicht auch noch schön wäre; die devices umzubenennen, oder eben löschen und neu anlegen wenn sich der name geändert hat, und alias = Projektname setzen.

Spricht was dagegen auch gleich ein save auszuführen und die devices gleich aktiv zu schalten?

Könnte man im Widget Tasks mit Intend z.B. pro intend ein "-" vor setzen, und diese wenn sie checked sind irgendwie markieren oder wie in todoist den text durchstreichen?
Wäre glaube ich eine einfache Art den Intend dar zu stellen.

auf jeden Fall 1000 dank!
Lg, crispyduck

marvin78

Delete möchte ich nicht in ein Modul bauen. Das sollte immer vom User selbst gemacht werden.  Wofür würde man das benötigen?

alias ist ein Attribut und das gehört dem User. Der Name des Devices im Grunde auch. Hier möchte ich im Modul nicht eingreifen, wenn es nicht sein muss. Der Name des Projekts steht in den Internals. Es ist kein Problem, ihn regelmäßig von dort auszulesen und als alias zu setzen (per at).

save wird definitiv nicht ins Modul kommen. Das kann unvorhersebare Probleme mit sich bringen.

Du kannst ein Makro bauen, wie

define einkauflisten_makro notify einkauflisten_makro set Einkaufslisten cChildProjects;sleep 3;set Einkaufslisten_.*:FILTER=state!=active active;save

Das Makro kannst du dann per

trigger einkauflisten_makro

anstoßen. Es muss nicht alles ins Modul. Viel ist auch mit FHEM Bordmitteln sehr leicht machbar.

crispyduck

Passt!

Wollte nur nachfragen, nicht das ich mir das jetzt in FHEM zusammen bastel und 3 min später kommt von dir schon eine neue Version die das macht.  ;)

Automatisch will ich das ohnein nicht laufen lassen, sondern bei bedarf über einen Link im Webiif.

An delete dachte ich damit wenn in todoist ein Projekt, da abgeschlossen,... gelöscht wird, dieses nicht unnötig als aktives device in FHEM bestehen bleibt.

Wäre das mit dem Intend im Widget möglich?

danke,
crispyduck

marvin78

Ich habe im devel Zweig ein Attribut (delDeletedLists) eingebaut. Steht dieses auf 1, werden in einem cChildProjects-Lauf die überflüssigen Listen gelöscht. Das bitte einmal auf Herz und Nieren testen, bevor ich das mit dem master Zweig merge. Die zu löschenden Listen müssen in den Internals die PROJECT_PARENT eingetragen haben.

Ich möchte nun keine Krücke für indents einbauen. Ich möchte das (irgendwann) vernünftig lösen.

crispyduck

Super Danke!

Paar Bier, Kaffee,... gehen auf mich! Ein Wansinn wie schnell du das alles gleich umsetzt!

Ich werde das morgen in Ruhe intensiv testen!

Das mit dem Intend war jetzt nur mal so eine Idee um in todoist angelegte intend Tasks im Widget zumindest von den anderen Tasks unterscheiden zu können.

Lg,
crispyduck