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 –
1 | sensor: !include sensors.yaml |
Dann habe ich in sensors.yaml jede Pflanze wie folgt aufgelistet
1 2 3 4 5 6 7 8 9 | - platform: miflora mac: ‘mac:address:of:miflora:sensor:here’ name: basil force_update: true scan_interval: 08:00 median: 3 go_unavailable_timeout: 43200 monitored_conditions: - battery |
Als nächstes – damit die Pflanzen schön aussehen, habe ich eine Pflanzenkonfiguration. Wie zuvor eine einzelne Zeile in configuration.yaml zu Beginn:
1 | plant: !include plants.yaml |
Und dann habe ich in plants.yaml Folgendes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | basil: sensors: moisture: sensor.ble_moisture_basil battery: sensor.basil_battery temperature: sensor.ble_temperature_basil conductivity: sensor.ble_conductivity_basil brightness: sensor.ble_illuminance_basil min_battery: 15 min_brightness: 2500 max_brightness: 60000 min_temperature: 8 max_temperature: 32 min_moisture: 15 max_moisture: 60 min_conductivity: 350 max_conductivity: 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 ...
1 2 3 | type: custom:flower-card entity: plant.basil species: ocimum basilicum |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | esphome: name: jzk-esp-32s platform: ESP32 board: esp32doit-devkit-v1 # Enable logging logger: # Enable Home Assistant API api: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: “Esp32 Fallback Hotspot” password: “random-password-here” external_components: - source: github://myhomeiot/esphome-components esp32_ble_tracker: ble_gateway: devices: - mac_address: mac:address:of:miflora:sensor:to:monitor:goes:here on_ble_advertise: then: homeassistant.event: event: esphome.on_ble_advertise data: packet: !lambda return packet; myhomeiot_ble_host: myhomeiot_ble_client: - mac_address: mac:address:of:miflora:sensor:to:monitor:goes:here service_uuid: ‘1204’ characteristic_uuid: ‘1A02’ update_interval: 4h on_value: then: homeassistant.event: event: esphome.on_ble_advertise data: packet: !lambda |- if (x.size() < 2) { ESP_LOGE(“myhomeiot_ble_client”, “payload has wrong size (%d)”, x.size()); return “”; }; 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(buffer, sizeof(buffer), “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(buffer).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
Dies nützlich gefunden? Bitte lassen Sie uns wissen, indem Sie einen Kommentar unten fallen. Wenn Sie bitte abonnieren möchten den Link oben rechts auf dem Menü abonnieren verwenden. Sie können auch unten unter Verwendung der sozialen Bindungen diese mit Ihren Freunden teilen. Prost.
Hinterlasse eine Antwort