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 —
capteur: !inclure capteurs.yaml
Ensuite, dans Sensors.yaml, chaque plante est répertoriée comme suit
- Plate-forme: fleuri
Mac: 'Mac:adresse:of:fleuri:capteur:ici'
Nom: basilic
Forcer la mise à jour: vrai
scan_interval: 08:00
médian: 3
go_unavailable_timeout: 43200
conditions_surveillées:
- batterie
Ensuite - pour que les plantes apparaissent bien, j'ai une configuration de plantes. Comme avant une seule ligne dans configuration.yaml pour commencer:
plante: !inclure plantes.yaml
Et puis dans plants.yaml j'ai comme suit
basilic: capteurs: humidité: sensor.ble_moisture_basil batterie: sensor.basil_battery Température: sensor.ble_temperature_basil conductivité: sensor.ble_conductivity_basil luminosité: sensor.ble_illuminance_basil min_batterie: 15 min_luminosité: 2500 max_luminosité: 60000 température_min: 8 température_max: 32 min_humidité: 15 max_humidité: 60 min_conductivité: 350 conductivité_max: 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…
type: Douane:carte-fleur entité: plante.basilic espèces: basilique basilique
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
esphome: nom: jzk-esp-32s Plate-forme: ESP32 planche: esp32doit-devkit-v1 # Activer la journalisation enregistreur: # Activer l'assistant domestique API API: Wifi: ssid: !wifi_ssid secret le mot de passe: !mot de passe_wifi secret # Activer le point d'accès de secours (portail captif) en cas d'échec de la connexion wifi ap: ssid: "Point d'accès de secours Esp32" mot de passe: "mot de passe aléatoire ici" composants_externes: - la source: github://myhomeiot/esphome-composants esp32_ble_tracker: ble_gateway: dispositifs: - Adresse Mac: Mac:adresse:of:fleuri:capteur:à:moniteur:se rend:ici on_ble_advertise: puis: homeassistant.event: un événement: esphome.on_ble_advertise Les données: paquet: !paquet de retour lambda; monhomeiot_ble_host: monhomeiot_ble_client: - Adresse Mac: Mac:adresse:of:fleuri:capteur:à:moniteur:se rend:ici service_uuid: '1204' caractéristique_uuid: '1A02' intervalle de mise à jour: 4h on_value: puis: homeassistant.event: un événement: esphome.on_ble_advertise Les données: paquet: !lambda |- si (taille x() 2) { ESP_LOGE("monhomeiot_ble_client", "payload has wrong size (%ré)", taille x()); retour ""; }; ESP_LOGI("monhomeiot_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(tampon, sizeof(tampon), "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(tampon).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
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