Modul für Parrot Flower Power

Begonnen von db85, 09 August 2016, 21:26:18

Vorheriges Thema - Nächstes Thema

MikeR

Ich will nicht drängeln, oder so.
Aber vielleicht fehlen ja meinerseits noch Angaben um mir helfen zu können?

Gruß
Mike

hartenthaler

Hallo @MikeR,
mein DEF des FlowerPowerAPI Devices sieht so aus:

define FlowerPower FlowerPowerApi <email> <passwd> <email> <secret> 3600
attr FlowerPower stateFormat server_identifier / Sensoren: sensor_count

Wenn Deine Angaben im Modul an den richtigen Stellen landen, wie Du sagst, und Du auch beim Aufruf über den Browser einen Fehler bekommst, dann sind es vielleicht die Inhalte, die nicht stimmen. Prüfe doch bitte alles noch einmal genau.
Wenn Du ein "list <FlowerPower device>" machst, dann müsste es so ähnlich wie bei mir aussehen:

   CFGFN      ./FHEM/pflanzen.cfg
   CLIENT_ID  h@xyz.de
   CLIENT_SECRET 8H5Yxxxxxxxxxxxxxxxqyt
   DEF        h@xyz.de xxxxxxxxx h@xyz.de 8H5xxxxxxxxxxxxxxxxxxxxxxxxxxxqyt 3600
   INTERVAL   3600
   NAME       FlowerPower
   NR         837
   NTFY_ORDER 50-FlowerPower
   PASSWORD   xxxxxxx
   STATE      1.4.26 August 4th 2016 / Sensoren: 4
   TYPE       FlowerPowerApi
   USERNAME   h@xyz.de
   Readings:
     2016-10-14 23:32:34   access_token    1lzhxxxxxxxxxxxxxxxxxxUqKhs
     2016-10-15 11:49:32   dob
     2016-10-15 11:49:32   email           h@xyz.de
     2016-10-14 23:32:34   expires_at      1479159154
     2016-10-15 11:49:32   ip_address_on_create 2xx.233.171.1xx
     2016-10-15 11:49:32   language_iso639 de
     2016-10-15 11:49:33   location_0_identifier FT9OFbzxxxxx
...
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

MikeR

Hallo Hermann,

danke für die Antwort und die Tipps...

So sieht das bei mir aus, die Unterschiede hab ich mal rot markiert, die Kennwörter und Secrets natürlich "versternt":

============= snipp ===============================

   CFGFN      ./FHEM/pflanzen.cfg

Internals:
   CLIENT_ID  1234@muster.de
   CLIENT_SECRET **secret******************
   DEF        1234@muster.de **passwd** 1234@muster.de **secret****************** 3600
   INTERVAL   3600
   NAME       FlowerPowerMain
   NR         144
   NTFY_ORDER 50-FlowerPowerMain
   PASSWORD   **passwd**
   STATE      server_identifier / Sensoren: sensor_count
   TYPE       FlowerPowerApi
   USERNAME   1234@muster.de
   Readings:
     2016-10-14 23:32:34   access_token    1lzhxxxxxxxxxxxxxxxxxxUqKhs
     2016-10-15 11:49:32   dob
     2016-10-15 11:49:32   email           h@xyz.de

     2016-10-15 23:16:57   expires_at      1476566217[/b]2016-10-14 23:32:34   expires_at      1479159154
     2016-10-15 11:49:32   ip_address_on_create 2xx.233.171.1xx
     2016-10-15 11:49:32   language_iso639 de
     2016-10-15 11:49:33   location_0_identifier FT9OFbzxxxxx
Attributes:
   icon       scene_garden
   room       _V.Devices,Garten
   stateFormat server_identifier / Sensoren: sensor_count

============= snapp ===============================

Der Präfix "CFGFN      ./FHEM/pflanzen.cfg" ist bei mir nicht da, als Readings bekomme ich nur ein hochzählendes Datum/Uhrzeit mit einer laufenden Nummer und das StateFormat wird (vermutlich mangels Daten) auch nur mit der Definition angezeigt, nicht befüllt.

Zwei potentielle (aber IMO unwahrscheinliche) Probleme:

a.) Ich hatte "früher" mit jeweils einem FlowerPower mehrere Pflanzen (im gleichen Topf) in der IOS App angelegt. Das ging ja bis zum letzten großen App-Update. Nun ist in der App nur noch jeweils die erste Pflanze pro FlowerPower sichtbar, alle anderen sind in der App weg. Im Webinterface sind diese gelöschten aber noch vorhanden.

b.) Das ganze läuft bei mir auf einem Raspberry Pi, aber noch unter Raspbian Wheezy, nicht Jessy

Wie gesagt, halte ich beides für unwahrscheinlich, kann es aber momentan nicht schnell mal austesten. Evtl. hat es aber was mit CFGNF Eintrag zu tun, wo auch immer der herbekommt, bzw. wieso auch immer der fehlt. Wie bekomme ich den denn in mein FlowerPowerApi-Objekt rein?

Gruß
MIKE

Acrusty

Zitat von: MikeR am 15 Oktober 2016, 23:43:06
Hallo Hermann,

danke für die Antwort und die Tipps...

So sieht das bei mir aus, die Unterschiede hab ich mal rot markiert, die Kennwörter und Secrets natürlich "versternt":

============= snipp ===============================

   CFGFN      ./FHEM/pflanzen.cfg

Internals:
   CLIENT_ID  1234@muster.de
   CLIENT_SECRET **secret******************
   DEF        1234@muster.de **passwd** 1234@muster.de **secret****************** 3600
   INTERVAL   3600
   NAME       FlowerPowerMain
   NR         144
   NTFY_ORDER 50-FlowerPowerMain
   PASSWORD   **passwd**
   STATE      server_identifier / Sensoren: sensor_count
   TYPE       FlowerPowerApi
   USERNAME   1234@muster.de
   Readings:
     2016-10-14 23:32:34   access_token    1lzhxxxxxxxxxxxxxxxxxxUqKhs
     2016-10-15 11:49:32   dob
     2016-10-15 11:49:32   email           h@xyz.de

     2016-10-15 23:16:57   expires_at      1476566217[/b]2016-10-14 23:32:34   expires_at      1479159154
     2016-10-15 11:49:32   ip_address_on_create 2xx.233.171.1xx
     2016-10-15 11:49:32   language_iso639 de
     2016-10-15 11:49:33   location_0_identifier FT9OFbzxxxxx
Attributes:
   icon       scene_garden
   room       _V.Devices,Garten
   stateFormat server_identifier / Sensoren: sensor_count

============= snapp ===============================

Der Präfix "CFGFN      ./FHEM/pflanzen.cfg" ist bei mir nicht da, als Readings bekomme ich nur ein hochzählendes Datum/Uhrzeit mit einer laufenden Nummer und das StateFormat wird (vermutlich mangels Daten) auch nur mit der Definition angezeigt, nicht befüllt.

Zwei potentielle (aber IMO unwahrscheinliche) Probleme:

a.) Ich hatte "früher" mit jeweils einem FlowerPower mehrere Pflanzen (im gleichen Topf) in der IOS App angelegt. Das ging ja bis zum letzten großen App-Update. Nun ist in der App nur noch jeweils die erste Pflanze pro FlowerPower sichtbar, alle anderen sind in der App weg. Im Webinterface sind diese gelöschten aber noch vorhanden.

b.) Das ganze läuft bei mir auf einem Raspberry Pi, aber noch unter Raspbian Wheezy, nicht Jessy

Wie gesagt, halte ich beides für unwahrscheinlich, kann es aber momentan nicht schnell mal austesten. Evtl. hat es aber was mit CFGNF Eintrag zu tun, wo auch immer der herbekommt, bzw. wieso auch immer der fehlt. Wie bekomme ich den denn in mein FlowerPowerApi-Objekt rein?

Gruß
MIKE
Schliesse mich hier MikeR an. Identisches Problem...

hartenthaler

Der CFGFN Eintrag liegt bei mir daran, dass ich die Daten nicht wie normal in fhem.cfg ablege, sondern für jedes System eine eigene cfg-Datei habe, die ich in fhem.cfg per include einbinde (das ist aber etwas heikel und deshalb nicht unbedingt empfehlenswert), aber daran liegt es nicht, dass ihr nichts seht.

An den Pflanzen bzw. deren Zuordnung zu den Sensoren liegt es sicher auch nicht, denn das kommt erst im zweiten Schritt, wenn man dann pro Pflanze ein Device anlegt. Im ersten Schritt geht es erst einmal darum die Verbindung zur FlowerPower-API herzustellen. Sobald diese läuft werden die Readings gefüllt.

Generell: Es gibt ein fhem-FlowerPower-API-Device und pro Standort/Pflanze jeweils ein weiteres fhem-Device. Das API-Device verwaltet alle Sensoren (ich habe 4 Stück) und alle Pflanzen (davon habe ich 20 Stück, die im Garten angelegt sind und von denen derzeit eben 4 überwacht werden).

Bei mir läuft es auch auf einem RaspberryPi, aber unter Jessie, wobei ich eher nicht glaube, dass es daran liegen könnte. Gibt es denn im fhem-Logfile eine Fehlermeldung (direkt nach einem shutdown restart)?

Ob der Zugriff möglich ist, könnt ihr auch so testen:
im Browser folgendes als URL eingeben (dabei an genau 4 Stellen das "%s" ersetzen durch genau die Angaben die in der Definition des fhem-API-Devices stehen, wobei username und client_id üblicherweise die E-Mail-Adresse ist):
https://apiflowerpower.parrot.com/user/v1/authenticate?grant_type=password&username=%s&password=%s&client_id=%s&client_secret=%s";
Dann muss es eine Antwort geben in der ein "access_token" steht. Wenn nicht, dann stimmt mindestens eine der vier Angaben nicht. Wenn ein access-token zurück gegeben wird, dann sind die vier Angaben alle in Ordnung, so dass es an etwas anderem in fhem oder Betriebssystem liegen muss.

Sind alle nötigen Systemmodule installiert (etwa JSON, HttpUtils, HTTP::Date)? Bitte ggf. per apt-get / cpan installieren.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

MikeR

Zitat von: hartenthaler am 16 Oktober 2016, 15:22:44
Ob der Zugriff möglich ist, könnt ihr auch so testen:
im Browser folgendes als URL eingeben (dabei an genau 4 Stellen das "%s" ersetzen durch genau die Angaben die in der Definition des fhem-API-Devices stehen, wobei username und client_id üblicherweise die E-Mail-Adresse ist):
https://apiflowerpower.parrot.com/user/v1/authenticate?grant_type=password&username=%s&password=%s&client_id=%s&client_secret=%s";
Dann muss es eine Antwort geben in der ein "access_token" steht. Wenn nicht, dann stimmt mindestens eine der vier Angaben nicht. Wenn ein access-token zurück gegeben wird, dann sind die vier Angaben alle in Ordnung, so dass es an etwas anderem in fhem oder Betriebssystem liegen muss.

Beim Aufruf über den Browser bekomme ich ein "{"error": "invalid_client"}"

Die Angaben (AccessID,Accesssecret) aus der Registruierungsmail für das FlowerPOwer API hab ich nun fünfmal überprüft, die stimmen. Und mit meinem Username und Password aus der IOS APP kann ich mich auch im Browser ("https://myflowerpower.parrot.com/#my-garden") anmelden.

Dann scheinen die Angaben doch allesamt korrekt zu sein???

MikeR

Nachtrag:
Im Chorme und im Firefox kommt obige Meldung {"error": "invalid_client"}, im IE kommt ein HTTP-Fehler 400.

Ich hab jetzt nochmal einen neue API-Registrierung gemacht und die neuen Daten (AcessID und Access Secret) genommen, keine Veränderung. Und wie gesagt und jetzt nochmal überprüft, die Login-Daten für myflowerpower.parrot.com funktionieren ebenfalls.

Bin extrem ratlos
Mike

Acrusty

Zitat von: MikeR am 16 Oktober 2016, 20:16:59
Nachtrag:
Im Chorme und im Firefox kommt obige Meldung {"error": "invalid_client"}, im IE kommt ein HTTP-Fehler 400.

Ich hab jetzt nochmal einen neue API-Registrierung gemacht und die neuen Daten (AcessID und Access Secret) genommen, keine Veränderung. Und wie gesagt und jetzt nochmal überprüft, die Login-Daten für myflowerpower.parrot.com funktionieren ebenfalls.

Bin extrem ratlos
Mike
Versuch nochmal ohne Schlusszeichen und Strichpunkt am Ende

MikeR

Ja, hatte ich schon. Weil mir das mit "; syntaktisch inkorrekt schien als URL.

MikeR

Ich bin mir nicht sicher ob die Rückgabe {"error": "invalid_client"} bedeutet, das meine Authentifizierung fehlerhaft ist, oder ob quasi der User-Agent im Host-Header falsch ist.

Kann vielleicht den Aufruf im Browser mal kurz jemand mit seinen  Zugangsdaten testen, ob das wirklich aktuell noch so funktioniert?

Gruß
Mike

Acrusty

Hab ich gestern Abend getestet.lâuft.....

MikeR

Hmm, vielen Dank für's Testen.
Dann bist Du irgendwie einen Schritt näher an der Lösung als ich.
Bei mir is's ja schon ein Rohrkrepierer bevor es überhaupt losgeht  :'(

hartenthaler

... sorry, das "; am Ende muss weg, das war ein copy&paste Fehler von mir.

@Acrusty: "läuft" bedeutet, dass dein fhem-Device nun mit Readings gefüllt wird?

@MikeR: ich bin etwas ratlos; aber solange es im Browser nicht funktioniert, kann es in fhem auch nicht gehen. Bitte ändere doch Dein FlowerPower-Passwort und nimm mal nur Buchstaben und Zahlen ohne Sonderzeichen. Ich habe den Aufruf gestern im Chrome-Browser getestet, das muss gehen.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

MikeR

Zitat von: hartenthaler am 17 Oktober 2016, 17:13:12
@MikeR: ich bin etwas ratlos; aber solange es im Browser nicht funktioniert, kann es in fhem auch nicht gehen. Bitte ändere doch Dein FlowerPower-Passwort und nimm mal nur Buchstaben und Zahlen ohne Sonderzeichen. Ich habe den Aufruf gestern im Chrome-Browser getestet, das muss gehen.

Hab im Password keine Sonderzeichen, nur Zahlen und Buchstaben. Lediglich in der Mailadresse, im Domain-Teil, sind Bindestriche.

Is schon klar, wenn ich mich nicht korrekt anmelden kann, dann kann kein Zugriff stattfinden, egal womit. Und ratlos bin ich auch. Das FlowerPowerAPI wird bei Parrot auf der Website eher stiefmütterlich behandelt. Hab auch nix zum Thema Support diesbezüglich gefunden.

berniie

Hallo,
möchte nicht für Verwirrung sorgen, aber ihr wissst, dass es seit dem letzten Update der app eine neue api gibt?

http://developer.parrot.com/docs/FlowerPower/#flower-power-cloud-api

Eine neue Registrierung ist erforderlich, da ein aktualisiertes client secret benötigt wird.

Mit folgenden Änderungen hab ich das Modul ein wenig mehr ans laufen bekommen.

--- 88_FlowerPowerApi.pm.old-api        2016-10-17 11:21:00.000000000 +0200
+++ 88_FlowerPowerApi.pm        2016-10-17 14:15:08.155050813 +0200
@@ -8,10 +8,10 @@
use HTTP::Date;
use Encode qw(encode decode);

-use constant AUTH_URL => "https://apiflowerpower.parrot.com/user/v1/authenticate?grant_type=password&username=%s&password=%s&client_id=%s&client_secret=%s";
-use constant PROFILE_URL => "https://apiflowerpower.parrot.com/user/v4/profile";
-use constant GARDEN_LOCATION_STATUS_URL => "https://apiflowerpower.parrot.com/sensor_data/v4/garden_locations_status";
-use constant SYNC_DATA_URL => "https://apiflowerpower.parrot.com/sensor_data/v3/sync";
+use constant AUTH_URL => "https://api-flower-power-pot.parrot.com/user/v1/authenticate?grant_type=password&username=%s&password=%s&client_id=%s&client_secret=%s";
+use constant PROFILE_URL => "https://api-flower-power-pot.parrot.com/user/v4/profile";
+use constant GARDEN_LOCATION_STATUS_URL => "https://api-flower-power-pot.parrot.com/garden/v1/status";
+use constant SYNC_DATA_URL => "https://api-flower-power-pot.parrot.com/garden/v2/configuration";


sub FlowerPowerApi_Initialize($$)


Gibt noch ein paar Fehlermeldungen im log. Bin dabei mir das anzuschauen.

Schöne Grüße,
Jörg