Bonjour à toutes et à tous.
Vos plantes se meurent, vous n’avez pas la main verte ?
Vous souhaitez prendre soin de vos plantes et installer ce qu’il faut pour faire fonctionner les capteurs Xiaomi Mi Flower Care, ce tutoriel est fait pour vous !
EDIT : Il manque certainement une étape, celle qui consiste à installer l’intégration ESPHome. Ceux qui commenceraient ce tuto from scratch, ça serait sympa de confirmer et de compléter ce tuto. Merci.
1) Matériel nécessaire
- Les capteurs :
Tout d’abords, il vous faut des capteurs pour suivre l’humidité, la lumière, l’engrais nécessaire à vos plantes.
Je suis donc parti sur les capteurs Xiaomi Mi Flower Care, le grand est sur batterie, le petit sur pile.
Voici les liens où on peut en trouver chez TechPunt :
Xiaomi Mi Flower Care Plant Sensor - TechPunt
Xiaomi HHCC Mi Flower Care Plant Sensor Max - TechPunt
Voilà le matériel :
- Le proxy Bluetooth :
Le proxy Bluetooth permet de dialoguer avec les capteurs Xiomi Mi Flower Care.
En effet, si vous n’êtes pas sur un NUC ou un PC qui a le Bluetooth, une passerelle Bluetooth est nécessaire.
Il est conseillé d’utiliser un ESP32 comme proxy Bluetooth. Pour cela, j’ai utilisé le capteur ESP32 suivant :
Carte ESP32 sur AliExpress :
Carte de Développement ESP WROOM-32 AliExpress
Pour ce capteur, il n’y a pas de boitier, personnellement j’ai une imprimante 3D et ce modèle à imprimer fait tout à fait l’affaire :
Boitier ESP32 à imprimer sur Thingiverse :
Esp32 wroom case by guillermohor - Thingiverse
Voilà ce que ça donne :
Pour ceux qui ne disposent pas d’une imprimante 3D, la Carte ATOM Lite ESP32 peut tout aussi bien faire l’affaire.
Carte ATOM Lite ESP32 sur M5STACK :
ATOM Lite ESP32 IoT Development Kit | m5stack-store - Une plante :
Personnellement, j’ai un citronnier et quelques autres plantes.
Mon citronnier avec son capteur :
2) Installer ESP Home / Bluetooth Proxy sur un ESP32
-
Installation : ESP Home Builder :
Pour ceux qui sont sous HA OS (VM ou NUC), sous Home Assistant, allez dans Paramètres / Modules complémentaires et installer ESPHome Device Builder.
Pour ceux qui sont sous HA container (docker), vous devrez installer ESPHome dans un nouveau conteneur.
Pour cette étape, vous pouvez aller voir ce tutoriel qui est très bien réalisé :
Vos premiers pas avec ESPHome -
Installer son premier device ESP Home :
2.1. Création du device :
Cliquez sur + NEW DEVICE
Une fenêtre s’affiche : appuyez sur CONTINUE.
Puis vous êtes invité à entrer le nom du device.
Je mets Mi Flower 1 au cas où j’en ai besoin d’un autre, vous mettez ce que vous voulez.
Puis cliquez sur Next.
Vous êtes invité à sélectionner votre ESP, moi je choisi ESP32 cela dépend de votre ESP32.
Une fois l’ESP choisi, vous avez ce message :
Choisissez SKIP, on va le configurer ; en effet, si vous cliquez sur INSTALL maintenant l’ESP32 ne sera pas correctement configuré, vous verrez un ESPHome qui n’aura pas le bon nom et certainement pas en proxy Bluetooth. C’est l’erreur que j’avais fait la première fois.
Une fois le bouton SKIP appuyé, on a désormais un nouveau device Mi Flower 1.
2.2. Configuration du device :
Il faut maintenant éditer ce device en cliquant sur EDIT.
On peut éditer le fichier yaml, c’est le contenu de ce fichier qui va déterminer les comportement et la configuration (Wifi notamment mais cela a déjà été réalisé dans une étape précédente) de l’ESP32.
Edition du fichier yaml mi-flower-1.yaml :
esphome:
name: mi-flower-1
friendly_name: Mi Flower 1
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "iP2S48aci2xFggyC6JaOzCvX0n2FuuHyQKhr64Cp3jY="
ota:
- platform: esphome
password: "74721810d8d8618c7247cb694cf61641"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Mi-Flower-1 Fallback Hotspot"
password: "UoJPZ6VIExvW"
captive_portal:
Pour activer le bBluetooth proxy, il faut ajouter les lignes suvantes :
# Activate Bluetooth proxy
esp32_ble_tracker:
scan_parameters:
interval: 1100ms
window: 1100ms
active: true
bluetooth_proxy:
active: true
Il est possible d’ajouter ces lignes pour ajouter des sensors comme la qualité du signal, la température du device, etc.
Pour l’aide sur le contenu de ce fichier :
ESPHome - Bluetooth Proxy
Configuration : ajouter d’autres éléments à remonter via ce capteur :
#
# Manually configuration
#
sensor:
# Qualité du signal
- platform: wifi_signal
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
internal: true
- platform: copy
source_id: wifi_signal_db
name: WiFi Signal
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "%"
entity_category: "diagnostic"
device_class: ""
# Temps de fonctionnement
- platform: uptime
id: uptime_sec
update_interval: 60s
internal: true
# Température interne de fonctionnement
- platform: internal_temperature
name: "Internal Temperature"
entity_category: "diagnostic"
# Bouton de redémarrage
switch:
- platform: restart
name: Redémarrage
entity_category: "diagnostic"
binary_sensor:
- platform: status
name: Statut
entity_category: "diagnostic"
- platform: gpio
pin:
number: 39
inverted: true
name: Button
# Transformation de la durée d'utilisation en texte
text_sensor:
- platform: template
id: lite_uptime
name: "Allumé depuis"
lambda: |-
int seconds = (id(uptime_sec).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
if ( days ) {
return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
} else if ( hours ) {
return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
} else if ( minutes ) {
return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
} else {
return { (to_string(seconds) +"s ").c_str() };
}
icon: mdi:clock-start
update_interval: 60s
entity_category: "diagnostic"
Appuyez sur SAVE :
2.3. Compilation du device :
Il est temps de branchez votre ESP32 sur le port USB de votre ordinateur.
- Cliquez sur INSTALL.
- Choisissez Manual Download.
- La compilation commence :
- Une fois la compilation terminée, on obtient :
- Choisissez Factory format (Previously Modern) et sauvegardez le fichier bin. ATTENTION : Google Chrome peut parfois bloquer le téléchargement de ce fichier, vérifier qu’il n’est pas bloqué par la sécurité du navigateur.
- Cliquez sur CLOSE.
2.4. Flash du device :
Fermer toutes les fenêtres et revenir à l’écran d’accueil ESPHome.
Cliquez sur les trois petits points et choisir Install (vous pouvez aussi utiliser Validate précédemment pour valider le fichier yaml que vous avez modifié).
- Ceci ouvre la fenêtre suivante, choisir Plug into this computer :
- Ça prend un peu de temps.
- Cliquez sur Open ESPHome Web, celai ouvre un nouvel onglet :
- Cliquez sur CONNECT.
- Choisir le port et cliquez sur Connexion.
- On se retrouve sur cette page :
- Cliquez sur INSTALL.
- Cliquez sur le bouton Choisir un fichier et télécharger le fichier bin sauvegardé précédemment.
- Appuyez sur INSTALL, vous allez voir les messages suvants : Connecting / Erasing / Installing / Configuration installed!
- Appuyez sur CLOSE.
- Retour sur la page précédente :
PREPARE FOR FIRST USE n’est pas utile, il va vous flasher un firmware de base qui ne correspond pas au votre et vous allez vous retrouver avec deux devices :
Vous ne devez pas avoir ça :
Test : appuyez sur … pour configurer le Wifi.
Appuyez sur Configure Wi-Fi : en fait vous devriez avoir ce message d’erreur :
D’après ce que je comprend, la configuration du Wifi n’est possible QUE si l’ESP n’est pas connecté au Wifi car dans ce cas il est en AP (access point) et attend qu’on lui configure son Wifi. Or là, nous l’avons flashé avec le bon SSID / mot de passe du wifi et s’il est correctement connecté, alors il n’est pas en AP et donc son Wifi n’est pas configurable puisqu’il est correctement configuré.
Toutefois, si vous avez flashé l’ESP32 avec PREPARE FOR FIRST USE, si une erreur survient, il est certainement nécessaire de débrancher / rebrancher l’ESP32 et de s’y reconnecter. Vous devrez ensuite re-flasher votre ESP32 OTA avec le bon firmware.
Pour vérifier que tout se passe bien, connectez-vous au port série et appuyez sur LOGS, vous verrez si votre ESP démarre correctement ou pas.
On peut remarquer que mon ESP mets du temps à se connecter au wifi de la maison.
Ouvrez une console DOS (ou autre sur d’autres systèmes) et tentez de faire un ping, normalement il doit répondre. Personnellement j’ai des pertes de trames.
Je pense que c’est normal, l’ESP passe son temps à interroger les capteurs et c’est lui qui va dialoguer quand il a le temps avec HA, donc si parfois il ne répond pas au ping c’est juste qu’il est occupé.
Envoi d’une requête 'Ping' 192.168.0.71 avec 32 octets de données :
Délai d’attente de la demande dépassé.
Réponse de 192.168.0.71 : octets=32 temps=2321 ms TTL=255
Réponse de 192.168.0.71 : octets=32 temps=63 ms TTL=255
Réponse de 192.168.0.71 : octets=32 temps=1144 ms TTL=255
Statistiques Ping pour 192.168.0.71:
Paquets : envoyés = 4, reçus = 3, perdus = 1 (perte 25%),
Durée approximative des boucles en millisecondes :
Minimum = 63ms, Maximum = 2321ms, Moyenne = 1176ms
Personnellement tous mes devices sont mis en dehors de la plage DHCP en utilisant l’adresse MAC du device. Mais chacun fait comme il veut.
ATTENTION, l’adresse IP ne devra plus changer au risque de voir le device inaccessible.
Voilà, le device est flashé, vous devriez pouvoir le mettre à jour en OTA (Over The Air) sans plus avoir besoin de le laisser brancher sur l’ordinateur.
3) Ajouter l'intégration ESP Home / Bluetooth Proxy
-
Ajouter ESPHome
A FAIRE -
Ajouter le noeud ESP Home
2.1. Allez dans Paramètres / Appareils et services :
2.2. Dans intégrations, vous devriez voir votre device :
2.3. Cliquez sur AJOUTER :
Home Assistant va vous demander de l’ajouter, validez.
2.4. Si c’est un échec :
Si vous avez cette fenêtre, redémarrez votre ESP (ou le bouton de gauche (RESET)) et examinez les logs.
Personnellement, le wifi est un poil loin du PC, la connexion n’est pas top.
Après avoir déplacé l’ESP32, un nouvel essai est effectué.
2.5. Si c’est un succès :
Et voici l’appareil :
2.6. Entités :
On peut désormais voir les entités que l’on avait configuré dans le yaml :
-
Installer Xiaomi BLE :
3.1 Ajouter dans Home Assistant le Xiaomi BLE :
Il faut désormais installer le Bluetooth Xiami, il faut aller sur la page : Xiaomi BLE
Cliquez sur :
Une petite question :
Et là, il m’ouvre Home Assistant, le demande de valider.
3.2 Découverte des capteurs dans Home Assistant :
Grand moment, il me trouve mes capteurs Xaomi Flower Care (un grand et un petit pour le moment).
Je choisi le premier, il va m’ajouter celui-ci et détecter l’autre.
Et je valide, succès !
Il me trouve les deux !
3.3 Identifier les capteurs dans Home Assistant :
Mais qui est qui ? Je retire la pile du plus petit et je rafraîchie la page, je peux ainsi détecter lequel a que code série.
Pour moi, le petit c’est donc le 7D31 et le grand 59E6.
Je remets la pile et j’attends.
Puis j’ajoute le suivant le 59E6. J’ai désormais mes deux capteurs ajoutés.
Finalement j’ai deux intégrations :
La première c’est ESPHome avec la configuration qui a été ajoutée dans le yaml.
La deuxième c’est le Xaomi BLE avec les deux entités
Et les capteurs remonté par le BLE : les informations Mi Flower Care
Il s’est avéré que le grand à batterie a mis plus de temps à remonter l’indication de niveau de batterie, j’ai cru un moment qu’il ne remontait pas le niveau de batterie. Mais si, les deux capteurs (petits et grands) remontent le niveau de leur batterie.
4) Renommer vos Intégrations et vos capteurs
NB : Cette section permet d’expliquer comment renommer les éléments d’intégrations ainsi que les capteurs. Si vous comptez changer les capteurs de plantes régulièrement ce n’est peut-être pas la meilleur solution, chacun fait comme il le souhaite.
Donc, vous pouvez désormais renommer vos capteur pour que ça soit plus simple pour les identifier.
- Renommer les appareils et les éléments de l’intégration Xiaomi.
1.1. Renommer les éléments d’intégration :
Dans l’intégration Xiaomi, cliquer sur les trois petits points des éléments de l’intégration.
Puis choisir le nom, personnellement je choisi Plant Sensor Citronnier.
Et voilà le résultat :
1.2. Renommer les appareils :
Le 1.1 a renommé les éléments de l’intégration Xiaomi mais les appareils ne sont pas renommées pour autant.
Cliquez sur l’appareil :
Cliquez sur le stylo pour éditer cet appareil. On voit en haut à gauche que le nom est différent du nom que l’on a tapé précédemment (Plant Sensor Citronnier) :
On peut éditer le nom :
Je change le nom en Citronnier Sensor 7D31, j’ai fais le choix de conserver 7D31 afin de garder cet identifiant matériel qui pourrait me servir plus tard (ou pas).
Cliquez sur METTRE À JOUR :
Attention : Un message d’avertissement vous averti que cela va impacter les automatisations / scripts / scènes / tableaux de bord.
Cela pose aussi problème lorsque l’intégration plante a déjà été créé et les senseurs déjà affectée à une plante. Voir les explications suivantes.
Avec les détails :
Cliquez sur RENOMMER.
Et voilà le résultat une fois renommé :
Et dans les entités, on peut voir le résultat ;
On peut voir que les nouvelles entités ont un point rouge. Après redémarrage de Homme Assistant + redémarrage de l’ESP32, les points rouges ont disparu.
Je change l’entité Citronnier conductivity en replaçant par le senseur Plant Sensor 7D31 Conductivity par Citronnier Sensor 7D31 Conductivity. Dans 9) Les trucs en plus, ceci est expliqué.
Une fois le senseur changé pour la plante, on a :
Puis, une fois que tous les senseurs ont été remplacés, on a :
Et la carte reprend vie.
Mais la batterie n’est plus présente. Il faut aussi editer la carte :
Après correction :
Bon, il est clair qu’il vaut mieux le faire avant de créer la plante sinon ça demande quand même plus de travail.
5) Installer les intégrations plantes
Aller, voici un de mes plantes, un petit citronnier qui ne demande qu’à grandir sans mourir !
Je lui plante son capteur (pas certain qu’il soit suffisamment grand).
Et on va aller chercher dans HACS.
Tout est expliqué ici :
GitHub - Olen/homeassistant-plant: Alternative Plant component of home assistant
- Installer OpenPlantbook.
1.1 : aller sur la page Open Plantbook | Login et créer un compte (gratuit).
1.2 Naviguer vers Open Plantbook | Login et générer une clef API (bouton Generate).
1.3 Copier les clefs Client ID et Client Secret.
1.4 Installer OpenPlantbook intégration :
Voir :
1.4.1
GitHub - Olen/home-assistant-openplantbook: Integration to search and fetch data from Openplantbook.io
Cliquez sur les trois petits points en haut à droite de HACS et ajouter un dépôt personnalisé.
1.4.2 Ajouter GitHub - Olen/home-assistant-openplantbook: Integration to search and fetch data from Openplantbook.io dans un nouveau repository de type Intégration :
1.4.3 Validez. Puis télécharger OpenPlantBook :
Puis redémarrer Home Assistant.
1.4.4 Aller dans Paramètres / Appareils et services et cliquez sur AJOUTER UNE INTÉGRATION
Cherchez OpenPlantbook et installez là !
Il vous demande Client ID et Secret que vous avez copier précédemment :
Une nouvelle fenêtre s’affiche, personnellement j’ai tout coché. Puis valider.
1.4.5 En re-faisant configurer sur cette intégration, une nouvelle option apparaît, il propose de télécharger les images des plantes, je coche et je valide (attention, il faut créer le répertoire indiqué s’il n’existe pas, je l’ai fait avec Studio Code Server).
3.Installer homeassistant-plant : comme pour le 1.4 avec le repo : GitHub - Olen/homeassistant-plant: Alternative Plant component of home assistant
Voir :
GitHub - Olen/homeassistant-plant: Alternative Plant component of home assistant
Télécharger, puis redémarrer Home Assistant.
- Installer la carte lovelace-flower-card : comme pour le 1.4 avec le repo mais avec le type Dashboard : GitHub - Olen/lovelace-flower-card: Lovelace Flower Card to match the custom plant integration
Voir
GitHub - Olen/lovelace-flower-card: Lovelace Flower Card to match the custom plant integration
Cliquer sur AJOUTER :
Puis téléchargez en cliquant sur Télécharger :
Et voilà, vous êtes prêts à faire de belles cartes.
6) Créer les plantes
Il faut désormais créer les plantes, pour cela, il faut créer une entité plante :
Et remplir les informations :
Je valide, il recherche et me propose et je choisi Citrus limon:
Puis il affiche tous les paramètres :
Je coche : c’est la plante que je cherchais.
Je valide et je met la pièce « jardin ».
On peut ajouter toutes les plantes que l’on souhaite. C’est un peu chiant, il faut avoir les noms scientifiques en anglais de nos plantes. Mais Google est ton ami.
7) Réaliser de belles cartes plantes
Il ne reste plus qu’à créer nos cartes : dans nos panneaux, click sur Add Card et sélectionner la carte Flower Card :
Remplir le champ batterie (pour les petits Mi Flower) et le Display Type :
Et voilà le résultat :
Et ben, elle ne va pas très bien ma plante !!
J’ai sans doute trop tardé à faire tout ça, il faut l’arroser !
8) Les notifications
Pour être notifié en cas de problèmes sur la plante, il est possible d’être notifié sur chaque senseur incorrect, je n’ai pas fait ce choix. J’ai plutôt utilisé l’état de santé de la plante qui prend en compte l’ensemble des senseurs qui composent la surveillance de la plante.
J’ai choisi de créer une notification persistante + une notification envoyée sur tous les HA connectés (les portables de la famille en gros). A vous de voir ce qui vous semble judicieux et de modifier ce code.
Ça donne ça :
Et le code est le suivant :
alias: Notification état de santé du Citronnier
description: ""
triggers:
- trigger: state
entity_id:
- plant.citronnier
from: ok
to: problem
for:
hours: 0
minutes: 10
seconds: 0
conditions: []
actions:
- action: notify.persistent_notification
metadata: {}
data:
message: Le citronnier a besoin de soin.
title: Plante
- action: notify.notify
metadata: {}
data:
message: |
Le citronnier a besoin de soin.
Veuillez vérifier l'état de santé du Citronnier !
title: Plante
mode: single
9) Les trucs en plus
- Surveiller le proxy :
Il est aussi possible d’ajouter le proxy pour pouvoir le surveiller, le redémarrer, etc.
Voici ce que ça donne :
Le code est le suivant :
type: entities
entities:
- entity: switch.mi_flower_1_red_marrage
name: Redémarrage
- entity: sensor.mi_flower_1_allum_depuis
name: Allumé depuis
- entity: sensor.mi_flower_1_internal_temperature
name: Internal Temperature
- entity: binary_sensor.mi_flower_1_statut
name: Statut
- entity: sensor.mi_flower_1_wifi_signal
name: WiFi Signal
title: Proxy Bluetooth
state_color: true
- Changer le capteur d’une plante
Lorsque j’ai ajouté la plante, je me suis rendu compte que l’humidité n’était pas donné par le capteur.
J’ai donc utilisé le capteur ambiant de ma maison.
Mais, que faire si je sors la plante à l’extérieur de la maison ? J’ai cherché, impossible de changer le capteur d’humidité de la plante (ni aucun autre capteur d’ailleurs).
Le problème peut se poser aussi si on change le Xiaomi Mi Flower par un autre (par exemple un petit par un grand lorsque la plante pousse ou si le capteur devient HS).
En fait, dans Outils de développement / ACTIONS il y a une action qui permet de changer un capteur par un autre : l’action Surveillance de plantes : Replace sensor :
Et voilà le résultat final (avec surveillance du Proxy Bluetooth) :
J’espère que ce tuto vous plaira.
Merci à @WarC0zes , @BBE, @freetronic pour leur aide.