4MiFlora Pflanzensensoren im Home Assistant

Ich habe die MiFlora Home Assistant-Integration seit einiger Zeit verklagt, um Daten zu verschiedenen Zimmerpflanzen zu erhalten. Auf dem Weg dorthin musste ich jedoch verschiedene Hürden überwinden, darunter die begrenzte Reichweite von Bluetooth, Probleme mit der Akkulaufzeit, und Abrufen der zu meldenden Batteriewerte. Ich scheine das alles endlich geknackt zu haben und habe jetzt ein System, das mit vielen Pflanzen im Haus zuverlässig funktioniert. Ich habe unten zusammengefasst, was ich verwendet habe.

Hardware

Das erste, was zu sagen ist, dass ich ein Bluetooth habe USB Dongle, der an mein Home-Assistant-System angeschlossen ist. Dieser überwacht direkt die Pflanzen in Reichweite (d.h. die im selben Raum wie die HA-Box). Um mehr Entfernungsgeräte zu überwachen, habe ich ein ESP32-Board mit eingebautem Bluetooth-Modul verwendet, das ich in einem billigen kleinen Gehäuse habe und mit einem alten Mikro betrieben habe-USB Telefonladegerät

  • USB Dongle: Die, die ich bekommen habe, ist aus Altersgründen nicht mehr verfügbar, aber es gibt viele von Amazon und anderswo – stellen Sie einfach sicher, dass sie von Linux unterstützt wird
  • ESP32-Board: Ich bekam ein JZK ESP32-S Das kostet derzeit 6,49 £ bei Amazon
  • Fall für ESP32: Ich habe das Gehäuse für eine NodeMCU Wroom-32D gefunden (kurze Antenne) passte auf mein Board – das kostete 4,20 £ Ebay

Integrationen für Home Assistant

Während die grundlegende MiFlora-Integration in den Heimassistenten integriert ist, habe ich festgestellt, dass sie bei nativer Verwendung viel Batterie verbraucht. Stattdessen benutze ich die Bluetooth-Low-Energy-Monitor 3rd Party-Integration, die Sie einfach installieren können VERZÖGERUNG
Die habe ich dann auch installiert ESPHome-Integration für den Heimassistenten, um meinen ESP32 BLE-Repeater zu verwalten
Schließlich, Um die Pflanzen schön darzustellen, habe ich eine besondere Gabelung der hinzugefügt Lovelace-Pflanzenkarte Addon über LAG

Konfiguration

Sobald BLE Monitor installiert und mit meinem Bluetooth-Dongle konfiguriert war, nahm es die MiFlora-Sensoren in Reichweite auf und listete sie in der Dropdown-Liste „Geräte“ sowie die Geräte und Entitäten auf seiner Karte in der HA-Konfiguration auf
Das Tolle am BLE-Monitor ist, dass er auf die Übertragung der Sensoren lauscht, anstatt sie aktiv abzufragen, die ihre Batterien entladen würden. Jedoch, Die Sensoren übertragen keine Batterieinformationen. Um diese zu erhalten, müssen wir sie aktiv abfragen. Umfrage nur dafür, und das passive Abhören der anderen Daten scheint der beste Kompromiss zu sein, wenn Sie alle Daten verfügbar haben und gleichzeitig die Batterielebensdauer des Sensors maximieren möchten. Ich habe meine configuration.yaml in mehrere separate Dateien aufgeteilt, um die Verwaltung etwas einfacher zu gestalten, also habe ich nur die folgende Zeile in meiner configuration.yaml –

Sensor: !fügen Sie sensors.yaml hinzu

Dann habe ich in sensors.yaml jede Pflanze wie folgt aufgelistet

 - Plattform: blühte
   Mac: 'Mac:Anschrift:of:blühte:Sensor:hier'
   Name: Basilikum
   Update erzwingen: wahr
   scan_interval: 08:00
   Median: 3
   go_unavailable_timeout: 43200
   überwachte_bedingungen:
     - Batterie

Als nächstes – damit die Pflanzen schön aussehen, habe ich eine Pflanzenkonfiguration. Wie zuvor eine einzelne Zeile in configuration.yaml zu Beginn: 

Pflanze, Anlage: !schließt plants.yaml ein

Und dann habe ich in plants.yaml Folgendes

Basilikum:
  Sensoren:
    Feuchtigkeit: sensor.ble_moisture_basil
    Batterie: sensor.basil_batterie
    Temperatur: sensor.ble_temperature_basil
    Leitfähigkeit: sensor.ble_conductivity_basil
    Helligkeit: sensor.ble_illuminance_basil
  min_batterie: 15
  min_helligkeit: 2500
  max_helligkeit: 60000
  min_temperatur: 8
  max_temperatur: 32
  min_Feuchtigkeit: 15
  max_feuchtigkeit: 60
  min_leitfähigkeit: 350
  max_leitfähigkeit: 2000

Beachten Sie den subtilen Unterschied zwischen dem Entitätsnamen für die Batterie im Vergleich zu den anderen Sensoren. Die Batterieentität kommt von der Miflora-Plattform in sensors.yaml, während die andere 4 Sensoren kommen aus der BLE-Integration. Es gibt eine Batterieentität, die von der BLE-Integration aufgelistet wird, aber diese wird für diese Anlage nur als „unbekannt“ angezeigt. Diese Konfiguration wird benötigt, damit die Pflanzenkarte die Anlage ansprechend darstellt
Gehen Sie dann einfach zu dem Ort, an dem Sie Ihre Pflanze hinzufügen möchten, und fügen Sie die Lovelace-Pflanzenkarte hinzu. Sie müssen die Karte manuell „konfigurieren“., aber es dauert nur 3 Zeilen ...

Typ: Benutzerdefiniert:Blumenkarte
juristische Person: pflanze.basilikum
Spezies: basilika basilika

Beachten Sie, dass die Art aufgeführt ist für 2 reas-ons. Zuerst wird der Name auf der Karte angezeigt, aber mehr Import-antly, Es wird auch ein Bild der Pflanze angezeigt, wenn Sie die Pflanzenbilder heruntergeladen und unter Verwendung der lateinischen Namen in configwwwimagesplants eingefügt haben — die Informationen über die Datenbank sind in der Dokumentation der Lovelace-Pflanzenkarte verfügbar

Reichweite erweitern

Schließlich, Wir müssen die Reichweite, die wir erreichen können, erweitern. Dazu benötigen wir das ESP32-Gerät. Das erste, was Sie tun müssen, ist, es per an Ihren Computer anzuschließen USB und flashen Sie es mit einem grundlegenden ESPHome-Image
Ich habe das benutzt ESPHome-Flasher und die cp210x universeller Windows-Treiber von SiLabs und folgte der Anleitung der ESPHome HomeAssistant-Integration
Die Konfiguration, die ich für mein ESP32-Gerät verwendet habe, ist unten

esphome:
  Name: jzk-esp-32s
  Plattform: ESP32
  Planke: esp32doit-devkit-v1

# Aktiviere das Logging
Logger:

# Aktivieren Sie den Home-Assistenten API
API:

W-lan:
  ssid: !geheimes wifi_ssid
  Passwort: !geheimes wifi_passwort

  # Fallback-Hotspot aktivieren (gefangenes Portal) falls die WLAN-Verbindung fehlschlägt
  ap:
    ssid: "Esp32-Fallback-Hotspot"
    Passwort: "zufälliges Passwort hier"
    
externe_komponenten:
  - Quelle: github://myhomeiot/esphome-Komponenten
    
esp32_ble_tracker:
    
ble_gateway:
  Geräte:
    - MAC-Adresse: Mac:Anschrift:of:blühte:Sensor:nach:Monitor:geht:hier
  on_ble_advertise:
    then:
      hausassistenz.event:
        Veranstaltung: esphome.on_ble_advertise
        Daten:
          Paket: !Lambda-Rückgabepaket;
          
myhomeiot_ble_host:

myhomeiot_ble_client:
  - MAC-Adresse: Mac:Anschrift:of:blühte:Sensor:nach:Monitor:geht:hier
    service_uuid: '1204'
    charakteristische_uuid: '1A02'
    Updateintervall: 4h
    on_value:
      then:
        hausassistenz.event:
          Veranstaltung: esphome.on_ble_advertise
          Daten:
            Paket: !Lambda |-
              wenn (x.Größe()  2)
              {
                ESP_LOGE("myhomeiot_ble_client", "payload has wrong size (%d)", x.Größe());
                Rückkehr "";
              };
              ESP_LOGI("myhomeiot_ble_client", "Battery (%d%%), Firmware (%s)", x[0], std::string(x.begin(), x.end()).substr(2).c_str());
              char buffer[70 + 1];
              const uint8_t *remote_bda = xthis.remote_bda();
              snprintf(Puffer, sizeof(Puffer), "043E2002010000%02X%02X%02X%02X%02X%02X14020106030295FE0C1695FE41209800000A1001%02X00",
                remote_bda[5], remote_bda[4], remote_bda[3], remote_bda[2], remote_bda[1], remote_bda[0], x[0]);
              return std::string(Puffer).c_str();

Speichern und aktualisieren Sie dann über WLAN auf Ihrem esp32-Gerät. Das ESP32-Gerät nimmt die Daten vom Miflora-Sensor auf und „schiebt“ sie über WLAN an die BLE-Integration, die automatisch ein Gerät und Entitäten erstellt. Geräte, die auf diese Weise geschoben werden, scheinen ihren Batteriestand anzuzeigen (Dank des Codes am Ende des Abschnitts myhomeiot_ble_client glaube ich). Sie müssen dem Gerät dann nur noch einen schönen Namen geben (und lassen Sie die Entitäten auch umbenennen) und erstellen Sie dann einen Eintrag in plants.yaml mit den richtigen Entitäten

Hinterlasse eine Antwort

4 Comments

JSJon Scaife

Hallo
Ja, Eigentlich verwende ich jetzt selbst ESP32-Repeater, da sie in der Lage sind, den „passiven“ Modus zu verwenden UND Batteriedaten zu sammeln.
Wenn Sie eine USB Bluetooth-Gerät, dann können Sie die MiFlora-Geräte zuerst direkt damit koppeln und dann, wenn Sie das ESP32 einrichten, sendet es die Informationen an HA und es wird automatisch für die richtigen Entitäten angezeigt

Sie müssen den Code verwenden, wie ich ihn im Abschnitt „Erweitern des Bereichs“ beschreibe.
Außerdem muss die Integration „Bluetooth Low Energy Monitor“ installiert sein (über HACS)

Wenn Sie keine haben USB Bluetooth, dann gibt es eine Möglichkeit, die Geräte dazu zu bringen, im Bluetooth Low Energy Monitor angezeigt zu werden. Ich kann mich nicht an den Link erinnern, wo ich es gelesen habe, aber ich denke, es ist Teil des Bluetooth Low Energy Monitor-Wikis oder der FAQs

Wenn Sie es so machen, müssen Sie nicht das manuelle YAML verwenden, das Barry verwendet. Sein Beitrag ist von 2020 — Ich denke, bevor Bluetooth Low Energy Monitor dies tun konnte oder vielleicht bevor es überhaupt existierte.

Antworten
TToni

Hallo, vielen Dank für die Veröffentlichung dieser großartigen Lösung.
Kann das Bluetooth-Gateway esp32 Daten an mehr als ein Bluetooth-Gerät übertragen oder muss ein ESP bereitgestellt werden? 32 für jedes Bluetooth-Gerät, für das wir die Reichweite erweitern möchten?

Antworten
JSJon Scaife

Hallo Tony
Das ESP überträgt Daten für alle BT-Geräte in Reichweite, glaube ich, obwohl meins derzeit nur für verwendet wird 1 BT-Gerät kann ich nicht bestätigen 100% – aber das ist sicherlich mein Verständnis

Antworten