Autor Thema: Modul: todoist - Task-/Listenverwaltung in FHEM (Bsp. Einkaufsliste) + Frontend  (Gelesen 17181 mal)

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
ACHTUNG: Ab Version 1.0.11 muss der Access Token neu gespeichert werden. Außerdem wird das Perl-Modul Digest::MD5 benötigt.

Als Alternative zum sicher bald auslaufenden wunderlist Dienst und dem dazugehörigen wunderlist-Modul habe ich mir nach langem Überlegen todoist ausgesucht und ein Modul entwickelt, welches ganz eng am Modul für wunderlist ausgerichtet ist. Wer also das wunderlist-Modul verwendet hat, wird sich schnell zurecht finden. Die Hilfe befindet sich im Modul. Es werden folgende Perl-Module benötigt:

IO::Socket::SSL,JSON, Data::Dumper, Digest::MD5, Date::Parse und Data::UUID

Die Definition erfolgt folgendermaßen:

define <name> todoist <PROJECT-ID>
Die PROJECT-ID könnt ihr ggf. der URL in der todoist Browser-App entnehmen. Angenommen, die URL lautet

Zitat
https://todoist.com/app?lang=de#project%2F123456789

dann entnehmt ihr die Projekt-ID für das todoist DEF: 123456789

Um die API abfragen zu können benötigt ihr einen API-Token oder API Symbol. Das findet ihr in todoist unter "Einstellungen" -> "Integration". Der Token wird FHEM per

set <name> accessToken <API Symbol>
bekannt gemacht und kann auch geändert werden. Der Token wird am für solche Dinge üblichen Ort im FHEM-Verzeichnis abgelegt.

Das Modul wird zusammen mit einem FHEMWEB weblink-Widgets als Frontend geliefert (siehe Anlage).

Der weblink wird dann bspw. so definiert:

define Einkaufsliste weblink htmlCode {todoist_Html("todoist_Einkaufsliste")}
für eine spezielle Liste. Dabei muss todoist_Einkaufsliste durch euer todoist-Device ersetzt werden.

define Einkaufslisten weblink htmlCode {todoist_Html()}
für alle Listen im fhem-System nebeneinander oder

define Einkaufslisten weblink htmlCode {todoist_Html('NAME=Einkauf.*')}
für eine Auswahl an Listen mit devspec Filter.

Feedback ist gerne gesehen, Support zum Modul gibt es hier (nicht in Echtzeit), Support zu todoist oder der API nicht (da gibt es bessere Quellen). Möglicherweise sind noch einige Bugs im System. Bei mir läuft es einige Zeit stabil, ich garantiere jedoch für nichts ;) 


Bei mir kommt das Modul zum Einsatz um unsere Einkaufsliste(n) auch von FHEM aus füllen und abfragen zu können. Es gibt sicher weitere Möglichkeiten. Die Einkaufsliste ist aber natürlich die naheliegende Variante.

Erledigte Aufgaben können nur von Premium-Usern gelesen werden. Für Standard-User gibt die API hier nichts her. Ich habe nicht getestet, was passiert, wenn man kein Premium-User ist. Vermutlich gibt es nur eine Fehlermeldung. Es gibt keine Verprobung auf den Status des Users.

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

Update oder Installation über update:

update all https://raw.githubusercontent.com/marvin78/FHEM-todoist/master/controls_todoist.txt

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 dueDate=2017-01-13
set Einkaufsliste addTask Milch due_date=morgen

Ändere einen Punkt auf der Einkaufsliste (mit todoist-ID):
set Einkaufsliste updateTask ID:12345678 title='5 Brötchen' dueDate='2017-01-12'
Ändere einen Punkt auf der Einkaufsliste (suche Task anhand von Titel):
set Einkaufsliste updateTask TITLE:Brötchen title='5 Brötchen' dueDate='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'
set Einkaufsliste updateTask 3 title='5 Brötchen' remove=dueDate

Einen schon erledigten Task auf unerledigt setzen (mit todoist-ID):
set Einkaufsliste uncompleteTask ID:12345678
Einen schon erledigten Task auf unerledigt setzen (suche Task anhand von Titel):
set Einkaufsliste uncompleteTask TITLE:Brot
Einen schon erledigten Task auf unerledigt setzen (mit FHEM-ID):
set Einkaufsliste uncompleteTask 5
Hake einen Punkt auf der Einkaufsliste ab (mit todoist-ID):
set Einkaufsliste completeTask ID:12345678
Hake einen Punkt auf der Einkaufsliste ab (suche Task anhand von Titel):
set Einkaufsliste completeTask TITLE:Milch
Hake einen Punkt auf der Einkaufsliste ab (mit FHEM-ID):
set Einkaufsliste completeTask 3
Lösche einen Punkt von der Einkaufsliste (suche Task anhand von Titel):
set Einkaufsliste deleteTask TITLE:Käse
Lösche einen Punkt von der Einkaufsliste (mit todoist-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
« Letzte Änderung: 13 März 2018, 11:32:18 von marvin78 »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline fretti

  • New Member
  • *
  • Beiträge: 29
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #1 am: 27 Oktober 2017, 23:40:05 »
Hallo,

Modul funktioniert auch bei mir, danke dafür.

Ist den auch ein Widget für FTUI geplant, oder wie kann man etwas in der Art wie
https://forum.fhem.de/index.php?topic=76643.0
umsetzen?
raspberry pi, HM-LAN, RFXtrx433

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #2 am: 28 Oktober 2017, 10:00:14 »
Von mir kommt nur das Modul. Wenn das, was du da zeigst, für wunderlist funktioniert hat, sollte es auch mit todoist funktionieren.
« Letzte Änderung: 28 Oktober 2017, 10:31:45 von marvin78 »

Offline mahowi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 988
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #3 am: 28 Oktober 2017, 10:24:35 »
Danke fürs Modul. Funktioniert bestens, wie vorher auch schon mit Wunderlist.

Ich habe im "Icons"-Thread mal SVGs mit den Logos von Wunderlist und Todoist hochgeladen.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #4 am: 28 Oktober 2017, 10:36:22 »
Danke dafür.


Bezüglich TUI Oberfläche: Die Intention für das Modul ist NICHT die Oberfläche der entsprechenden Apps oder Webanwendungen zu ersetzen (wie auch schon beim wunderlist-Modul) sondern die, Automationen mit FHEM möglich zu machen (bei uns ist das das Ansagen der Liste und die Aufnahme von Tasks per Sprache). Wenn sich natürlich jemand berufen fühlt, dazu eine Oberfläche zu bauen, sehr gerne. Von mir wird dazu allerdings nichts kommen.


Kleiner Tipp Am Rande: todoist wird auch von IFTTT unterstützt.

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #5 am: 28 Oktober 2017, 15:24:19 »
Kleines Update im ersten Post. Es gab noch einen Bug bei der Sortierung nach Alphabet und ich habe ein Attribut "showPriority" eingeführt. Dieses steht default auf 0 (nicht zeigen).

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1097
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #6 am: 28 Oktober 2017, 17:48:29 »
Habe das Modul noch nicht getestet, aber vorab mal ne frage:
Wie ist das Aktualisierungsintervall und ist es einstellbar, wie wäre der kleinste Intervall ?

Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.
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.

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #7 am: 28 Oktober 2017, 19:55:00 »
Wie bei wunderlist auch. Per Attribut einstellbar. Bin unterwegs und nicht sicher, was das Minimum ist. Ein at mit getTasks geht aber immer. Intern wird auch nichts anderes verwendet. Wie oft möchtest du denn abrufen? Ich vermute,  dass die API bei gewissen Frequenzen versagt bzw. gesperrt wird.

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1097
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #8 am: 28 Oktober 2017, 20:00:36 »
Die Anbindung an ifttt ist interessant, dann könnte man Dinge von ifttt an FHEM senden...

Offtopic:

Ich versuche im Moment nen vernünftigen und sicheren Weg von ifttt etwas an FHEM zu bekommen, möglichst „realtime“, wobei das mit deinem Modul wahrscheinlich nicht möglich sein wird.

Ich lese auch gerade viel über SLACK, mal schauen was da evtl. machbar wäre, leider bin ich im programmieren ne 0.

Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.
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.

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #9 am: 29 Oktober 2017, 09:50:09 »
Die neue Version erlaubt das Heruntersetzen des pollintervals auf 60 Sekunden. Außerdem können completed Tasks gelesen werden (Attribut: getCompleted).


Achtung: erledigte Aufgaben können nur von Premium-Usern gelesen werden. Für Standard-User gibt die API hier nichts her. Ich habe nicht getestet, was passiert, wenn man kein Premium-User ist. Vermutlich gibt es nur eine Fehlermeldung. Es gibt keine Verprobung auf den Status des Users.

Offline Cobra

  • Full Member
  • ***
  • Beiträge: 200
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #10 am: 29 Oktober 2017, 20:44:58 »
Hallo Marvin,

erst einmal danke für das Modul.

Hab es eingerichtet und funktioniert perfekt.

Einzig was mir aufgefallen ist:

Wenn eine Liste leer ist dann kommt bei jedem Abruf folgende Meldung im Log:

2017.10.29 20:40:06 1:     main::__ANON__                      called by fhem.pl (691)
2017.10.29 20:40:06 1:     main::todoist_GetTasksCallback      called by FHEM/HttpUtils.pm (562)
2017.10.29 20:40:06 1:     main::readingsBulkUpdate            called by ./FHEM/98_todoist.pm (670)
2017.10.29 20:40:06 1: stacktrace:
2017.10.29 20:40:06 1: readingsUpdate(TDI.Einkaufsliste,listText,-) missed to call readingsBeginUpdate first.
2017.10.29 20:40:06 1:     main::__ANON__                      called by fhem.pl (691)
2017.10.29 20:40:06 1:     main::todoist_GetTasksCallback      called by FHEM/HttpUtils.pm (562)
2017.10.29 20:40:06 1:     main::readingsBulkUpdate            called by ./FHEM/98_todoist.pm (579)
2017.10.29 20:40:06 1: stacktrace:
2017.10.29 20:40:06 1: readingsUpdate(TDI.Einkaufsliste,count,0) missed to call readingsBeginUpdate first.
2017.10.29 20:40:06 3: todoist (TDI.Einkaufsliste): no data

Kann das irgendwie noch geändert werden (außer dass ich jetzt Verbose auf 0 setze)?
Hab jetzt erstmal etwas in die Einkaufsliste gesetzt was dauerhaft drin steht um die Meldung zu umgehen.

Gruß Cobra
RaspberryPI 3 mit Raspbian Jessie, HMLAN/HM-LAN-Gateway
Diverse HM-Komponenten, Netatmo, Hue, Sonos, Nuki, Alexa

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #11 am: 29 Oktober 2017, 21:24:46 »
Das sollte in der aktuellen Version von heute Nachmittag schon gefixt sein.

Offline Cobra

  • Full Member
  • ***
  • Beiträge: 200
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #12 am: 29 Oktober 2017, 21:32:03 »
Perfekt, gerade getestet.

Jetzt steht nur noch:

2017.10.29 21:30:26 3: todoist (TDI.Einkaufsliste): no data
Das passt soweit  :D

Danke

Gruß Cobra
RaspberryPI 3 mit Raspbian Jessie, HMLAN/HM-LAN-Gateway
Diverse HM-Komponenten, Netatmo, Hue, Sonos, Nuki, Alexa

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Antw:Modul: todoist - Task-/Listenverwaltung in FHEM
« Antwort #13 am: 29 Oktober 2017, 21:34:19 »
So soll es sein. Danke für's Testen!

Online marvin78

  • Hero Member
  • *****
  • Beiträge: 5205
Bugfix: Das Modul konnte FHEM zum Abstürzen bringen, wenn das von todoist gelieferte JSON falsch formatiert ist oder kein JSON-String zurück geliefert wird. Das ist z.B. der Fall, wenn die API nicht erreichbar ist. Das sollte nun nicht mehr passieren.
Gefällt mir Gefällt mir x 2 Liste anzeigen