Da die Beregnungsstrategie (wenn: es gerade nicht regnet, dann: Beregnung einschalten) etwas zu wünschen überlässt, soll in der kommenden Saison das Hochbeet etwas besser überwacht werden. Dafür hab ich mir folgendes Ding gekauft:
https://smile.amazon.de/gp/product/B08KDW3ZL5
Vergleichbar ist die Hardware mit den bekannten Mi Flora Geräten von Xiaomi. Diese Ausführung ist nur etwas größer und hoffentlich besser für draußen geeignet.
Um das ganze in den HomeAssistant zu integrieren gibts mehrere Möglichkeiten:
Version #1: python package in docker am raspi
Klingt weit hergeholt, aber hörte sich ganz ok an.
Also mal den Deckel von dem Teil abgemacht und via USB versorgt. Das lädt dein eingebauten Akku und sorgt dafür, dass permanent Datenupdates geschickt werden.
Dann schaun ob man das Gerät überhaupt per bluetooth findet:
sudo hcitool -i hci0 lescan
LE Scan ...
6B:xxxx (unknown)
C4:xxxx (unknown)
C4:xxxx Grow care garden
6B:xxxx (unknown)
Wir haben ein Bingo! Soweit sogut.
Das python Package unterstützt sowohl mehrere Bluetooth backends zur Kommunikation mit den Trackern, als auch unterschiedliche Devices selbst darunter auch das von mir gekaufte Teil: https://github.com/basnijholt/miflora
Passend dazu gibts einen netten Docker build der alles installiert und die Daten praktischerweise per MQTT weiterleitet und das auch noch passend für unterschiedliche End-Systeme: https://github.com/ThomDietrich/miflora-mqtt-daemon
Hier ein kleines docker-compose.yaml um den Start zu vereinfachen:
version: "3.3"
services:
miflora:
image: miflora-mqtt-daemon
container_name: miflora
environment:
- TZ=Europe/Vienna
network_mode:
host
volumes:
- ./config:/config
eine passende Config (siehe config.ini.dist im github repo) mit der MAC Adresse aus dem lescan im ./config Verzeichnis vorrausgesetzt und der Container sollte schon Verbindung mit dem Tracker aufnehmen und mehrere Sensoren im HomeAssistant anlegen.
Problem: natürlich funktionierts nicht. Die Entities im HA wurden zwar angelegt - aber Daten kommen keine durch. Schon macht sich Mistrauen breit .. und deshalb wird doch nochmal der offizielle Weg ausprobiert.
D.h. App installieren, Konto anlegen, Koordinaten freigeben, Gerät koppeln etc.. Allerdings scheiterts hier bereits an Ersterem: die offizielle Flower Care App laut Anleitung und Amazon Beschreibung gibts nicht mehr. Man kann sie nur noch über gängige APK Mirror holen zbsp. https://flower-care.de.aptoide.com/app
Der Rest geht dafür ganz normal. D.h. auf dem Handy sehe ich alle Daten - sogar in Echtzeit und auf mehrere Meter entfernt.
Nach einigen herum probieren und Gerät an und ausstecken bin ich auf folgendes gestoßen:
Der Container und das python package liefern richtige Daten nur dann, wenn das Gerät direkt mit USB Strom versorgt wird.
Ziemlicher Dämpfer da das Teil ja für draußen gedacht wäre.
Und ja: ich hab einiges versucht. der lescan liefert durchgehende ein Signal (mit und ohne USB Strom) auch die App liefert ungeachtet weiter Daten. Nur das python package eben nicht.
Versuch #2: esphome mit bluetooth LE tracker
Der nächste Versuch wäre ohnehin als Endfassung geplant gewesen, dachte aber es wäre schwieriger Umzusetzen..
ESPHOME unterstützt dieses Gerät ebenfalls unter folgender Platform: https://esphome.io/components/sensor/xiaomi_ble.html?highlight=miflora#gcls002
Beispiel (Teil-)Config:
sensor:
- platform: xiaomi_gcls002
mac_address: "94:xxxx"
temperature:
name: "GCLS02 Temperature"
moisture:
name: "GCLS02 Moisture"
conductivity:
name: "GCLS02 Soil Conductivity"
illuminance:
name: "GCLS02 Illuminance"
Zum Glück hab ich noch einen hiervon übrig: https://smile.amazon.de/gp/product/B074RGW2VQ/
Die Config des Boards hab ich nach einigen Versuchen auch rausgefunden:
esphome:
name: $devicename
platform: esp32
board: az-delivery-devkit-v4
Vollständige ESPHome Config zur Verbindung mit dem Mi Flora Clone Gerät:
https://github.com/h4de5/esphome-configs/blob/master/config/esp32.yaml
Lösung
und nun? Eigentlich ganz einfach.
Docker am Raspberry (oder auf einem anderen Linux Gerät auf das man physischen Zugriff hat) einrichten.
den ESP32 per USB Kabel mit dem Docker Host verbinden
einen Container aus dem docker-compose file im github repo oben erzeugen
die MAC Adresse aus Versucht 1 zusammen mit der ESPHome config aus Versuch 2 einfach mal in den esphome Container geben
und:
esphome esp32.yaml compile esphome esp32.yaml upload
Das baut die neue firmware für des ESP32 zusammen. Beim Upload solltet Ihr gefragt werden, ob Ihr das Gerät Over-the-Air (OTA) oder über USB flashen wollt. Beim ersten Mal USB auswählen. Später kann man sie einfach per WLAN aktualisieren.
Ja und das wars - sobald der ESP neugestartet hat, sollte die einzelnen Sensoren schon im HomeAssistant aufscheinen:

jaja.. es ist schon wieder finster.
TODO: und was man noch so mit ESPHome und dem Bluetooth LE Device anstellen kann:
https://esphome.io/components/binary_sensor/ble_presence.html