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

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

Vorheriges Thema - Nächstes Thema

Mitch

Danke marvin, das hatte ich übersehen.

Aber wenn Du schreibst
ZitatWeil es mich selbst etwas genervt hat: die Readings zu assignedByUid und responsibleUid werden in der neuen Version im default ausgblendet, sie können aber jeweils per Attribut sichtbar gemacht werden.

Heißt das für mich, die IDs sind jetzt ausgeblendet? Bei mir sind sie noch sichtbar?
FHEM im Proxmox Container

marvin78

Nein. Die ID wird nicht ausgeblendet, wie geschrieben. Ich gehe davon aus, dass die ID als Reading wichtig ist um damit arbeiten zu können.


Aber ich denke, dass readingsGroup sowas kann.

marvin78

Ich habe nochmal nachgesehen. Aktuell benötigt das Modul auch selbst noch die ID als Reading. Bspw. sort würde ohne nicht funktionieren. Ich müsste also etwas mehr Hand anlegen, um die ID ausblendbar zu machen. Ich sage nicht, dass ich das nicht machen möchte aber sehr schnell, kann ich das nicht machen.

marvin78

@Mitch: Teste bitte mal die angehängte Version. Wenn sie in allen Facetten funktioniert, checke ich sie ein. Es gibt ein neues Attribut "hideId".


Anhang entfernt. Download im ersten Post.

Mitch

FHEM im Proxmox Container

marvin78

Ich habe die Version eingecheckt. Ich bin gespannt auf mögliche Seiteneffekte ;)

marvin78

Ich habe in dem Zusammenhang doch noch einen Fehler in sort gefunden. Korrigiert und neu eingecheckt.

marvin78

Es gibt nochmal eine neue Version. Fogendes ist nun möglich



set Einkaufsliste updateTask 2 remove=dueDate
set Einkaufsliste updateTask 5 remove=assignedByUid
set Einkaufsliste updateTask 5 remove=responsibleUid


So können die entsprechenden Attribute aus einem Task entfernt werden.


Für dueDate ist ebenfalls sowas möglich



set Einkaufsliste updateTask 3 dueDate='none'
set Einkaufsliste updateTask 3 dueDate='null'

marvin78

Die neue Version schreibt ein paar Infos über das Projekt (~Liste) in die Internals des Devices. Ggf. gibt es ja noch jemanden, der mit diesen Infos arbeiten kann/muss.

marvin78

Einige Fragen an die Nutzer des Moduls:


Ist es aus eurer Sicht nötig, Subtasks handeln zu können? Das heißt, man müsste die parent_ids und den jeweiligen indent mit abspeichern und beim complete müsste ggf. stattdessen ein close gemacht werden. Nutze jemand Subtasks?


Nutzt jemand von euch wiederkehrende Tasks? Müssen wir hier noch das Handling verbessern?

sprudelverduenner

#40
Hallo Zusammen,

ich habe das Problem, dass ich weder Tasks abrufen noch setzen kann.

Was ich bisher gemacht habe:
- 98_todoist.pm heruntergeladen, ins FHEM Verzeichnis kopiert und Rechte angepasst (777).
- define einkaufsliste todoist 1234567890 (1234567890 ist meine ProjektID hinter dem 2F von meiner Alexa Einkaufsliste)
- set einkaufsliste AccessToken 5e118ec11ad55b9f1146847de2f21118e8d9d5e5 (Token geändert - es stammt aus meinen Einstellungen, Unterpunkt Integration)

Bei den Readings steht immer "no data" - egal was ich mache.

Wie kann ich den Fehler eingrenzen?

Lieben Gruß, Sprudelverduenner
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

marvin78

Die Rechte auf 777 funktioniert zwar, ist aber keine gute Idee. Bitte group dialout und User fhem setzen.

Hier gilt das gleiche, wie überall hier im Forum. Man benötigt immer ALLE Infos. Das heißt, ein list vom todoist Device, du solltest ins Log schauen, ggf. die entsprechenden Fehler hier posten (verbose 4 oder 5). Andernfalls kann ich nur raten.

Einmal rate ich: Ist denn was in der Liste? Nutzt du denn da todoist? Eigentlich hat das erstmal nichts mit Alexa zu tun (auch wenn man es integrieren kann).

sprudelverduenner

#42
Internals:
   CFGFN
   DEF        1234567890
   INTERVAL   60
   NAME       einkaufszettel
   NOTIFYDEV  global
   NR         772
   NTFY_ORDER 50-einkaufszettel
   PID        1234567890
   STATE      active
   TYPE       todoist
   READINGS:
     2017-11-28 16:20:19   error           no data
     2017-11-28 16:20:19   lastError       no data
     2017-11-28 15:48:31   state           active
   helper:
     errorData
     errorMessage
Attributes:
   pollInterval 60
   room       Home


In der Liste ist ein Eintrag, den ich sowohl im Browser als auch in der APP sehen kann.

Verbose 5 kommt sogleich ...
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

sprudelverduenner


2017.11.28 16:24:17 5: einkaufszettel: hash: $VAR1 = {
          'READINGS' => {
                          'lastError' => {
                                           'TIME' => '2017-11-28 16:23:20',
                                           'VAL' => 'no data'
                                         },
                          'error' => {
                                       'TIME' => '2017-11-28 16:23:20',
                                       'VAL' => 'no data'
                                     },
                          'state' => {
                                       'TIME' => '2017-11-28 15:48:31',
                                       'VAL' => 'active'
                                     }
                        },
          'DEF' => '1234567890',
          'NOTIFYDEV' => 'global',
          'helper' => {
                        'errorMessage' => '',
                        'errorData' => ''
                      },
          'NR' => 772,
          'INTERVAL' => 60,
          'NAME' => 'einkaufszettel',
          'CFGFN' => '',
          'PID' => 1234567890,
          'TYPE' => 'todoist',
          'STATE' => 'active',
          'NTFY_ORDER' => '50-einkaufszettel'
        };

2017.11.28 16:24:17 4: todoist (einkaufszettel): Curl Data: $VAR1 = {
          'token' => '5e6d8ec5cad55b9fba46811112f20a18e8d9d5e5',
          'project_id' => 1234567890
        };

2017.11.28 16:24:17 4: todoist (einkaufszettel): Param: $VAR1 = {
          'data' => {
                      'token' => '5e6d8ec5cad55b9fba46811112f20a18e8d9d5e5',
                      'project_id' => 1234567890
                    },
          'hash' => {
                      'READINGS' => {
                                      'lastError' => {
                                                       'TIME' => '2017-11-28 16:23:20',
                                                       'VAL' => 'no data'
                                                     },
                                      'error' => {
                                                   'TIME' => '2017-11-28 16:23:20',
                                                   'VAL' => 'no data'
                                                 },
                                      'state' => {
                                                   'TIME' => '2017-11-28 15:48:31',
                                                   'VAL' => 'active'
                                                 }
                                    },
                      'DEF' => '1234567890',
                      'NOTIFYDEV' => 'global',
                      'helper' => {
                                    'errorMessage' => '',
                                    'errorData' => ''
                                  },
                      'NR' => 772,
                      'INTERVAL' => 60,
                      'NAME' => 'einkaufszettel',
                      'CFGFN' => '',
                      'PID' => 1234567890,
                      'TYPE' => 'todoist',
                      'STATE' => 'active',
                      'NTFY_ORDER' => '50-einkaufszettel'
                    },
          'timeout' => 7,
          'callback' => sub { "DUMMY" },
          'url' => 'https://todoist.com/api/v7/projects/get_data',
          'method' => 'POST',
          'header' => 'Content-Type: application/x-www-form-urlencoded',
          'completed' => 0
        };

2017.11.28 16:24:17 4: todoist (einkaufszettel):  Task Callback data-raw: $VAR1 = '';

2017.11.28 16:24:17 5: todoist (einkaufszettel):  Task Callback param: $VAR1 = {
          'protocol' => 'https',
          'hu_blocking' => 0,
          'loglevel' => 4,
          'conn' => undef,
          'hu_port' => 443,
          'hu_portSfx' => '',
          'timeout' => 7,
          'displayurl' => 'https://todoist.com/api/v7/projects/get_data',
          'url' => 'https://todoist.com/api/v7/projects/get_data',
          'method' => 'POST',
          'completed' => 0,
          'NAME' => '',
          'sslargs' => {},
          'data' => {
                      'token' => '5e6d8ec5cad55b9fba46811112f20a18e8d9d5e5',
                      'project_id' => 1234567890
                    },
          'path' => '/api/v7/projects/get_data',
          'host' => 'todoist.com',
          'hash' => {
                      'READINGS' => {
                                      'lastError' => {
                                                       'TIME' => '2017-11-28 16:23:20',
                                                       'VAL' => 'no data'
                                                     },
                                      'error' => {
                                                   'TIME' => '2017-11-28 16:23:20',
                                                   'VAL' => 'no data'
                                                 },
                                      'state' => {
                                                   'TIME' => '2017-11-28 15:48:31',
                                                   'VAL' => 'active'
                                                 }
                                    },
                      'DEF' => '1234567890',
                      'NOTIFYDEV' => 'global',
                      'helper' => {
                                    'errorMessage' => '',
                                    'errorData' => ''
                                  },
                      'NR' => 772,
                      'INTERVAL' => 60,
                      'NAME' => 'einkaufszettel',
                      'CFGFN' => '',
                      'PID' => 1234567890,
                      'TYPE' => 'todoist',
                      'STATE' => 'active',
                      'NTFY_ORDER' => '50-einkaufszettel'
                    },
          'redirects' => 0,
          'callback' => sub { "DUMMY" },
          'addr' => 'https://todoist.com:443',
          'header' => 'Content-Type: application/x-www-form-urlencoded'
        };

2017.11.28 16:24:17 2: todoist (einkaufszettel): Error Message: no data
2017.11.28 16:24:17 3: todoist (einkaufszettel): Api-Error Callback-data: https://todoist.com/api/v7/projects/get_data: Can't connect(2) to https://todoist.com:443:  SSL connect attempt failed with unknown error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
2017.11.28 16:24:17 1: readingsUpdate(einkaufszettel,listText,-) missed to call readingsBeginUpdate first.
2017.11.28 16:24:17 1: stacktrace:
2017.11.28 16:24:17 1:     main::readingsBulkUpdate            called by ./FHEM/98_todoist.pm (762)
2017.11.28 16:24:17 1:     main::todoist_GetTasksCallback      called by FHEM/HttpUtils.pm (374)
2017.11.28 16:24:17 1:     main::__ANON__                      called by fhem.pl (707)
2017.11.28 16:24:19 5: einkaufszettel: hash: $VAR1 = {
          'READINGS' => {
                          'lastError' => {
                                           'TIME' => '2017-11-28 16:24:17',
                                           'VAL' => 'no data'
                                         },
                          'error' => {
                                       'TIME' => '2017-11-28 16:24:17',
                                       'VAL' => 'no data'
                                     },
                          'state' => {
                                       'TIME' => '2017-11-28 15:48:31',
                                       'VAL' => 'active'
                                     }
                        },
          'DEF' => '1234567890',
          'NOTIFYDEV' => 'global',
          'helper' => {
                        'errorMessage' => '',
                        'errorData' => ''
                      },
          'NR' => 772,
          'INTERVAL' => 60,
          'NAME' => 'einkaufszettel',
          'CFGFN' => '',
          'PID' => 1234567890,
          'TYPE' => 'todoist',
          'STATE' => 'active',
          'NTFY_ORDER' => '50-einkaufszettel'
        };

2017.11.28 16:24:19 5: todoist (einkaufszettel): Param: $VAR1 = {
          'hash' => {
                      'READINGS' => {
                                      'lastError' => {
                                                       'TIME' => '2017-11-28 16:24:17',
                                                       'VAL' => 'no data'
                                                     },
                                      'error' => {
                                                   'TIME' => '2017-11-28 16:24:17',
                                                   'VAL' => 'no data'
                                                 },
                                      'state' => {
                                                   'TIME' => '2017-11-28 15:48:31',
                                                   'VAL' => 'active'
                                                 }
                                    },
                      'DEF' => '1234567890',
                      'NOTIFYDEV' => 'global',
                      'helper' => {
                                    'errorMessage' => '',
                                    'errorData' => ''
                                  },
                      'NR' => 772,
                      'INTERVAL' => 60,
                      'NAME' => 'einkaufszettel',
                      'CFGFN' => '',
                      'PID' => 1234567890,
                      'TYPE' => 'todoist',
                      'STATE' => 'active',
                      'NTFY_ORDER' => '50-einkaufszettel'
                    },
          'callback' => sub { "DUMMY" },
          'timeout' => 7,
          'url' => 'https://todoist.com/api/v7/sync',
          'method' => 'POST',
          'data' => {
                      'sync_token' => '*',
                      'token' => '5e6d8ec5cad55b9fba46811112f20a18e8d9d5e5',
                      'resource_types' => '["collaborators"]'
                    },
          'header' => 'Content-Type: application/x-www-form-urlencoded'
        };

2017.11.28 16:24:20 5: todoist (einkaufszettel): User Callback data: $VAR1 = '';

2017.11.28 16:24:20 2: todoist (einkaufszettel): Error Message: no data
2017.11.28 16:24:20 3: todoist (einkaufszettel): Api-Error Callback-data: https://todoist.com/api/v7/sync: Can't connect(2) to https://todoist.com:443:  SSL connect attempt failed with unknown error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure


ich hoffe das hilft ... Token und ID sind geändert.

Danke vorab für Deine Hilfe.
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

marvin78

Wie da steht, gibt es ein Problem mit deiner ssl Version. Ich kann es nicht genau sagen, aber es könnte an der config deines Servers liegen.