Neues Modul: 74_ParrotFlowerPower - Parrot Flower Power Pflanzensensor

Begonnen von mumpitzstuff, 06 März 2017, 22:30:15

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Inzwischen ist das Modul recht ausgereift und bereits mehrere Wochen im Einsatz. Es dürfte sich somit recht stabil verhalten, außer es versucht jemand dieses Modul zusammen mit lepresenced auf einem Bluetooth Dongle zu verwenden. Das wird definitiv zu Problemen führen. Ich selbst verwende deshalb 2 Bluetooth Dongles, einen für lepresenced und einen für die Pflanzensensoren. Das funktioniert einwandfrei.

ParrotFlowerPower - Plant Sensor
This module can be used to read data from Parrot Flower Power sensors with bluetooth 4.0 Low Energy.

Requirements:

  • Gattool is required to use this module. Be sure that bluez is installed (sudo apt-get install bluez).

The Parrot Flower Power sensor can measure the following values:

  • temperature
  • soil moisture
  • light
  • fertilizer (not yet supported by the module because the formula to convert the raw value into a useful value is not publicly available)

Installation:

Readings:

  • state - state of the flower power sensor or error message if there are any errors.
  • deviceName - name of the Parrot Flower Power sensor.
  • deviceColor - color of the Parrot Flower Power sensor.
  • battery - current battery state (depends on batteryLevel).
  • batteryLevel - current battery level.
  • soilMoisture - current soil moisture.
  • airTemperature - current air temperature.
  • sunlight - current sunlight.
  • stateSoilMoisture - state depends on attributes minSoilMoisture/maxSoilMoisture and can be ok, low or high.
  • stateAirTemperature - state depends on attributes minAirTemperature/maxAirTemperature and can be ok, low or high.
  • stateSunlight - state depends on attributes minSunlight/maxSunlight and can be ok, low or high.

Attributes:

  • disable - disables the Parrot Flower Power device
  • disabledForIntervals - disables the Parrot Flower Power device for an interval (example: 00:00-06:00)
  • interval - interval in seconds for statusRequest (default: 3600s)
  • hciDevice - bluetooth device (default: hci0)
  • decimalPlaces - decimal places for all float values (default: 4)
  • minSoilMoisture - minimum allowed soil moisture (affects stateSoilMoisture)
  • maxSoilMoisture - maximum allowed soil moisture (affects stateSoilMoisture)
  • minAirTemperature - minimum allowed air temperature (affects stateAirTemperature)
  • maxAirTemperature - maximum allowed air temperature (affects stateAirTemperature)
  • minSunlight - minimum allowed sunlight (affects stateSunlight)
  • maxSunlight - maximum allowed sunlight (affects stateSunlight)

WolfgangV

Hallo,

erstmal schönen Dank für die Entwicklung des Moduls.

Meine Frage: Muss irgendetwas konfiguriert werden, damit der zweite Bluetooth-Dongle angesprochen wird oder findet das Modul von alleine den richtigen?


Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

mumpitzstuff

Dafür gibt es das Attribut hciDevice. Einfach drauf achten, das lepresenced z.B. hci1 und das Parrot Modul hci0 verwendet (oder anders rum). Dann stören sich die beiden nicht.

burgi400

Nutze das presence Modul für die Bluetooth-Erkennung meines Handy. Kann das auch stören? Bei meinem FlowerPower wird als reading nur state mit dem Wert "read data" angezeigt.

mumpitzstuff

Keine Ahnung was das genau macht. Wenns nicht auf Anhieb klappt, dann leg den Sensor mal in die Nähe vom Bluetooth Dongle, schalte im Device verbose 5 ein und poste das Resultat aus dem Logfile.

burgi400

So, dirkt neben dem USB-Dongle steht im Log der Fehler "result: connect: No route to host (113)" und "invalid gatttool response". Erster Fehler für jeden Loop, der zweite bei jedem Versuch der Parameter-Abfrage

mumpitzstuff

Das kann leider x verschiedene Ursachen haben. Angefangen von einem nicht funktionierenden bluez bis hin zu einem Dongle der ble nicht richtig unterstützt. Um presence auszuschließen, kannst du es ja auch mal temporär deaktivieren. Ansonsten musst du mal im Internet nach diesem Fehler suchen bzw. erst mal versuchen ohne laufendes fhem per Kommandozeile den Sensor zu erreichen. Wenn du die entsprechenden Kommandos benötigst, kann ich dir die kurz Posten.

ectomorph

Schön das es inzwischen ein fertiges Module für meine ParrotFlowerPower gibt. vielen Dank dafür.

@burgi400
Ich nutze übrigens auch das presence Modul für die Bluetooth-Erkennung unserer Smartphones. Und es funktioniert mit dem eingebauten Intel Bluetooth Module des Intel NUC problemlos, lediglich die reichweite ist sehr gering. Man muß schon <5m an die FlowerPower ran, aber das ist bei direkter Verbindung mit dem Handy auch nicht anders.

Weiß jemand wie man die Werte sinnvoll auswerten kann, für z.B. eine giessen Benachrichtigung per Mail oder Pushover?

mumpitzstuff

Ich bin noch etwas am experimentieren, aber die einfache Lösung scheint das zu sein:

defmod BLUMEN_GIESSEN_DI DOIF ([09:00-22:00] && ([":stateSoilMoisture: low"] && [?$SELF:B_$DEVICE] ne "low"))\
(\
  set PUSHBULLET message Pflanze $DEVICE gießen | GIEßEN, setreading $SELF B_$DEVICE low\
)\
DOELSEIF ([":stateSoilMoisture: ok"] && [?$SELF:B_$DEVICE] ne "ok")\
(\
  setreading $SELF B_$DEVICE ok\
)
attr BLUMEN_GIESSEN_DI cmdState Gießen erforderlich|Pflanzen sind gegossen
attr BLUMEN_GIESSEN_DI do always

mumpitzstuff

Apnsten kann man auch für jede Pflanze jeweils einen Watchdog und ein Notify anlegen:

defmod WD_YUCCA_GIESSEN watchdog WD_YUCCA_GIESSEN 00:00:02 YUCCA_GIESSEN set PUSHBULLET message Yucca giessen | GIESSEN
attr WD_YUCCA_GIESSEN disabledForIntervals 22:00-09:00
attr WD_YUCCA_GIESSEN room FLOWERS


defmod YUCCA_CHECK notify Yucca:stateSoilMoisture:.* { if ($EVENT =~ /low/) { fhem "trigger WD_YUCCA_GIESSEN" } else { fhem "setstate WD_YUCCA_GIESSEN defined" } }
attr YUCCA_CHECK room FLOWERS


Das funktioniert in jedem Fall, das habe ich schön länger am laufen. Das DOIF erst seit ein paar Minuten. ;-)

ectomorph

Hab mal das doif übernommen, bin dabei auch gleich auf das Pushovermodul gestoßen, was ich auch noch nicht kannte. Wenn ich das doif per cmd auslöse bekomme ich schon mal die Nachricht. Den Rest kann ich leider noch nicht testen da die Pflanze gerade draussen steht und der Empfang nur selten reicht. Aber ich denke wenn da "B_Garten_Oleander             ok"
steht,sieht das schon mal gut aus, oder?


mumpitzstuff

Ja. Dann geht das Ding schon mal in den Else Zweig rein. Zum testen kannst du aber bei deiner Pflanze das max Level für die Feuchtigkeit auf einen niedrigen Wert setzen, dann siehst du beim nächsten Abruf ob es geht.

Markus M.

Wird auch der Parrot Pot unterstützt?
Wenn nein, was fehlt? Ich hab einen hier :)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

mumpitzstuff

Ich habe leider keinen, deshalb kann ich erst einmal nur nein sagen. Ich würde es aber trotzdem mal probieren, vielleicht hast du ja Glück und sie haben am Interface nichts geändert.

Markus M.

Ok, lag am Bluetooth...
Sieht erst mal ganz gut aus:
Internals:
   BTMAC      A0:14:3D:CD:XX:XX
   DEF        A0:14:3D:CD:XX:XX
   INTERVAL   3600
   NAME       pot
   NR         2157
   STATE      M: 0 % T: 26.8202 °C L: 136.3338 lux B: 83 %
   TYPE       ParrotFlowerPower
   VERSION    0.0.3
   Readings:
     2017-06-18 19:13:53   airTemperature  26.8202
     2017-06-18 19:13:53   battery         ok
     2017-06-18 19:13:53   batteryLevel    83
     2017-06-18 19:13:53   deviceColor     brown
     2017-06-18 19:13:53   deviceName      Parrot pot XXXX
     2017-06-18 19:13:53   soilMoisture    0
     2017-06-18 19:13:53   state           M: 0 % T: 26.8202 °C L: 136.3338 lux B: 83 %
     2017-06-18 19:13:53   stateAirTemperature ok
     2017-06-18 19:13:53   stateSoilMoisture ok
     2017-06-18 19:13:53   stateSunlight   ok
     2017-06-18 19:13:53   sunlight        136.3338 


Dann muss ich nur noch versuchen rauszufinden was die anderen UUIDs bedeuten.
Weisst du zufällig, wie man Werte über gatttool setzt?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0