Modul für Parrot Flower Power

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

Vorheriges Thema - Nächstes Thema

gandy

Die Zuordnung zwischen Location und Sensor stehen in der Antwort zum api aufruf https://apiflowerpower.parrot.com/sensor_data/v3/sync, hier ein python snippet:

loc_sens = {}
for data in response[u'locations']:
    if u'sensor_serial' in data:
        loc_sens[data[u'location_identifier']] = data[u'sensor_serial']

Nachdem die Android App mit dem letzten Update für mich unbrauchbar wurde, befülle ich jetzt FHEM dummies mittels python script aus den Cloud Daten. Vom Modul habe ich gerade erst erfahren, werde das aber die Tage gern mal testen, ist sicher eleganter :)

Grüße,
Andy.
fhem (svn) auf i5-4210U NUC
2x HMLAN, 19x HM-SEC-RHS, 15x HM-LC-Bl1PBU-FM, etc.
ODYS Neron Tablet / Android 4.2
Samsung Galaxy Tab 2 10.1N / Android 4.1.2
Samsung Galaxy Note / Android 6.0.1

volschin

In selbigem Aufruf wird auch der plant_nickname geliefert.


Sent from my iPhone using Tapatalk
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

db85

Ich habe jetzt noch den zusätzlichen Request eingebaut. Jetzt habt ihr unter location_0_sensor_serial die Zuordnung. Auch sind plant_nickname und sensor nickname vorhanden.

Der Code befindet sich erst einmal im Develop-Branch und muss von mir noch ausführlich getestet werden: https://github.com/db85/FhemFlowerPower/tree/develop

hartenthaler

#18
Super! Schnell mal ausprobiert und siehe da es wird alles viel klarer! Danke!
Die Umlaute stimmen allerdings noch nicht (etwa bei Gr�nlilie capense). Und die Sortierung der Readings ist bei mehr als 10 Locations nicht so schön, aber das ist nicht so wichtig.

location_1
location_10
location_10_identifier
location_10_plant_nickname Ficus Bonsai
location_10_sensor_serial
location_11
location_11_identifier
location_11_plant_nickname Kannenpflanze
location_12
location_12_identifier
location_12_plant_nickname Rote Tr te
location_13
location_13_identifier
location_13_plant_nickname Rhaphidophora
location_14
location_14_identifier
location_14_plant_nickname Gr nlilie capense
location_15
location_15_identifier
location_15_plant_nickname Usambara spezial
location_16
location_16_identifier
location_16_plant_nickname Hibiskus rot
location_17
location_17_identifier
location_17_plant_nickname Crossandra orange
location_18
location_18_identifier
location_18_plant_nickname Klivie schmal
location_19
location_19_identifier
location_19_plant_nickname Klivie gro
location_1_identifier
location_1_plant_nickname Losbaum
location_1_sensor_serial
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, ...

ChrisW

Ist die Cloud abfrage derzeit die beste möglichkeit die Flower Powers in Fhem einzubinden ?
Nur wie bekomme ich die Dauerhafte Cloud / Flower Power verbindung hin ? Muss dafür imme rein Handy Aktiv sein ?
Raspberry PI3 mit allem möglichen.

gandy

Zitat von: ChrisW am 31 August 2016, 08:42:30
Ist die Cloud abfrage derzeit die beste möglichkeit die Flower Powers in Fhem einzubinden ?

Aktuell ja, man kann zwar per BLE die Sensoren im Live-Modus auslesen und so die Messwerte bekommen, unter Perl ist das aber nicht so einfach, weil es meines Wissens keine gute BLE-Implementierung gibt. Für Python bin ich gerade dabei, ein Script zu schreiben, mit dem das möglich ist, die Werte könnte man dann direkt an FHEM weiterreichen.

Schwieriger gestaltet sich das mit den historischen Daten, die der Sensor speichert. Es ist zwar dokumentiert, wie diese Daten en-block auzulesen sind, nicht aber wie man sie interpretiert. Dies geschieht durch den Cloud-Dienst. Zum lokalen und cloudunabhängigen Dekodieren der Daten wäre im besten Fall ein wenig reverse Engineering zu stemmen.

Mittel- bis langfristig wäre ich auch sehr an einer Alternative zum Cloudservice interessiert, als Investitionsschutz und weil ich Lösungen ohne Cloud generell bevorzuge.

Zitat von: ChrisW am 31 August 2016, 08:42:30
Nur wie bekomme ich die Dauerhafte Cloud / Flower Power verbindung hin ? Muss dafür imme rein Handy Aktiv sein ?

Du möchtest https://github.com/Parrot-Developers/node-flower-bridge zum Beispiel auf einem Raspberry Pi mit geeignetem BT4.0-Stick betreiben. Achtung, nicht jeder funktioniert hier, gute Erfahrungen habe ich mit dem Broadcom BCM20702A0 Chipsatz gemacht. Vorteil ist, dass man auch mal in Urlaub fahren kann und bei Problemen mit der Emfangssituation (zu großer Abstand, zu viel Stahlbeton, etc) ist das ganze skalierbar (ich betreibe 2 solche Stationen, die Raspberries übernehmen dabei auch noch andere Funktionen für die Heimautomatisierung). Ausserdem spart man sich das tägliche von-Pflanze-zu-Pflanze-tingeln, was spätesten am dritten Tag nicht mehr so spannend ist.

Beste Grüße,
Andy.
fhem (svn) auf i5-4210U NUC
2x HMLAN, 19x HM-SEC-RHS, 15x HM-LC-Bl1PBU-FM, etc.
ODYS Neron Tablet / Android 4.2
Samsung Galaxy Tab 2 10.1N / Android 4.1.2
Samsung Galaxy Note / Android 6.0.1

hartenthaler

Ich habe mich mal mit den PowerFlower Messwerten genauer beschäftigt und interpretiere es folgendermaßen:
- Temperatur: Messwert ist die Lufttemperatur gemessen in °C (oder °F entsprechend dem API-Reading use_fahrenheit)
- Licht: Die Photosynthetically Active Photon Flux Density (PFD) (s. https://de.wikipedia.org/wiki/Photosynthetically_Active_Photon_Flux_Density) wird gemessen in µmol(Photonen)/(m²s) bei Lichtwellenlängen zwischen 400 nm und 700 nm; man kann die PFD dann über einen Tag integrieren und kommt so zum Daily Light Integral (DLI) gemessen in mol(Photonen)/(m²d). Das müsste der Meßwert sein, der bei PowerFlower geliefert wird; leider zeigt auch die FlowerPower-Webseite beim Licht nur eine Skala ohne Einheit (grrrr....). Typische Werte für DLI sind wohl im Zimmer zwischen 0,1 mol/(m²d) bis 12 mol/(m²d) und draußen zwischen 4 mol/(m²d) im tiefen Schatten und 25 mol/(m²d) in voller Sonne (Mittelwert über einen Tag!). Vom DLI-Wert kommt man zum PFD Wert durch Multiplikation mit 11,574 = 1000000/(24*60*60). Um vom aktuellen PFD-Wert zu einem Lux-Wert zu kommen (1 lx = 1 lm/m²) muss man die spektrale Empfindlichkeitskurve berücksichtigen. Ein Näherungswert für die Umrechnung ist wohl 58 lm s/µmol (s. https://en.wikipedia.org/wiki/Photosynthetically_active_radiation), so dass aus dem Reading light_gauge_values_current durch Multiplikation mit 11,574*58 oder rund 671 sich der Wert in lx ergibt. Für die Balkonpflanze meiner Frau machen diese Werte durchaus Sinn.
- Bodenfeuchte: ein grober Mewsswert in einer etwas ominösen % Angabe. Liegt wohl bei sehr trockener Erde bei 8 % und bei gesättigt nasser Erde bei 45 %. Es ist mir nicht klar was wirklich gemessen wird.
- Düngergehalt: gemessen wird hier die elektrische Leitfähigkeit des Bodens in mS/cm, die wohl mit dem Düngergehalt korrespondiert. Werte zwischen 0 und 4 mS/cm sind wohl normal, Werte unter 1 mS/cm deuten auf einen zu geringen Düngergehalt hin, Werte über 4 mS/cm auf einen möglicherweise zu hohen Gehalt.

Ich schlage vor:
- alle Readings mit einer Einheit zu versehen (ich bin Physiker!), also Temperatur in °C, Helligkeit in mol/(m²d), Bodenfeute in % und Düngergehalt in mS/cm (oder umrechnen in die Standardeinheit S/m).
- ein weiteres Reading für die Helligkeit in lx zu spendieren
- Werte für Temperatur und Düngergehalt auf eine Nachkommastelle zu runden; die Werte für die Helligkeit in mol/(m²d) auf zwei Nachkommastellen zu runden, bzw. auf eine ganze Zahl in lx; Werte für Bodenfeuchte auf eine ganze Zahl zu runden.

@db85: was hältst Du davon? Soll ich konkrete Vorschläge im Code machen?

Noch eine Anmerkung zu Cloud ja oder nein: aus meiner Sicht ist der Vorteil der Cloud, dass dort die Datenbank mit den idealen Werten für eine jede Pflanze hinterlegt ist. Es ist aus meiner Sicht wirklich komplex um aus den vier Messwerten pro Pflanze eine Empfehlung abzuleiten. Da steckt eine Menge an KnowHow dahinter, die nachzubilden ich mir nicht zutrauen würde. Jede Pflanze hat unterschiedliche Anforderungen. Wann das nächste Mal gegossen werden muss hängt nicht nur vom aktuellen Bodenfeuchtigkeitswert ab, sondern auch von der Austrocknungsrate. Ob der Standort zu sonnig oder zu schattig ist, hängt von einem Integral über eine längere Zeit ab und nicht vom aktuellen Helligkeitswert. Ich kann mir nicht vorstellen, dass wann immer meine Frau einen Sensor zu einer anderen Pflanze umsteckt ich mich gleich hinsetze und die dafür passenden Regeln konstruiere. Da verlasse ich mich lieber auf auf die FlowerPower-Cloud. Sollte Parrot den Dienst irgendwann einmal einstellen, dann  ist meine Investition futsch, egal ob ich die Daten aus dem Sensor auch direkt lesen kann oder nicht. Aber keine Frage: den Upload der Messwerte über die Flower-Power-Bridge zu automatisieren ist eine gute Idee und werde ich demnächst auch in Angriff nehmen.

Viele Grüße Hermann
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, ...

justme1968

nur eine kurze anmerkung zu dein einheiten:

bitte nur si einheiten (oder davon abgeleitete) verwenden und dokumentieren aber die einheiten nicht mit ins reading schreiben.

einheiten in den readings machen immer wieder mehr oder weniger grosse probleme. es gibt (mehrere) diskussionen fhem intern einen mechanismus bereit zu stellen mit dem ein modul die verwendeten einheiten bekannt geben kann. aber (leider) noch nichts endgültiges.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hartenthaler

Ja, bei den FritzBox DECT-Steckdosen stehen die Einheiten auch im Reading und haben mir als Anfänger mal ein Problem bereitet, aber wenn man es weiß wie damit umzugehen ist, dann ist auch wieder kein Problem. Da hat fhem an anderen Stellen viel größere Hürden zu bieten. Eine Maßzahl ohne Einheit ist höchstens für relative Vergleiche zu gebrauchen (wie war es gestern, wie ist es heute). Es sind schon Raumsonden auf den Mars gestürzt nur weil ein Programmierer dachte, dass eine Zahl eine andere Einheit hätte. Einheiten gehören zu jeder Maßzahl. Und ja es sollten SI-Einheiten sein, aber das ist hier zumindest der Fall; alle Werte, die die PowerFlower-Sensoren melden, sind bereits in SI-Einheiten ausgedrückt. Wenn man die Maßeinheit nicht kennt, kann man in keiner Tabelle nachsehen, was denn für die jeweilige Pflanze ein guter oder nicht so guter Wert ist. Aber wenn es dazu an anderer Stelle eine Diskussion gibt, dann suche ich mal danach, denn dann ist hier nicht der rechte Ort für eine Diskussion darüber.
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, ...

justme1968

#24
ja. eine einheit gehört zu jedem gemessen wert. aber als attribut/annotation/mitgeführt/.... nicht direkt im gleichen string. und das idealer weise auch noch abstrakt und nicht einfach als buchstabenkombination.

natürlich kann man mit rein numerische. readings rechnen. sogar nur mit diesen. beim rechnen nützen die einheiten nichts wenn sie da stehen. sie werden ja nicht verstanden. und auch zur anzeige nützen sie nur besxhränkt weil man eventuell anders formatieren will.

einer der threads ist hier: https://forum.fhem.de/index.php/topic,46730.msg384676.html#msg384676 andere findest du wenn du z.b. im development bereich  nach einheiten suchst.

das ding wäre auch abgestürzt wenn man die einheiten einfach dahinter geklatscht hätte. damit kann man nicht mehr rechnen.

gruss
  andre

ps: du hast geschrieben das die temperatur auch in fahrenheit sein kann. das ist keine si einheit und der wert müsste umgerechnet werden bevor er im reading landet. sonst nütz dir z.b. auch ReadingsNum nichts.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hartenthaler

#25
Ja, es gibt ein Reading use_fahrenheit und das deutet dann darauf hin, dass ein Zahlenwert in dieser Einheit zu interpretieren ist. Naheliegenderweise ist das wohl die Temperatur.
Es gibt aber noch ein Reading: use_feet_inches. Aber wozu gehört das? Keine Ahnung. Könnte etwas mit der Leitfähigkeit oder auch mit der der Helligkeit zu tun haben (da gibt es so was wie foot-candles). Ist aber absolut unklar. Das ist die Art und Weise wie die Angabe einer Maßeinheit eben nicht funktioniert. Die Einheit gehört als Attribut an die Zahl gehängt, sonst ist der Zusammenhang einfach unklar.

Und bitte: mit Werten, die mit einer Einheit versehen sind, soll man nicht rechnen können? Also bitte, das lernt man doch schon in der Grundschule. Und das müsste dann doch ein Computer wohl auch mal so langsam können. Was ist denn schon schwer bei einer Aufgabe wie 1 kg + 500 g? Also aus meiner Sicht ist das einfach. Na gut Computer kannten in der Anfangszeit nur Zahlen, aber dann wurden irgendwann auch Buchstaben im Hintergrund in Zahlen dargestellt, irgendwann auch Bilder und sogar Filme. Nur Einheiten hat man dabei wohl mal vergessen. Höchste Zeit das zu ändern. Aber ich sehe ein, dass es komplex ist von der einen Welt in die andere zu kommen. Dein zitierter Ansatz ist da doch ein guter, praktikabler Schritt, der Unterstützung verdient.
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, ...

hartenthaler

Habe gerade die neue Version der IOS FlowerPower App auf mein iPad gespielt. Sieht viel besser aus und zeigt die Helligkeit nun in Lux an. Die Web-Seite hat allerdings immer noch Grafiken ohne Angabe von Einheiten.
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, ...

lonzo

#27
Hallo!


Das finde ich ja mal klasse das jemand die Teile in FHEM einbindet. Ich hab zwei Flower Power in Betrieb zur "Fernabfrage" verwende ich ein altes S3 Mini bei dem das Displayglas gebrochen ist .... als Bluetoothempfänger mit integrierter Webcam ideal, läuft auch schon seit Monaten stabil.

Nun hab ich versucht die Module einzubinden, die beiden Module auf den Pi, client_id besorgt und den define Befehl ausgefürt.
Ich bekomme aber ein "Cannot load module FlowerPowerApi" und im Log steht:2016.09.21 09:05:58 1: reload: Error:Modul 88_FlowerPowerApi deactivated:
Unrecognized character \xC2; marked by <-- HERE after t develop <-- HERE near column 60 at ./FHEM/88_FlowerPowerApi.pm line 26.

2016.09.21 09:05:58 0: Unrecognized character \xC2; marked by <-- HERE after t develop <-- HERE near column 60 at ./FHEM/88_FlowerPowerApi.pm line 26.


Hab bestimmt beim Einbinden der Module etwas falsch gemacht, hab noch nie selbst welche hinzugefügt sondern nur vorhandene verwendet.


Danke für die Hilfe und das schreiben des Moduls!

LG
Timo


PS: Hat sich erledigt ... ;-) Ist wohl was schif gelaufen beim wget, noch JSON installiert und jetzt startet die Geschichte. Kann es sein das es
seit dem Update von Seiten Parrot keine aktuellen Daten mehr gibt?!

db85

Jetzt gibt es auch mal von mir wieder ein Update:

@volschin
Ich habe deinen Vorschlag für die beiden STATE-Readings umgesetzt. Zusätzlich habe ich hier noch die entsprechenden Einheiten mit eingefügt. Die Werte werden jetzt auch gerundet und den Batteriewert findest du zusätzlich auch im Device.

@hartenthaler
Die Einheiten möchte ich auch ungern direkt ins Reading packen. Ich hoffe dir reichen die Einheiten auch im State ;-) Irgendwelche Umrechnungen habe ich aber noch nicht vorgenommen.

@lonzo
Ich bekomme auch nach dem Update weiterhin Daten

@all
Hat jemand eine Ahnung wie ich in Perl die Umlaute aus dem Json ("Gr\u00fcnlilie") richtig darstellen kann?

Viele Grüße
Daniel

MikeR

Hallo,
erstmal vielen Dank für dieses neue Modul. Genau danach hab ich gesucht.

Ich bin relativ neu bei FHEM, evtl. beschreibe ich mein Problem deswegen zu ausführlich. :-(

Ich habe die beiden Module in das Verzeichnis "opt/fhem/FHEM" kopiert und mit "shutdown restart" neu gestartet.
Dann ein FlowerPowerApi-Objekt definiert. Soweit so gut. Allerdings passiert nix. Im Logfile sehe ich den HTTPS-Call und ein "fetch auth", danach "FlowerPowerApi: fetch auth with URL...". kopiere ich zum testen ob irgendwas kommt diese URL in den Browser bekomme ich ein "{"error": "invalid_client"}". Ist das die Kennung des Browsers, die nicht stimmt, oder stimmen meine Zugangsdaten nicht?

Ich benutze im DEV das "Pärchen" aus dem Smartphone, also eine Mailadresse und das selbst vergebene Kennwort bei der "normalen" Kontoerzeugung und danach das zugesendete Pärchen aus der Dev-Registierung, also nochmal die Mailadresse (Access ID) und das Access Secret, danach noch das Abfrageintervall. Alles ohne Anführungszeichen. Scheint auch soweit auf der FHEM-Seite zu funktionieren, weil die Internals CLIENT_ID, CLIENT_SECRET, PASSWORD, USERNAME richtig gefüllt werden. Nur wie gesagt ´die Webabfrage scheint nicht zu gehen.

Grüße aus Wiesbaden
Mike