Modul für Parrot Flower Power

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

Vorheriges Thema - Nächstes Thema

db85

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

Thyraz

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.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

DeeSPe

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.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

db85

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 ;-)

Christoph

#4
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...


volschin

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

volschin

#6
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
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

redlav

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

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

volschin

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

AndreasR

Hallo Daniel,

Super & Danke für das Modul -  :-)  - Installiert und läuft.


Andreas

hartenthaler

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?
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, ...

volschin

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

hartenthaler

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

db85

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.


volschin

Nein, die Reihenfolge der Sensoren ist nicht mit der Reihenfolge der Locations identisch, zumindest nicht bei mir.


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