Je vous propose de tester le script développé en Python MiFlora-MQTT-Deamon développé par Thomas Dietrich pour récupérer les mesures du Xiaomi Mi Plant. Le Xiaomi Mi Plant (nouveau Flora) utilise le Bluetooth à la place du Zigbee pour communiquer avec un smartphone. C’est une solution beaucoup moins couteuse à produire pour Xiaomi. C’est aussi une excellente nouvelle pour les hackeurs car il est “très facile” (attention c’est un gros travail de retro-engineering) d’intercepter les trames bluetooth pour les détourner pour une autre application. On pourra ainsi se libérer de l’application Mi Home, déclencher des scénarios depuis un serveur domotique ou un script Python ou Javascript.
Le plus gros avantage, c’est qu’on pourra très simplement garder un oeil sur nos plantes même en vacances. Ce n’est pas possible avec le bluetooth car les données sont collectées lorsqu’on se trouve à proximité du Mi Plant. En plus, il n’y a rien à installer ni à modifier sur le capteur et on garde la pleine compatibilité avec l’appli Mi Home.
Avant de commencer, vous aurez besoin d’un broker MQTT. Installez et configurez Mosquitto sur Raspbian en suivant ce tutoriel.
Sommaire
Installer le projet MiFlora-MQTT-Deamon sur Raspberry Pi
J’ai testé le script développé par Thomas Dietrich disponible sur GitHub ici. C’est un script Python très simple. Connectez-vous au Terminal du Raspberry Pi en SSH ou depuis le bureau puis exécutez ces deux commandes pour installer les librairies nécessaires et cloner le projet sur le Raspberry Pi
sudo apt install git python3 python3-pip bluetooth bluez
git clone https://github.com/ThomDietrich/miflora-mqtt-daemon.git /opt/miflora-mqtt-daemon
Par défaut, Thomas installe le script dans le répertoire /opt de Raspbian mais rien ne vous oblige à garder ce dossier de destination.
Trouver l’adresse MAC du Xiaomi Mi Plant
Assurez vous que le capteur est à porté du Bluetooth, ensuite exécutez cette commande qui scanne les appareils Bluetooth à porté du Raspberry Pi.
sudo hcitool lescan
Voilà ce que vous devriez avoir après quelques secondes
pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo hcitool lescan LE Scan ... 70:56:81:CF:9B:65 (unknown) C4:7C:8D:65:XX:XX (unknown) C4:7C:8D:65:XX:XX Flower care
Le Xiaomi Mi Plant porte le nom de Flower care. L’adresse MAC est la série de chiffres et lettres avant le nom du Flora. Il est listé à deux reprise, je n’ai aucune explication.
Configurer le script Python
Maintenant que l’on connait l’adresse Mac du Xiaomi Mi Plant, on va pouvoir modifier le fichier de configuration. Il se trouve à la racine du répertoire d’installation.
cd /opt/miflora-mqtt-daemon
Faites ensuite une copie du fichier de configuration. Il faut faire précéder la commande d’un sudo car nous sommes dans un répertoire système
sudo cp config.ini.dist config.ini
Ensuite, ouvrez le fichier avec la commande sudo nano config.ini et modifiez les paramètres suivants
- hostname, adresse IP du broker MQTT. localhost s’il est sur le même poste que le script Python
- period, 300 secondes d’attente entre deux acquisition par défaut. Attention, si vous êtes trop gourmand, vous allez drainer la batterie très rapidement…
- username et password si une protection par utilisateur/mot de passe existe sur le broker Mosquitto
- base_topic, l’entête du topic MQTT. Par défaut, ce sera miflora.
- Ajoutez le capteur Mi Plant dans la section [sensors] à la fin du fichier. Il est possible de récupérer les mesures de plusieurs capteurs. Indiquez l’adresse MAC précédemment trouvée. On peut spécifier une localisation en utilisant @ comme séparateur. Par exemple
- miplant2018@salon = C4:7C:8D:65:XX:XX
Enregistrez avec la combinaison CTRL + X puis O.
Lancez le script python avec la commande suivante
sudo python3 miflora-mqtt-daemon.py
Le script affiche l’état de la connexion au broker ainsi que les données récupérées. Attention, ce script est expérimental, il s’arrête dès que le Mi Plant n’est plus joignable.
pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo python3 miflora-mqtt-daemon.py Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon Source: https://github.com/ThomDietrich/miflora-mqtt-daemon [2018-05-21 15:57:43] Connecting to MQTT broker ... [2018-05-21 15:57:43] MQTT connection established Adding sensor to device list and testing connection ... Name: "miplant2018" Internal name: "miplant2018" Device name: "Flower care" MAC address: C4:7C:8D:65:XX:XX Firmware: 3.1.8 [2018-05-21 15:57:49] Initial connection to Mi Flora sensor "miplant2018" (C4:7C:8D:65:XX:XX) successful [2018-05-21 15:57:49] Announcing Mi Flora devices to MQTT broker for auto-discovery ... [2018-05-21 15:57:49] Retrieving data from sensor "miplant2018" ... [2018-05-21 15:57:49] Result: {"conductivity": 1074, "temperature": 20.7, "light": 321, "moisture": 51, "battery": 99} [2018-05-21 15:57:49] Publishing to MQTT topic "miflora/miplant2018" [2018-05-21 15:57:50] Sleeping (50 seconds) ...
Vérification sur Mosquitto
On va vérifier que l’on reçoit bien les mesures du capteur. Exécutez cette commande
mosquitto_sub -h localhost -t miflora/miflora
ou celle-ci si vous utilisez une authentification (conseillé). Modifié les paramètres avant d’exécuter
mosquitto_sub -h localhost -t miflora/miflora -u utilisateur -P motdepasse
pi@raspberrypi:~ $ mosquitto_sub -h localhost -t miflora/miplant2018 {"moisture": 51, "battery": 99, "temperature": 20.7, "light": 297, "conductivity": 1078} {"moisture": 51, "battery": 99, "temperature": 20.7, "light": 331, "conductivity": 1078}
Voilà, vous pouvez maintenant créer une passerelle vers votre logiciel domotique préféré pour récupérer les mesures et déclencher des scénarios ou des alertes. Pour Jeedom, il existe un plugin gratuit équivalent.
Dans le prochain article, nous verrons comment envoyer les données du Mi Plant sur un appareil iOS sans avoir à installer Homebridge…
- ESP32, broches GPIO et fonctions associées. I/O, PWM, RTC, I2C, SPI, ADC, DAC
- ESP32-CAM. Broches et équipements ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- ESP32-CAM. Quel modèle choisir ? ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- M5Stack Atomic GPS. Tracker ESP32 TinyGPS++, export GPX sur carte SD, visualisation sur Google Maps ou VSCode
- Home Assistant. Installer le snap sur NAS Synology sur une machine virtuelle Ubuntu
Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]