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:von: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:von:blühte:Sensor:zu:Monitor:geht:hier on_ble_advertise: dann: hausassistenz.event: Veranstaltung: esphome.on_ble_advertise Daten: Paket: !Lambda-Rückgabepaket; myhomeiot_ble_host: myhomeiot_ble_client: - MAC-Adresse: Mac:Anschrift:von:blühte:Sensor:zu:Monitor:geht:hier service_uuid: '1204' charakteristische_uuid: '1A02' Updateintervall: 4h on_value: dann: 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
Hi,
es gibt doch auch die Version die flora Sensoren via ESP script auszulesen und an den MQTT Broker zu schicken. Finde da leider noch nicht die richtige Beschreibung wie ich dann die in MQTT enthaltenen Daten als Sensor in HomeAssistant publishen kann.
Hier der Link dazu: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/
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.
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?
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