4Capteurs de plantes MiFlora dans Home Assistant

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

Laisser un commentaire

4 commentaires

JSJon Scaife

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.

Répondre
TTony

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?

Répondre
JSJon Scaife

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

Répondre