Xiaomi Flower Care Sensoren integrieren

Begonnen von Grinsekatze, 27 August 2017, 21:41:15

Vorheriges Thema - Nächstes Thema

Grinsekatze

Hi,

da ich selbst gerade einige Xiaomi Flower Care Sensoren integriere, habe ich hier einige Tipps für Alle, die es auch tun wollen - ggf. kann es auch ins Wiki übernommen werden.

Die Sensoren gibt es unter diversen Namen. Auch gibt es eine internationale (idR. teure) und chinesische Version. Die chinesische kann jedoch zunächst ohne weiteres nur in China selbst verwendet werden.
Hier ist es jedoch recht einfach, das zu umgehen:

  • Ladet euch auf eurem Smartphone die OpenVPN App (iOS: https://itunes.apple.com/us/app/openvpn-connect/id590379981?mt=8 | Android: https://play.google.com/store/apps/details?id=de.blinkt.openvpn&hl=en) herunter.
  • Dann benötigt ihr eine Konfigurationsdatei für einen chinesischen Server. Da hilft Google.
  • Ladet euch nun die Flower Care App herunter (iOS: https://itunes.apple.com/us/app/flower-care/id1095274672?mt=8 | Android: https://play.google.com/store/apps/details?id=com.huahuacaocao.flowercare&hl=de)
  • Den Sensor öffnen, die Plastikfolie zwischen den Kontakten und Batterie entfernen und anschließend den Sensor im Blumentopf platzieren.
  • Im Smartphone den Flugmodus aktivieren, sowie WLAN und Bluetooth.
  • OpenVPN starten und mit dem chinesischen Server verbinden.
  • Flower Care starten und sicherstellen, dass der Zugriff aufs GPS nicht erlaubt wird. Sicherheitshalber kann das GPS auch vorher deaktiviert werden.
  • Nun mit Flower Care den Sensor suchen und verknüpfen. Nur hierfür wird bei der chinesischen Version der VPN benötigt. Firmware-Updates, Auslesen der Werte und Zuweisen der Pflanzen ist auch ohne VPN möglich.
  • Anschließend Flower Care schließen - damit der Sensor wieder frei ist und von der FHEM-Zentrale gefunden werden kann.
  • Nun mit der FHEM-Zentrale den Sensor suchen: "sudo hcitool lescan"
  • Anschließend mit der gelisteten Bluetooth-MAC-Adresse ein neues Gerät im FHEM-Webfrontend zuweisen: "define [NAME] XiaomiFlowerSens [MAC-ADRESSE]"

Meine Sensoren heißen alle Pflanzensensor[Zahl][Raum]. Auch hat jeder ein Alias mit dem richtigen Pflanzennamen.
Mithilfe der Flower Care App lese ich die Minimum- und Maximum-Werte für Temperatur, Feuchte, Helligkeit und Dünger aus und speichere sie als Readings in der Device-Definition in FHEM.
Dadurch löst das Modul dann Events aus, wenn der Minimum- oder Maximum-Wert unter- bzw. überschritten wird - z.B. "XiaomiFlowerSens Pflanzensensor01Wohnzimmer minFertility low" oder "XiaomiFlowerSens Pflanzensensor01Wohnzimmer maxFertility high".

Wer nun eine Nachricht o.Ä. nutzen möchte, um über diese Events informiert zu werden kann meinen Notify verwenden:
define Notify_FlowerSensor notify Pflanzensensor.*:(minFertility|minLux|minMoisture|minTemperature|maxFertility|maxLux|maxMoisture|maxTemperature).(low|high) {\
my $alert;;\
my $device;;\
$device = AttrVal("$NAME","alias", "$NAME");;\
if ($EVTPART1 eq "low") {\
$alert = "Die Pflanze (".$device.") hat zu wenig Fruchtbarkeit! Gebe etwas Dünger zum Wasser!" if ($EVTPART0 eq "minFertility");;\
$alert = "Die Pflanze (".$device.") hat zu wenig Sonneneinstrahlung! Stelle sie ins Licht!" if ($EVTPART0 eq "minLux");;\
$alert = "Die Pflanze (".$device.") hat zu wenig Wasser! Entferne etwas Wasser!" if ($EVTPART0 eq "minMoisture");;\
$alert = "Die Pflanze (".$device.") ist zu kalt! Stelle sie an einen wärmeren Ort!" if ($EVTPART0 eq "minTemperature");;\
} elsif ($EVTPART1 eq "high") {\
$alert = "Die Pflanze (".$device.") hat zu viel Fruchtbarkeit! Der Boden ist zu stark gedüngt!" if ($EVTPART0 eq "maxFertility");;\
$alert = "Die Pflanze (".$device.") hat zu viel Sonneneinstrahlung! Stelle sie in den Schatten!" if ($EVTPART0 eq "maxLux");;\
$alert = "Die Pflanze (".$device.") hat zu viel Wasser! Gieße die Pflanze!" if ($EVTPART0 eq "maxMoisture");;\
$alert = "Die Pflanze (".$device.") ist zu warm! Stelle sie an einen kälteren Ort!" if ($EVTPART0 eq "maxTemperature");;\
}\
if ($alert) {DebianMail('<eine Email-Adresse>', 'Smarthome: Pflanzenstand', $alert, '')};;\
Log 3, "$device: Pflanzenwarnung: $alert" if ($alert);;\
}
attr Notify_FlowerSensor comment Notify zum Überwachen der Pflanzensensoren.


Meine Pflanzendefinitionen sehen so aus:
define Pflanzensensor01Wohnzimmer XiaomiFlowerSens <MAC-Adresse>
attr Pflanzensensor01Wohnzimmer alias Kaffeestrauch
attr Pflanzensensor01Wohnzimmer comment Pflanzensensor für Kaffeestrauch (Coffea arabica) im Wohnzimmer
attr Pflanzensensor01Wohnzimmer event-min-interval state:7200,battery:7200,batteryLevel:7200,temperature:7200,moisture:7200,fertility:7200,lux:7200
attr Pflanzensensor01Wohnzimmer event-on-change-reading state
attr Pflanzensensor01Wohnzimmer event-on-update-reading .*
attr Pflanzensensor01Wohnzimmer group Pflanzen
attr Pflanzensensor01Wohnzimmer icon weather_pollen
attr Pflanzensensor01Wohnzimmer interval 7200
attr Pflanzensensor01Wohnzimmer maxFertility 2000
attr Pflanzensensor01Wohnzimmer maxLux 20000
attr Pflanzensensor01Wohnzimmer maxMoisture 60
attr Pflanzensensor01Wohnzimmer maxTemp 32
attr Pflanzensensor01Wohnzimmer minFertility 350
attr Pflanzensensor01Wohnzimmer minLux 3700
attr Pflanzensensor01Wohnzimmer minMoisture 15
attr Pflanzensensor01Wohnzimmer minTemp 10
attr Pflanzensensor01Wohnzimmer room Pflanzen,Wohnzimmer
attr Pflanzensensor01Wohnzimmer stateFormat {"Temperatur: " . ReadingsVal($name, "temperature", 0) . " &deg;;C" . "<br/>" . "Helligkeit: " . ReadingsVal($name, "lux", 0) . " lx" . "<br/>" . "Bodenfeuchte: " . ReadingsVal($name, "moisture", 0) . " %" . "<br/>" . "Dünger: " . ReadingsVal($name, "fertility", 0) . " us/cm"}

define FileLog_Pflanzensensor01Wohnzimmer FileLog ./log/Pflanzensensor01Wohnzimmer-%Y.log Pflanzensensor01Wohnzimmer
attr FileLog_Pflanzensensor01Wohnzimmer icon edit_copy
attr FileLog_Pflanzensensor01Wohnzimmer logtype text

define Plot_Pflanzensensor01Wohnzimmer SVG logProxy:My_Pflanzensensor01Wohnzimmer:CURRENT
attr Plot_Pflanzensensor01Wohnzimmer group Pflanzen
attr Plot_Pflanzensensor01Wohnzimmer room Plots
attr Plot_Pflanzensensor01Wohnzimmer title "Kaffeestrauch"

CoolTux

#1
Zitat von: Grinsekatze am 27 August 2017, 21:41:15
Hi,

da ich selbst gerade einige Xiaomi Flower Care Sensoren integriere, habe ich hier einige Tipps für Alle, die es auch tun wollen - ggf. kann es auch ins Wiki übernommen werden.

Da hast Du Dir so viel Mühe gegeben, warum hast Du es nicht gleich ins Wiki geschrieben. Genau da ist sowas wunderbar aufgehoben.
Trage es am besten direkt ins Wiki.


Deine Alarme für Wasser sind vertauscht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Grinsekatze

Danke,

ich ging davon aus, dass ich für das Wiki keine Schreibrechte habe. Wenn doch, dann ergänze ich den Flower Mate Artikel im Wiki.

Den Dreher habe ich gestern auch bemerkt :)

Einen Schönheitsfehler habe ich noch im Notify: Er löst jedes Mal aus, wenn die Sensoren Daten schicken / FHEM sie abruft. Da werde ich noch mal experimentieren, dass es nur eine Nachricht pro Tag ist, sonst wird das Postfach voll gespamt.

CoolTux

Du musst Zugang zum Wiki beantragen. Das kann aber jeder machen der sich gerne an der Dokumentation beteiligt.

https://wiki.fhem.de/wiki/FHEMWiki:Administratoren
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

P-terrible

Cooles HowTo, danke!

Wer keinen Wert auf die Einbindung der Smartphone-App legt, kann den Anlernvorgang übrigens stark abkürzen:

1. Sensor scharfmachen (Plastikstreifen entfernen) und in Blumentopf stecken.
2. Jetzt brauchen wie die Bluetooth-MAC-Adresse des Sensors. Hierfür gibt es zwei Möglichkeiten
    a. mit sudo hcitool lescan nach dem Sensor suchen BT-MAC notieren.
    b. eine Smartphone-App nutzen (z.B. Bluetooth-LE-Scanner), BT-MAC notieren.
3. define my_sensor_name XiaomiFlowerSens 12:34:56:78:90:AB (letztes ersetzt Ihr natürlich mit der BT-MAC)

Fertig.

Grüße

Peter

Grinsekatze

Jupp, der kann den ganzen App-Gedöns überspringen. Aber dann fehlen in der Regel auch die nötigen Min.- und Max.-Werte. da man sie in der App dann nicht nachschlagen kann. Darum habe ich mich für die App-Variante entschieden.