J'ai poursuivi l'intégration de MiFlora Home Assistant pour obtenir des données sur diverses plantes d'intérieur pendant un certain temps. Cependant, en cours de route, j'ai dû surmonter divers obstacles, notamment une gamme limitée de Bluetooth, problèmes de durée de vie de la batterie, et obtenir les valeurs de la batterie à signaler. Il semble que j'ai enfin réussi à résoudre tous ces problèmes et que j'ai maintenant un système qui fonctionne de manière fiable avec de nombreuses plantes dans la maison.. J'ai résumé ci-dessous ce que j'ai utilisé.
Matériel
La première chose à dire est que j'ai un bluetooth USB dongle connecté à mon système d'assistant domestique. Cela surveille directement les plantes à portée (i.e. ceux dans la même pièce que la boîte HA). Pour surveiller plus d'appareils à distance, j'ai utilisé une carte ESP32 avec module Bluetooth intégré que j'ai dans un petit boîtier bon marché et que j'ai alimenté avec un vieux micro-USB Chargeur de téléphone
- USB Dongle: celui que j'ai obtenu n'est plus disponible - en raison de son âge - mais il y a beaucoup d'amazon et d'ailleurs - assurez-vous simplement qu'il est pris en charge sous linux
- Carte ESP32: j'ai un JZK ESP32-S qui est actuellement de 6,49 £ sur amazon
- Cas pour ESP32: J'ai trouvé le boîtier pour un NodeMCU Wroom-32D (antenne courte) adapté ma planche - c'était 4,20 £ à partir de ebay
Intégrations pour Home Assistant
Alors que l'intégration de base de MiFlora est intégrée à l'assistant domestique, j'ai trouvé qu'elle utilise beaucoup de batterie lorsqu'elle est utilisée de manière native. A la place j'utilise le Moniteur Bluetooth basse consommation 3rd intégration de partie que vous pouvez installer facilement en utilisant DÉCALAGE
J'ai ensuite également installé le Intégration ESPHome pour home assistant pour gérer mon répéteur ESP32 BLE
Enfin, pour afficher les plantes d'une manière agréable, j'ai ajouté une fourchette particulière du carte de plante lovelace module complémentaire via LAG
Configuration
Une fois que BLE Monitor a été installé et configuré avec mon dongle Bluetooth, il a récupéré les capteurs MiFlora à portée et les a répertoriés dans sa liste déroulante "appareils" ainsi que la liste des appareils et entités sur sa carte dans la configuration HA
La grande chose à propos du moniteur BLE est qu'il écoute les capteurs à transmettre, plutôt que de les interroger activement, qui épuiserait leurs batteries. Cependant, les capteurs ne transmettent pas d'informations sur la batterie, donc pour l'obtenir, nous devons activement l'interroger. Sondage juste pour ça, et écouter passivement les autres données semble être le meilleur compromis si vous voulez avoir toutes les données disponibles mais aussi maximiser la durée de vie de la batterie du capteur. J'ai séparé mon fichier configuration.yaml en plusieurs fichiers distincts pour simplifier un peu la gestion. J'ai donc simplement la ligne suivante dans mon fichier configuration.yaml —
1 | sensor: !include sensors.yaml |
Ensuite, dans Sensors.yaml, chaque plante est répertoriée comme suit
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 |
Ensuite - pour que les plantes apparaissent bien, j'ai une configuration de plantes. Comme avant une seule ligne dans configuration.yaml pour commencer:
1 | plant: !include plants.yaml |
Et puis dans plants.yaml j'ai comme suit
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 |
Notez la différence subtile entre le nom d'entité de la batterie par rapport aux autres capteurs. L'entité de la batterie provient de la plate-forme miflora dans Sensors.yaml tandis que l'autre 4 les capteurs proviennent de l'intégration BLE. Il y a une entité de batterie répertoriée par l'intégration BLE, mais cela s'affiche simplement comme "inconnu" pour cette usine. Cette configuration est nécessaire pour que la carte de la plante montre la plante d'une manière bien présentée
Ensuite, allez simplement à l'endroit où vous souhaitez ajouter votre plante et ajoutez la carte de plante lovelace. Vous devrez « configurer » la carte manuellement, mais cela ne prend que 3 lignes…
1 2 3 | type: custom:flower-card entity: plant.basil species: ocimum basilicum |
A noter que l'espèce est répertoriée pour 2 raisons. Tout d'abord, il affichera le nom sur la carte, mais plus import-antly, il affichera également une image de la plante si vous avez téléchargé les images de la plante et les avez ajoutées dans configwwwimagesplants en utilisant les noms latins — les informations sur la base de données sont disponibles sur la documentation de la carte de la plante lovelace
Portée étendue
Enfin, nous devons étendre la portée que nous pouvons atteindre. Pour cela, nous avons besoin de l'appareil ESP32. La première chose à faire est de le connecter à votre ordinateur via USB et flashez-le avec une image ESPHome de base
J'ai utilisé le Clignotant ESPHome et l' pilote Windows universel cp210x de SiLabs et suivi le guide fourni par l'intégration ESPHome HomeAssistant
La configuration que j'ai utilisée pour mon appareil ESP32 est ci-dessous
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(); |
Ensuite, enregistrez et mettez à jour votre appareil esp32 via wifi. L'appareil ESP32 récupérera les données du capteur miflora et les "poussera" via wifi vers l'intégration BLE qui créera automatiquement un appareil et des entités. Les appareils poussés de cette manière semblent afficher leur niveau de batterie (grâce au code en bas de la section myhomeiot_ble_client je crois). Il vous suffit ensuite de donner un joli nom à l'appareil (et laissez les entités être renommées aussi) puis créez une entrée dans plants.yaml avec les bonnes entités
S'il vous plaît envoyez-nous vos pensées en commentant ci-dessous! Si vous souhaitez vous abonner s'il vous plaît utiliser le lien d'abonnement dans le menu en haut à droite. Vous pouvez également partager avec vos amis en utilisant les liens sociaux ci-dessous. À votre santé.
salut,
il y a aussi la version pour lire les capteurs de flore via le script ESP et les envoyer au courtier MQTT. Malheureusement, je ne trouve pas la bonne description de la façon dont je peux ensuite publier les données contenues dans MQTT en tant que capteur dans HomeAssistant.
Voici le lien vers celui-ci: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/
salut
Oui, En fait, j'utilise moi-même les répéteurs ESP32 maintenant car ils sont capables d'utiliser le mode "passif" ET de collecter les données de la batterie.
Si tu as un USB appareil Bluetooth, vous pouvez d'abord coupler les appareils MiFlora directement à celui-ci, puis lorsque vous configurez l'ESP32, il enverra les informations dans HA et il s'affichera automatiquement pour les entités correctes
Vous devez utiliser le code tel que je le décris dans la section "Étendre la plage".
Vous devez également avoir installé l'intégration "Bluetooth Low Energy Monitor" (via HACS)
Si vous n'avez pas de USB Bluetooth, il existe un moyen d'afficher les appareils dans Bluetooth Low Energy Monitor. Je ne me souviens plus du lien où je l'ai lu, mais je pense qu'il fait partie du wiki Bluetooth Low Energy Monitor ou de la FAQ.
Si vous le faites de cette façon, vous n'avez pas besoin d'utiliser le manuel YAML que Barry utilise. Son poste est de 2020 - Je pense qu'avant que Bluetooth Low Energy Monitor ne puisse le faire ou peut-être même avant qu'il n'existe.
Bonjour, merci d'avoir posté cette super solution.
La passerelle Bluetooth esp32 peut-elle transmettre des données à plusieurs appareils Bluetooth ou devez-vous fournir un ESP 32 pour chaque appareil Bluetooth, nous voulons étendre la portée pour?
Salut Tony
L'ESP transmettra des données pour tous les appareils BT à portée, je crois, bien que le mien ne soit actuellement utilisé que pour 1 Appareil BT, je ne peux pas confirmer 100% - mais c'est certainement ma compréhension