Hi,
ich habe zwei Module für Parrot Flower Power geschrieben. Damit überwache ich jetzt selbst schon seit einigen Monaten 4 Pflanzen und möchte hiermit den Code teilen.
https://github.com/db85/FhemFlowerPower
Anleitung findet sich auch auf github.
Das Modul holt sich die Daten nicht direkt über Bluetooth von den Geräten sondern über die offizielle API von der Cloud. Zum automatisierten hochladen habe ich auf github einen Link hinterlegt. Da gibt es ein offizielles Tool von den Parrot Entwicklern.
Gerne könnt ihr auch Wünsche oder Anregungen äußern.
Viele Grüße
Daniel
Cool, war gerade sowieso auf der Suche nach Bewässerungssensoren.
Mal schauen ob ich mir dann diese Lösung gönne.
Sieht gar nicht so schlecht aus.
Zu der Sache an sich kann ich nichts beisteuern, aber hab mal eben auf den Code geschaut und gleich mindestens zwei Probleme festgestellt.
Vor Deinen readingsBulkUpdate fehlt immer readingsBeginUpdate und nach den readingsBulkUpdate fehlt readingsEndUpdate.
Des Weiteren ist überhaupt keine Dokumentation dabei, das wird beim commandref_join.pl auf Fehler stoßen.
Gruß
Dan
P.S. Natürlich schön dass Du das erstellt und Dich damit beschäftigt hast.
Vielen Dank für dein Feedback. ReadingsBeginUpdate und readingsEndUpdate habe ich nicht vergessen. sondern die waren im Device-Modul vielleicht an einer Stelle wo man diese nicht unbedingt sucht. Für die Lesbarkeit habe ich diese Befehle jetzt direkt vor und nach den BulkUpdate gepackt. Die Dokumentation werde ich noch nachholen. Ich wollte mir erst einmal allgemeines Feedback über den Code und den Modulen einholen. Das ist bisher mein erstes Modul und ich habe eigentlich keine Ahnung von Perl ;-)
Hi Daniel,
Habe die FlowerPowerApi in Fhem definiert, das funktioniert soweit.
Aber sobald ich ein Device anlegen will stürzt FHEM ab, hab folgende Fehlermeldung im Log:
2016.08.11 23:25:39.137 1: PERL WARNING: Use of uninitialized value $lastLastUpdate in string gt at ./FHEM/88_FlowerPowerDevice.pm line 55.
Can't use string ("air_temperature_") as a HASH ref while "strict refs" in use at ./FHEM/88_FlowerPowerDevice.pm line 152.
Kannst du damit was anfangen?
Gruß Christoph
Hat sich erledigt, hab die aktuellste Version vom Modul nochmal gezogen.
Jetzt funktioniert alles, vielleicht lag es auch an den Dateirechten...
Interessante Idee, nicht den Sensor, sondern die Cloud abzufragen.
Ich hatte mal angefangen über den node.js direkt auf den Sensor zu gehen, war aber komplex und mir fehlte die Zeit. Habe mich dann mit der Bridge zufrieden gegeben. ;)
Ich werde Dein Modul demnächst mal testen. Bin gespannt.
Ich habe gestern die Module installiert und eingerichtet.
Das Api-Module funktionierte problemlos. Kleines Manko: es gibt kein Status-Feld und damit nur ein "Initialized". OK, kann man mit stateformat selbst umdefinieren.
Ich habe bei mir
attr MyFlowerPowerApi stateformat server_identifier / Sensoren: sensor_count
Jetzt zu dem FlowerPowerDevice Modul. Ich habe 3 davon und hatte Probleme mit der Zuordnung, da die Reihenfolge der Location-ID's nicht der Reihenfolge der Sensoren entsprach. In der App ist ja der Standard, dass die letzten 4 Stellen der Seriennummer im Namen sind. Leider wird weder die Sensor-Seriennummer noch der Pflanzenname in das Device übernommen.
Schade finde ich in dem Zusammenhang auch, dass die Batteriewerte nur im ApiModul auftauchen, aber lässt sich sicher auch dort automatisieren.
Ungünstig ist die Darstellung der Messwerte. Das z.B. eine Temperatur in der Form 23.8300941146591 im Reading steht, macht nochmal eine Nachverarbeitung notwendig. Die Beschränkung auf eine Nachkommastelle wäre hier sinnvoll.
Auch hier fehlt das STATE, ich bin mir aber nicht wirklich sicher, was da drin sein sollte. Bei den 4 Werten gibt es ja entweder ein "status_ok", "status_warning" oder "status_critical". Evtl. könnte man das für eine Darstellung verarbeiten. Vielleicht aber auch besser nur die Messwerte anzeigen.
Mit Messwerten:
attr MyFlowerPowerDevice stateformat T: air_temperature_gauge_values_current H: soil_moisture_gauge_values_current F: fertilizer_gauge_values_current L: light_gauge_values_current
Das ergibt dann bei mir:
Palme T: 22.6 H: 40.8 F: 3.0 L: 0.1
Für mich interessant ist auch immer das "last_sample_utc", um zu sehen, ob die Bridge sauber die Daten des Sensors in die Cloud liefert.
Also zusammenfassend schon ein gut funktionierendes Modul. Herzlichen Dank, Daniel, für Deine Arbeit. :)
Wer hat denn noch eine Meinung?
Gruß
Veit
Hallo,
ich wollte mir auch die Sensoren zulegen und bin bei der Suche danach über folgenden Bericht gestolpert:http://www.garten-pflanzen.info/pflanzen-sensoren-high-tech-im-garten/ (http://www.garten-pflanzen.info/pflanzen-sensoren-high-tech-im-garten/).
Dort steht unter anderem:
Wichtige Aktualisierung:
Nachdem die Firma Koubachi durch die Husqvarna Group akquiriert wurde und jetzt Teil des GARDENA smart System Teams ist, stoppt der Hersteller den Verkauf seiner eigenen Produkte. Der schwedische Konzern Husqvarna vertreibt Produkte für den Garten unter der in Deutschland sehr bekannten Marke GARDENA. Zum Sortiment gehört auch das GARDENA smart system, das mit dem GARDENA smart Sensor Control Set eine Alternative zum Koubachi Pflanzensensor zur Verfügung stellt. Die Firma Koubachi verspricht seinen Kunden, dass die Server eine Übergangsphase von 3 Jahren durchlaufen und auch der Support für diesen Zeitraum aufrechterhalten wird. Erst nach Ablauf dieser Übergangsphase werden die Systeme heruntergefahren. Die Produkte von Koubachi sind derzeit noch bei Amazon erhältlich.
Wäre übel, wenn man sich auf die Cloud verläßt und diese in 3 Jahren nicht mehr antwortet....
Gruß Norbert
Das ist leider immer das Problem bei Cloudservices, aber bei Parrot ist die Api der Sensoren offen gelegt und es gibt auch entsprechende Software z.B. für Node.js. Nur leider ist die direkte Ansprache eines BLE Stacks unter Perl sehr aufwändig.
Hallo Daniel,
Super & Danke für das Modul - :-) - Installiert und läuft.
Andreas
Super! Wieder ein Baustein und noch dazu einer mit einem irren WAF. Danke, Daniel, für dieses Modul! Runtergeladen, installiert und läuft - fast.
Was meiner Frau Freude bereitet hat, macht mir nun ein Problem. Sie hat einen großen Garten angelegt und viel ausprobiert. Ich habe nun im API-Device 21 locations und keinen Schimmer welche Location zu welchem meiner (ähmm ihrer) Sensoren gehört (davon gibt es vier an der Zahl, die auch fein säuberlich mit ihren Werten bei den Readings auftauchen). Meine erste Idee, na die locations mit den höchsten Nummern werden es ja wohl sein, war ein Schuss in den Ofen.
Aus den Seriennummern im Modul und den Angaben auf der FlowerPower-Web-Seite weiß ich zumindest welcher Sensor derzeit bei welcher Pflanze steckt. Hilft mir aber nicht - oder?
Muss ich nun wirklich alle 21 locations ausprobieren oder gibt es eine bessere Strategie? Wie wäre es mit einen autocreate? Dann müsste ich die nicht benötigten Devices einfach nur löschen. Erkennen kann ich die richtigen wahrscheinlich nur am Datum des letzten Werte-Updates - oder?
Ich hatte ja auch ein paar Probleme, obwohl es bei mir nur 3 Locations sind. Idee: unter Location hängt auch plant_nickname. Dieser Wert muss für jede Location mit in das Api-Device eingelesen werden.
Ha - habe nun schon eine aktuelle Location gefunden.
@volschin: dass die Batteriewerte bei den Sensoren im zentralen API-Device verwaltet werden und nicht in den Einzel-location-Devices, macht für mich Sinn, denn die locations (Blümeleins) kommen und gehen. Wenn eine Blume nicht mehr überwacht wird, weil der Sensor zur nächsten Blume weiter gewandert ist, dann machen durchaus die alten Licht, Temperatur etc Werte der alten Blume noch Sinn, aber eben nicht mehr die Werte der Batterie, denn die wandert ja mit dem Sensor zur neuen Blume.
Hat schon einer von Euch ein Logfile und Plots angelegt? Ich überlege gerade wie ich die alten Werte aus dem Webportal in ein fhem-Logfile transferieren kann.
Oder habt ihr schon notifys für die instruction_keys? Ich möchte diese Handlungsempfehlungen irgendwie in eine ToDo-Liste überführen (etwa zusammen mit dem ToDo "Wäsche aufhängen" wenn die Waschmaschine meldet, dass sie fertig hat). Das schöne wäre hier ja, dass die Pflanze von sich aus meldet, dass das ToDo erledigt ist. Anders als beim Wäscheaufhängen wo ich selber das irgendwie als erledigt markieren muss.
Vielen Dank für die vielen Antworten. Dem Wetter bedingt habe ich mich in den letzten Tagen mich damit nicht beschäftigt und ich werde auf die Vorschläge und Frage noch einzeln eingehen.
Zu der Zuordnung: Um an den Nickname der Pflanzen zu kommen werde ich noch einen zusätzlichen Request einbauen müssen. Aktuell bekomme ich diese Information nicht geliefert. Aber die letzten vier Zeichen vom Serial (z.B. sensor_0_serial) stimmen mit dem letzten Teil des Namen in der App überein. (Zumindest ist das bei mir aktuell so.) Damit kannst du erst einmal die Zuordnung machen.
Nein, die Reihenfolge der Sensoren ist nicht mit der Reihenfolge der Locations identisch, zumindest nicht bei mir.
Sent from my iPhone using Tapatalk
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.
In selbigem Aufruf wird auch der plant_nickname geliefert.
Sent from my iPhone using Tapatalk
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
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
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 ?
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 (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.
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
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
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.
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.
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.
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.
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?!
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
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
Ich will nicht drängeln, oder so.
Aber vielleicht fehlen ja meinerseits noch Angaben um mir helfen zu können?
Gruß
Mike
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
...
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
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...
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.
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???
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
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
Ja, hatte ich schon. Weil mir das mit "; syntaktisch inkorrekt schien als URL.
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
Hab ich gestern Abend getestet.lâuft.....
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 :'(
... 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.
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.
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 (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
Zitat von: hartenthaler am 17 Oktober 2016, 17:13:12
... 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.
Nein,leider werden die Readings nicht gefüllt. Nur der Aufruf im Browser geht
Habe einen neuen Accesskey beantragt und damit die neue Website aus dem Browser aufgerufen.
Gleiches Ergebnis.
{"error": "invalid_client"}
Muss wohl ein Fehler in meinem Parrot-Datensatz bei denen sein. Finde nur keine Supportmailadresse für das FlowerPowerAPI.
Im Logfile habe ich folgendes gefunden:
2016.10.23 12:45:27 1: PERL WARNING: main::FlowerPowerApi_ReadSensorData() called too early to check prototype at ./FHEM/88_FlowerPowerApi.pm line 260, <$fh> line 1171.
2016.10.23 12:45:27 3: stacktrace:
2016.10.23 12:45:27 3: main::__ANON__ called by ./FHEM/88_FlowerPowerApi.pm (260)
2016.10.23 12:45:27 3: (eval) called by fhem.pl (2261)
2016.10.23 12:45:27 3: (eval) called by fhem.pl (2260)
2016.10.23 12:45:27 3: main::CommandReload called by fhem.pl (1701)
2016.10.23 12:45:27 3: main::LoadModule called by fhem.pl (1763)
2016.10.23 12:45:27 3: main::CommandDefine called by fhem.pl (1085)
2016.10.23 12:45:27 3: main::AnalyzeCommand called by fhem.pl (955)
2016.10.23 12:45:27 3: main::AnalyzeCommandChain called by fhem.pl (1218)
2016.10.23 12:45:27 3: main::CommandInclude called by fhem.pl (519)
kann mir da Jemand weiterhelfen?
Das Problem mit dem Api-Key ist folgendes:
Für die neue Api werden neue Api-Keys benötigt. Und es scheint so, dass die neuen Keys nicht mit der alte Api funktionieren. Ich bin gerade dabei das Modul entsprechend anzupassen damit die Kommunikation über die neuen Api läuft. D.h. aber auch das die Tools/Scripte die für den Cloud-Upload zuständig sind auch mit der neuen Api arbeiten müssen. Ansonsten wird das nicht funktionieren. Für mein nodejs Script das ich verwende gibt es für die neue Api einen neuen Branch:
https://github.com/Parrot-Developers/node-flower-bridge/tree/v2
Ahaaaaa, na dann kann ich ja noch lange probieren ::)
Toll, dass Du bereits wieder am Modul arbeitest.
Mir ist das alles viel zu kompliziert, somit warte ich gerne auf das angepasste Modul ;D
Ich habe jetzt ein Update für die neue API hochgeladen:
https://github.com/db85/FhemFlowerPower
Es wird empfohlen vor dem Update alle Devices zu löschen. (Zumindest beim API Device gab es doch einige Änderungen)
Uhh... Ich habe die FlowerPower-Devices gelöscht, habe die beiden neuen .pm Dateien aus github runtergeladen und fhem untergeschoben (shutdown restart). Und dann das API-Device mit dem selben define wie zuvor neu angelegt (bin zur Sicherheit auch dem Link in der github README zur FlowerPower-Api erneut gefolgt und habe dort alles ausgefüllt, habe dann aber das selbe secret wie zuvor wieder per E-Mail zugeschickt bekommen.
Nun füllt sich im Sekunden-Takt mein Logfile mit
2016.10.28 22:07:22 1: FlowerPowerApi: fetch auth with url (https://api-flower-power-pot.parrot.com/user/v1/authenticate?grant_type=password&username=x@x.de&password=x&client_id=x@x.de&client_secret=x)
(die x sind von mir geändert, dort standen die Korrekten(?) Werte)
Brauche ich eine andere E-mail und eine gänzlich neues secret?
Edit: aha! Der link in der README ist der alte! Man muss dem neuen Link https://api-flower-power-pot.parrot.com/api_access/signup (https://api-flower-power-pot.parrot.com/api_access/signup) folgen und sich dort ein neues secret zuschicken lassen! Schon gehts.
Erst einmal: vielen Dank, dass Du die API-Änderung nachgezogen hast und so dieses schöne fhem-Modul wieder zum Leben erweckt hast!
Gibt es das Reading sensor_count nicht mehr? Das war zuvor die Anzahl der real vorhandenen Sensoren. Nun gibt es nur noch location_count, also die Anzahl der verwalteten Pflanzen im Garten. Man kann aber wohl die Readings der realen Sensoren von den Pflanzen unterscheiden, weil die einen ein Reading ..._hardware_revision haben und die anderen eben nicht. Richtig? Damit könnte man sensor_count also wieder nachbilden.
Und die so schönen ..._plant_nickname sind leider auch verschwunden. Kannst Du die wieder einbauen? Sonst muss man wieder raten was denn was ist. Das war zuvor eine wirklich hilfreiche Info.
Und battery_level_percent, total_uploaded_samples und das voraussichtliche Datum für den nächsten Batteriewechsel sind wohl auch weg. Gerade der aktuelle Batteriezustand wäre aber sehr wichtig. Hat Parrot die API so "verschlankt" oder bis Du einfach noch nicht dazu gekommen all die zuvor vorhanden Daten wieder reinzuziehen? Erst einmal läuft es jetzt ja wieder! Danke!!!
Ich habe folgendes bei mir ergänzt:
stateFormat air_temperature_instruction_key, soil_moisture_instruction_key, fertilizer_instruction_key, light_instruction_key<br>T: air_temperature_gauge_values_current °C, H: soil_moisture_gauge_values_current %, F: fertilizer_gauge_values_current mS/cm, L: light_gauge_values_current_lx lx
userReadings light_gauge_values_current_lx { ReadingsVal("MyFlower.3","light_gauge_values_current",0)*671.0;; }
Dabei verhält sich das FlowerPower-Modul anders als sonstige Module. Erst einmal erscheint die intern vorgegebene Formatierung des state und erst wenn ich von Hand das stateFormat editiere und unverändert zurückschreibe, dann wird meine Formatierung übernommen. Kannst Du das noch ändern?
Viele Wünsche!
Aber auch vielen Dank!!!
Gruß Hermann
@hartenthaler Vielen Dank für dein schnelles testen
Hier kurz mein Feedback zu den einzelnen Punkten:
- Link: Richtig, der aktuelle Link ist https://api-flower-power-pot.parrot.com/api_access/signup. Habe entsprechend meine Readme angepasst
- battery_level_percent: Habe ich gefixt, der Wert heißt nun battery_current
- total_uploaded_samples: Gibt es leider nicht mehr
- Datum Batteriewechsel: Hab ich leider auch nicht mehr finden können
- plant_nickname: Hab ich auch eben gefixt
- sensor_count: Gibt es leider nicht mehr und eine Liste mit allen Sensoren bekomme ich auch nicht mehr. Aktuelle bekomme ich nur noch eine Liste von Locations (Pflanzen) denen jeweils ein Sensor zugeordnet ist. Ich muss demnächst prüfen ob und wie ich über die API die Sensoren bekommen, die keiner Pflanze zugeordnet sind.
- stateFormat: Habe ich gerade nicht verstanden, muss ich mir demnächst auch nochmal genauer anschauen ;-)
Ansonsten werde ich die neue API in den nächsten Tagen bei mir auch noch weiter genauer untersuchen und testen.
Viele Grüße
Daniel
Kennt jemand von Euch eine Website für die Darstellung der neuen Daten?
https://myflowerpower.parrot.com nutzt immer noch die bisherige API. Ich überlege, ob ich vorerst beide API's mit Daten versorge.
Mhm, komisch, seit der Aktualisierung des Moduls bekomme ich nur noch:Cannot load module FlowerPowerApi
Gesendet von meinem EVA-L09 mit Tapatalk
Hi,
kann es sein das dieses Modul nur den letzten Datensatz abruft, nicht aber die in der Zeit dazwischen in der Cloud abgelegten?
Kann man da was einstellen oder mach ich was falsch?
Danke und Gruß
Timo
Zitat von: lonzo am 31 Oktober 2016, 09:26:54
Hi,
kann es sein das dieses Modul nur den letzten Datensatz abruft, nicht aber die in der Zeit dazwischen in der Cloud abgelegten?
Kann man da was einstellen oder mach ich was falsch?
Danke und Gruß
Timo
Hi,
das Modul frägt immer den aktuellen Ist-Zustand in der Cloud zu einem bestimmten Zeitpunkt ab. Möchtest du eine Historie haben, dann musst du die Daten durch Fhem selbst in einer Datenbank protokollieren z.B. mit DbLog. Auch wenn es für die vergangenen Werte eine API-Schnittstelle gibt sehe ich keine Möglichkeit wie ich diese in Fhem speichern und verwalten kann.
Viele Grüße
Daniel
Ich habe immer noch das Problem, dass das aktualisierte Modul nicht geladen werden kann. Welche anderen Module werden für dessen Funktion sonst noch vorausgesetzt?
EDIT:
Geschafft, scheinbar beim Download immer was schiefgelaufen mit dem Handy. Nun mit PC versucht, hat auf Anhieb funktioniert
irgendwie steh ich auf dem schlauch. ich versuch die Bridge zum Laufen zu kriegen. bis zum Punkt mir die Bluetoothgeräte in der Umgebung angezeigt werden gehts. ab dann kapier ich nichts mehr. was muss wohin kopiert werden damit ./install durchgeführt werden kann??
wär super wenn mir da jemand helfen könnte
Zitat von: Acrusty am 04 November 2016, 17:17:16
irgendwie steh ich auf dem schlauch. ich versuch die Bridge zum Laufen zu kriegen. bis zum Punkt mir die Bluetoothgeräte in der Umgebung angezeigt werden gehts. ab dann kapier ich nichts mehr. was muss wohin kopiert werden damit ./install durchgeführt werden kann??
wär super wenn mir da jemand helfen könnte
Ich nehme mal an du meinst von folgender Bridge:
https://github.com/Parrot-Developers/node-flower-bridge/tree/v2
Hier ist erst einmal wichtig, dass du den Branch V2 nimmst um die neue Api verwenden zu können. Ab besten klonst du das Repository mit git oder wenn du kein git installiert hast, dann lad die das Repository als zip herunter und entpacke das in den Order "/home/pi/node-flower-bridge". Leider muss der Pfad genau so heißen, da die mit der V2 irgendwas verbockt haben und den kompletten Pfad so in den Scripten hinterlegt haben :o
Wenn du dann laut Readme Step 1 und 2 erfolgreich ausgeführt hast, dann kannst du mit (unter Linux)
cd /home/pi/node-flower-bridge/
./install.sh
die Installation starten
Hallöchen,
ich komme leider nicht weiter... Es liegt aber weder an der Node-Flower-Bridge von Parrot, noch am Modul von DB85...
Ich habe nun über's Handy einen komplett neuen Account angelegt und alle sieben FlowerPowerSticks dort eingefügt. Dann mit der gleichen neuen Mailadresse (die auf der ich den neuen Account angelegt habe, auch wenn das egal ist) auch die API-Zugriffe auf der Website "https://api-flower-power-pot.parrot.com/api_access/signup" beantragt und eine Mail erhalten, dies alles nun in der Datei "credentials.json" eingetragen und die Bridge mit "./bridge display" gestartet. Nach einiger Zeit kommt ein "Invalid Client". Ebenso wenn ich in die URL ""https://api-flower-power-pot.parrot.com/user/v1/authenticate?grant_type=password&username..." die Daten eintrage und das Ganze im Browser aufrufe. Es ist echt zum verzweifeln.
Ich habe für beide Registrierungen eine Mail aus meiner eigenen Domain genommen, es handelt sich um keine Umlaut-Domain o.ä., aber der Domainname enthält Bindestriche, was natürlich laut Spezifikation auch zulässig ist, sonst hätte ich die Domain ja schlecht registrieren können. Hat evtl. Parrot damit aber ein Problem?
Gibt es für die API - Zugriffe eine Support Adresse oder ein Webformular. Einfach nur, damit dort mal jemand meine beiden Acounts ("virtueller Garten" und "API") überprüfen kann?
Gruß aus Wiesbaden
Mike
Hallo,
die Flower Power node js Quellen sind auf github zu finden. Hier der Link zu den issues des bridge Moduls
https://github.com/Parrot-Developers/node-flower-bridge/issues (https://github.com/Parrot-Developers/node-flower-bridge/issues)
Grüße,
Jörg
@MikeR: also https://api-flower-power-pot.parrot.com/user/v1/authenticate?grant_type=password&username=x@x.de&password=xxx&client_id=x@x.de&client_secret=xxxxxxxxxx muss einen access token zurückliefern, sonst stimmt mit einem der vier Elemente was nicht. Das hat ja so mit der Bridge noch gar nichts zu tun. Wo kommt "nach einiger Zeit" das "Invalid Client"? In der Bridge oder im fhem Modul?
Ein Punkt im Modul ist noch offen: wenn ich ein individuelles stateFormat setze, dann wird dieses für die Pflanze auch angezeigt, aber beim nächsten Update der Werte wird wieder das Standard-stateFormat verwendet, was so nicht sein soll.
Gibt es eigentlich eine Möglichkeit direkt die Daten per Bluetooth abzugreifen ?
Ja.
https://github.com/Parrot-Developers/node-flower-power
Hi,
das geht scheinbar nicht mehr.
Beim installieren kommen Fehler:
pi@raspberrypi:/opt $ sudo npm install flower-power-ble
> usb@1.2.0 install /opt/node_modules/usb
> node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download: https://github.com/tessel/node-usb/releases/download/1.2.0/usb_bindings-v1.2.0-node-v51-linux-arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for usb@1.2.0 and node@7.2.1 (node-v51 ABI) (falling back to source compile with node-gyp)
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/7.2.1"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/opt/node_modules/usb/.node-gyp"
make: Entering directory '/opt/node_modules/usb/build'
make: *** No rule to make target '../.node-gyp/7.2.1/include/node/common.gypi', needed by 'Makefile'. Stop.
make: Leaving directory '/opt/node_modules/usb/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 4.4.34-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/opt/node_modules/usb/src/binding/usb_bindings.node" "--module_name=usb_bindings" "--module_path=/opt/node_modules/usb/src/binding"
gyp ERR! cwd /opt/node_modules/usb
gyp ERR! node -v v7.2.1
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
Gruß Beule
Also bei mir funktioniert es mit sudo npm install flower-power-ble. Allerdings ergibt ein node -v 4.7.0
Das musste ich so machen, da ich einen Raspi 2 habe der noch auf wheezy hängt, anders habe ich die zuvor eingerichtete bridge nicht zum laufen bekommen.
was ich allerdings nicht verstehe ist das Aktualisierungsintervall. Ich habe mit
define treppe FlowerPowerDevice myplant xyz 1200 zum testen definiert. Also sollte alle 20Minuten aktualisiert werden. Selbst wenn keine neuen Daten da sind, sollte es über das Alter das Readings ja trotzdem aktuell sein.
Allerdings wird erst durch ein set treppe update aktualisiert. Automatisch passiert das scheinbar nicht Ist die Zeitbasis von Intervall wirklich Sekunden? Mache ich da einen Fehler?
@andi11
Das Intervall ist in Sekunden. Allerdings findet keine Aktualisierung der Readings statt wenn das Api-Modul keine neue Daten hat. Explizit prüfe ich hier das Feld "last_sample_utc"
Ah das hat mich verwirrt:
- manuelles update: Timestamp wird aktualisiert
- automatisches Intervall: Es sieht aus als passiert nichts (über die Handy App sieht man ohne aktives Bluetooth wann in der Cloud zuletzt aktualisiert wurde)
Wäre daher evl. ein Reading "Zuletzt versucht um" sinnvoll? Vorallem wenn etwas nicht klappt (so wie bei mir irgendwie, aber ich glaube bei der bridge) würde es die Fehlersuche vereinfachen.
Dass das API Modul aktuelle Werte haben muss ist etwas irritierend, denn im Device Modul ist das last_sample_utc gelistet.
Passt bei euch eigentlich die Anzeige der Helligkeit zur App?
Mit dem userreading light_gauge_values_current_lx { ReadingsVal($name,"light_gauge_values_current",0)*671.0;; }
hier aus dem Thread erhalte ich einen Wert der deutlich von Live und Durchschnittswert abweicht (aktuell 906Lux Durchschnitt,700Lux live zu light_gauge_values_current 127.49Lux, light_gauge_values_current 0.19
(bei fast konstanter Beleuchtung mit Pflanzlampe nach Sonnenuntergang)
ich entdecke keine Logik hinter der Helligkeit. Jetzt sagt die App live 1000Lux und ich habe 107Lux (light_gauge_values_current 0.16(mol/(m²d) * 671)
Wer weiß Rat???
https://forum.fhem.de/index.php/topic,32786.msg565749.html#msg565749 (https://forum.fhem.de/index.php/topic,32786.msg565749.html#msg565749)
Ich habe hier mal ein wirklich simples Perl Script hinterlegt, um die Daten des Sensors auslesen zu können. Vielleicht ist es ja für den einen oder anderen von Interesse oder aber es findet sich jemand, der auf dieser Basis ein FHEM Modul baut. Als Basis könnte man zum Beispiel den Xiaomi Pflanzensensor verwenden, für den es bereits ein FHEM Modul gibt, welches ebenfalls das Gatttool verwendet.
Kanns sein das man light_gauge_values_current * ca. 4600 rechnen muss um auf den durchschnittlichen Lux Wert der App zu kommen? Das ist das was ich am ehesten in die Daten reininterpretieren könnte...