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:

https://docs.platformio.org/en/latest/boards/espressif32/az-delivery-devkit-v4.html#board-espressif32-az-delivery-devkit-v4

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