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

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

Vorheriges Thema - Nächstes Thema

smn_fx

Hi, bei mir klappt es nocht nicht so ganz mit dem Modul. Ich habe ein "Projekt" angelegt, aber in FHEM wird nur no data angezeigt, obwohl die Liste Elemente enthält. Mit addTask kann ich auch nichts hinzufügen. Wenn ich manuell getTasks mache, kommen mit verbose 5 folgende Logeinträge:

2017.11.01 17:17:55 4: todoist (Geburtstage): set getTasks manually. Timer restartet.
2017.11.01 17:17:58 5: Geburtstage: hash: $VAR1 = {
          'NR' => 242,
          'NAME' => 'Geburtstage',
          'NOTIFYDEV' => 'global',
          'TYPE' => 'todoist',
          'PID' => '08157774711',
          'STATE' => 'active',
          'helper' => {
                        'errorData' => ''
                      },
          'READINGS' => {
                          'lastError' => {
                                           'VAL' => 'no data',
                                           'TIME' => '2017-11-01 17:17:33'
                                         },
                          'state' => {
                                       'VAL' => 'active',
                                       'TIME' => '2017-11-01 16:57:02'
                                     },
                          'listText' => {
                                          'TIME' => '2017-11-01 17:17:33',
                                          'VAL' => '-'
                                        },
                          'error' => {
                                       'VAL' => 'no data',
                                       'TIME' => '2017-11-01 17:17:33'
                                     }
                        },
          'NTFY_ORDER' => '50-Geburtstage',
          'INTERVAL' => 1800,
          'DEF' => '08157774711'
        };

2017.11.01 17:17:58 4: todoist (Geburtstage): Curl Data: $VAR1 = {
          'project_id' => '08157774711',
          'token' => '0815b0b5111337ee7d56be6e4711b0ffc2e51111'
        };

2017.11.01 17:17:58 4: todoist (Geburtstage): Param: $VAR1 = {
          'method' => 'POST',
          'completed' => 0,
          'timeout' => 7,
          'data' => {
                      'project_id' => '08157774711',
                      'token' => '0815b0b5111337ee7d56be6e4711b0ffc2e51111'
                    },
          'callback' => sub { "DUMMY" },
          'header' => 'Content-Type: application/x-www-form-urlencoded',
          'url' => 'https://todoist.com/api/v7/projects/get_data',
          'hash' => {
                      'NR' => 242,
                      'NAME' => 'Geburtstage',
                      'NOTIFYDEV' => 'global',
                      'TYPE' => 'todoist',
                      'PID' => '08157774711',
                      'STATE' => 'active',
                      'helper' => {
                                    'errorData' => ''
                                  },
                      'READINGS' => {
                                      'lastError' => {
                                                       'VAL' => 'no data',
                                                       'TIME' => '2017-11-01 17:17:33'
                                                     },
                                      'state' => {
                                                   'VAL' => 'active',
                                                   'TIME' => '2017-11-01 16:57:02'
                                                 },
                                      'listText' => {
                                                      'TIME' => '2017-11-01 17:17:33',
                                                      'VAL' => '-'
                                                    },
                                      'error' => {
                                                   'VAL' => 'no data',
                                                   'TIME' => '2017-11-01 17:17:33'
                                                 }
                                    },
                      'NTFY_ORDER' => '50-Geburtstage',
                      'INTERVAL' => 1800,
                      'DEF' => '08157774711'
                    }
        };

2017.11.01 17:17:59 4: todoist (Geburtstage):  Task Callback data-raw: $VAR1 = '{"error_tag":"INVALID_ARGUMENT_VALUE","error_code":20,"http_code":400,"error_extra":{"expected":"number","argument":"project_id"},"error":"Invalid argument value"}';

2017.11.01 17:17:59 5: todoist (Geburtstage):  Task Callback param: $VAR1 = {
          'method' => 'POST',
          'displayurl' => 'https://todoist.com/api/v7/projects/get_data',
          'conn' => undef,
          'url' => 'https://todoist.com/api/v7/projects/get_data',
          'header' => 'Content-Type: application/x-www-form-urlencoded',
          'host' => 'todoist.com',
          'loglevel' => 4,
          'httpheader' => 'HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 163
Connection: close
Date: Wed, 01 Nov 2017 16:17:59 GMT
Cache-Control: no-cache
P3p: policyref="/static/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Cache: Error from cloudfront
Via: 1.1 f2cc6dbe7150e50a6bc010a2d6868e5f.cloudfront.net (CloudFront)
X-Amz-Cf-Id: qhCag0_i8RNwEd_s-NK858ydjApzhNKo6rla9BWJE8gV-UE5bsROgA==',
          'hu_filecount' => 1,
          'code' => '400',
          'hash' => {
                      'NR' => 242,
                      'NAME' => 'Geburtstage',
                      'NOTIFYDEV' => 'global',
                      'TYPE' => 'todoist',
                      'PID' => '08157774711',
                      'STATE' => 'active',
                      'helper' => {
                                    'errorData' => ''
                                  },
                      'READINGS' => {
                                      'lastError' => {
                                                       'VAL' => 'no data',
                                                       'TIME' => '2017-11-01 17:17:33'
                                                     },
                                      'state' => {
                                                   'VAL' => 'active',
                                                   'TIME' => '2017-11-01 16:57:02'
                                                 },
                                      'listText' => {
                                                      'TIME' => '2017-11-01 17:17:33',
                                                      'VAL' => '-'
                                                    },
                                      'error' => {
                                                   'VAL' => 'no data',
                                                   'TIME' => '2017-11-01 17:17:33'
                                                 }
                                    },
                      'NTFY_ORDER' => '50-Geburtstage',
                      'INTERVAL' => 1800,
                      'DEF' => '08157774711'
                    },
          'sslargs' => {},
          'completed' => 0,
          'buf' => '',
          'timeout' => 7,
          'path' => '/api/v7/projects/get_data',
          'redirects' => 0,
          'callback' => sub { "DUMMY" },
          'data' => {
                      'project_id' => '08157774711',
                      'token' => '0815b0b5111337ee7d56be6e4711b0ffc2e51111'
                    },
          'hu_blocking' => 0,
          'hu_portSfx' => '',
          'NAME' => '',
          'protocol' => 'https',
          'addr' => 'https://todoist.com:443',
          'hu_port' => 443
        };

2017.11.01 17:17:59 5: todoist (Geburtstage):  Task Callback data (decoded JSON): $VAR1 = {
          'error_tag' => 'INVALID_ARGUMENT_VALUE',
          'error_extra' => {
                             'argument' => 'project_id',
                             'expected' => 'number'
                           },
          'error_code' => 20,
          'error' => 'Invalid argument value',
          'http_code' => 400
        };

2017.11.01 17:17:59 3: todoist (Geburtstage): no data


Und hier noch list Geburtstage
Internals:
   DEF        08157774711
   INTERVAL   1800
   NAME       Geburtstage
   NOTIFYDEV  global
   NR         242
   NTFY_ORDER 50-Geburtstage
   PID        08157774711
   STATE      active
   TYPE       todoist
   READINGS:
     2017-11-01 17:17:59   error           no data
     2017-11-01 17:17:59   lastError       no data
     2017-11-01 17:17:59   listText        -
     2017-11-01 16:57:02   state           active
   helper:
     errorData
Attributes:
   room       Test
   verbose    5


Wo könnte das Problem liegen? (außer vorm Bildschirm...)


marvin78


smn_fx

Habe Projekt ID und token natürlich geändert  :)

Die Projekt ID habe ich aus der URL. Alles was ich hier durch # ersetzt habe:
https://todoist.com/app?lang=de#project%###########

marvin78

Das ist zu viel. Die ID ist numerisch. Aktuell fängt sie sicher mit 2 an und startet hinter dem F.

smn_fx

Oh man es kann so einfach sein :) Habe 2F entfernt und es läuft... Danke!

marvin78

Ich habe im ersten Post einen Abschnitt ergänzt, der mit einem Beispiel zeigt, wie man an die Projekt-ID kommt.

Cobra

Hatte vorhin einen Absturz von FHEM.

Das letzte was im Log stand war folgendes:

Can't use string ("") as a HASH ref while "strict refs" in use at ./FHEM/98_todoist.pm line 585.

Aktuellste Version des Moduls hab ich installiert.
Vielleicht kannst du ja auf Anhieb erkennen warum sich FHEM aufhängen könnte. Falls nicht bitte kurz um Mitteilung was ich tun kann um ggfs. den Fehler zu loggen.

Seit Tagen ist das Modul stabil gelaufen.

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

marvin78

Ich habe eine neue Version eingecheckt. Bitte testen und ggf. das Log auf verbose 4 hochdrehen.

Cobra

Hab die neue Version geladen und lass jetzt einfach mal mit Verbose 4 laufen.
Gebe dann spätestens heut Abend Rückmeldung ob nochmal ein Absturz kam oder ob es läuft.

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

marvin78

Es sollte eigentlich nicht mehr vorkommen. Aber danke, dass du die Augen offen hälst!

Cobra

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

marvin78

In der neuen Version (von heute um 14:06) werden auch die User mit ihren IDs ausgelesen. Das ganze passiert automatisch nach einem "getTasks", egal ob im regulären Interval im Hintergrund oder manuell. Der Automatismus kann per Attribut "autoGetUsers" deaktiviert werden (auf 0 stellen, default ist 1). "set <dev> getUsers" holt die User manuell ab. Außerdem werden zu den Tasks die assignedByUid und die responsibleUid ausgelesen.


Damit ist mindestens die gleiche Funktionalität erreicht, die auch das wunderlist-Modul hat.

marvin78

Mit einem neuen update können nun auch assignedByUid und responsibleUid beim hinzufügen oder ändern eines Tasks angegeben werden.


Weil 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.

Mitch

Zitat von: marvin78 am 03 November 2017, 14:13:19
In der neuen Version (von heute um 14:06) werden auch die User mit ihren IDs ausgelesen. Das ganze passiert automatisch nach einem "getTasks", egal ob im regulären Interval im Hintergrund oder manuell. Der Automatismus kann per Attribut "autoGetUsers" deaktiviert werden (auf 0 stellen, default ist 1). "set <dev> getUsers" holt die User manuell ab. Außerdem werden zu den Tasks die assignedByUid und die responsibleUid ausgelesen.


Damit ist mindestens die gleiche Funktionalität erreicht, die auch das wunderlist-Modul hat.

Kann ich die assignedByUid und die Task_000_ID auch per Attribut deaktivieren?

Ich habe die sonst in meiner ReadingsGroup und da bekomme ich sie nicht raus  :P
FHEM im Proxmox Container

marvin78

Zitat von: marvin78 am 07 November 2017, 14:12:51

Weil 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.


Die ID kann nicht ausgeblendet werden.


Edit: Aber ich denke readingsGroup kann das.