Je croise beaucoup d’entre vous sur le net qui rencontre un problème avec le plugin Xiaomi Home et le purificateur d’air Xiaomi Air Purifier 3H.
J’ai reçu le mien hier, et effectivement, le Purifier 3H n’est pas compatible avec l’extension Xiaomi Home.
J’y ai passé l’après-midi, mais je suis arrivé à mes fins, et il me semble important de partager cela avec vous.
Model de mon Purificateur d’Air : zhimi.airpurifier.mb3
Prérequis
Pour commencer vous devez :
- Installer et activer le plugin Script sur votre Jeedom.
- Installer l’outil Putty. (Pour se connecter en SSH à Jeedom).
- Avoir en votre possession l’adresse IP et le Token de votre Purifier 3H.
Installation de la commande JQ
Nous allons installer la commande JQ sur votre Jeedom afin de pouvoir traiter les données JSON renvoyées par votre purificateur d’air Xiaomi Air Purifier 3H.
- Connectez vous en SSH à l’aide de PuTTy à votre Jeedom.
- Entrez la commande suivante :
sudo apt-get install jq -y
Installation de la commande miiocli
Pour que Jeedom puisse communiquer avec le purificateur d’air (Purifier 3H), vous devez installer miiocli.
- Connectez vous en SSH à l’aide de PuTTy à votre Jeedom.
- Entrez les commandes suivantes :
sudo apt-get install libffi-dev libssl-dev -y
sudo pip3 install python-miio
La commande miiocli (Xiaomi)
Cette commande permet de communiquer avec de nombreux appareils Xiaomi, tels que notre purificateur d’air.
Voici la liste des appareils pris en charge par la commande miiocli :
- Xiaomi Mi Robot Vacuum V1, S5, M1S
- Xiaomi Mi Home Air Conditioner Companion
- Xiaomi Mi Smart Air Conditioner A (xiaomi.aircondition.mc1, mc2, mc4, mc5)
- Xiaomi Mi Air Purifier
- Xiaomi Mi Air Humidifier
- Xiaomi Aqara Camera
- Xiaomi Aqara Gateway (basic implementation, alarm, lights)
- Xiaomi Mijia 360 1080p
- Xiaomi Mijia STYJ02YM (Viomi)
- Xiaomi Mi Smart WiFi Socket
- Xiaomi Chuangmi Plug V1 (1 Socket, 1 USB Port)
- Xiaomi Chuangmi Plug V3 (1 Socket, 2 USB Ports)
- Xiaomi Smart Power Strip V1 and V2 (WiFi, 6 Ports)
- Xiaomi Philips Eyecare Smart Lamp 2
- Xiaomi Philips RW Read (philips.light.rwread)
- Xiaomi Philips LED Ceiling Lamp
- Xiaomi Philips LED Ball Lamp (philips.light.bulb)
- Xiaomi Philips LED Ball Lamp White (philips.light.hbulb)
- Xiaomi Philips Zhirui Smart LED Bulb E14 Candle Lamp
- Xiaomi Philips Zhirui Bedroom Smart Lamp
- Xiaomi Universal IR Remote Controller (Chuangmi IR)
- Xiaomi Mi Smart Pedestal Fan V2, V3, SA1, ZA1, ZA3, ZA4, P5, P9, P10, P11
- Xiaomi Mi Air Humidifier V1, CA1, CA4, CB1, MJJSQ, JSQ001
- Xiaomi Mi Water Purifier (Basic support: Turn on & off)
- Xiaomi Mi Water Purifier D1, C1 (Triple Setting)
- Xiaomi PM2.5 Air Quality Monitor V1, B1, S1
- Xiaomi Smart WiFi Speaker
- Xiaomi Mi WiFi Repeater 2
- Xiaomi Mi Smart Rice Cooker
- Xiaomi Smartmi Fresh Air System VA2 (zhimi.airfresh.va2), VA4 (zhimi.airfresh.va4), T2017 (dmaker.airfresh.t2017)
- Yeelight lights (basic support, we recommend using python-yeelight)
- Xiaomi Mi Air Dehumidifier
- Xiaomi Tinymu Smart Toilet Cover
- Xiaomi 16 Relays Module
- Xiaomi Xiao AI Smart Alarm Clock
- Smartmi Radiant Heater Smart Version (ZA1 version)
- Xiaomi Mi Smart Space Heater
- Xiaomiyoupin Curtain Controller (Wi-Fi) (lumi.curtain.hagl05)
En SSH toujours, lancez la commande suivante afin de connaitre ce qu’il est possible de faire avec notre purificateur d’air :
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] --help
Vous devriez normalement obtenir ceci :
Eteindre / Allumer
Voici les commandes pour éteindre et allumer votre Xiaomi Air Purifier 3H
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]on
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]off
Sélection du mode
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]set_mode auto
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]set_mode fan
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]set_mode favorite
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur]set_mode silent
Activer / Désactiver le buzzer
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] set_buzzer 1
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] set_buzzer 0
Récupérer les informations
Sans doute la commande la plus intéressante !
sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] status
Attention pour l’interprétation dans Jeedom, il est nécessaire de récupérer ces informations au format JSON :
sudo miiocli --output json airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] status
Création du script
Maintenant que notre jeedom est prêt à communiquer avec le purificateur d’air (Xiaomi Air Purifier 3H), nous allons créer un script grâce au plugin Script du market.
Voila comment le mien est configuré :
Pour les commandes, vous allez devoir créer une commande info qui récupère l’ensemble des informations dans un fichier JSON.
La commande Refresh
Renseignez votre commande comme suit :
Détail de la requête :
sudo miiocli --output json airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] status > /var/www/html/purifier.json
Les commandes d’informations
Maintenant nous allons créer une commande par information que nous voulons récupérer.
Voila ce que j’ai réalisé chez moi :
Les commandes d’actions
Vous allez maintenant créer les commandes d’actions permettant de :
- Eteindre l’appareil (off)
- Allumer l’appareil (on)
- Activer/Désactiver le buzzer (set_buzzer)
- Switcher entre les 3 vitesses de ventilation (set_fan_level)
- Définir le niveau de ventilation en favori (set_favorite_level)
- Définir la luminosité de l’écran (set_led_brightness)
- Définir le mode (set_mode)
- Définir le volume (set_volume)
Voici comment est construite la commande :
miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] [Paramètre] (Option)
Exemple de commande pour passer le purificateur en mode automatique :
miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] set_mode auto
Voici un aperçu de mes commandes d’actions :
Résultat
Voila ce que ça donne :
J’espère vous avoir aidé ! Si vous rencontrez un problème, n’hésitez pas à laisser un commentaire 😉
super !
Merci
voici les infos que l’on peux récupérer :
Power: on
AQI: 1 μg/m³
Average AQI: 5 μg/m³
Humidity: 37 %
Temperature: 26.1 °C
Fan Level: 1
Mode: OperationMode.Fan
LED: True
LED brightness: LedBrightness.Bright
Buzzer: True
Buzzer vol.: None
Child lock: False
Favorite level: 14
Filter life remaining: 0 %
Filter hours used: 4050
Use time: 14507100 s
Purify volume: 172995 m³
Motor speed: 761 rpm
Filter RFID product id: 0:0:31:31
Filter RFID tag: 81:67:b8:6a:f6:9:4
Filter type: FilterType.Regular
Franchement merci et bravo.
Bravo et encore bravo.
Un grand merci pour cet article !
Pour ma part étant sur synology (via container docker jeedom), j’ai un peu galéré : en effet apt-get n’existe pas sur synology.
J’ai donc utilisé opkg pour installer jq, gcc, libffi et python3-cffi (libffi-dev n’étant pas dispo via opkg).
J’espère que mon commentaire aidera ceux qui sont dans la même configuration que moi.
Je n’ai pas encore été au bout de la configuration jeedom mais j’arrive à piloter le purificateur avec les commandes SSH.
Bonjour Romain,
Merci pour les prévisions, vous allez en aider beaucoup 🙂
Bonjour,
possible avec un dreame d9 ?
Bonjour Sebastien,
A tester 🙂
En adaptant ce TUTO oui on y arrive.
https://community.jeedom.com/t/integration-aspirateur-dreame-d9-sous-jeedom/84979/17
Bonjour,
Votre tuto est vraiment excellent. Surtout que le plugin jeedom fonctionne pas encore avec mon humidificateur.
J’ai deux questions svp?
L’adresse ip dans les commandes d’informations est bien celle de mon humidificateur? et non celle du Jeedom?
Si oui j’ai une erreur avec le port, pourtant il est bien ouvert. Avez-vous rencontré le même problème ?
Erreur pour [maison][Humidificateur Salon][Humidity] : Echec de la requête HTTP : http://192.168.0.19/humidifier.json cURL error : Failed to connect to 192.168.0.19 port 80: Connection refused
Merci à vous .
Bonjour kimax57,
L’adresse IP doit etre celle du Jeedom.
Vous pouvez normalement utiliser http://localhost/humidifier.json
Normalement ca fonctionne 🙂
Bonjour,
Merci pour le tuto, par contre comment faire pour récupérer le token?
Bonjour Benjamin,
Merci pour ce plugin qui me permet enfin de commander le purifier 3h depuis Jeedom. Je rencontre cependant un problème épineux : j’ai écrit un scénario qui déclenche le purifier quand la qualité de l’air n’est pas suffisante. Lorsque c’est moi qui déclenche le scénario à la main depuis l’interface jeedom, tout se déroule comme prévu. Lorsque c’est jeedom qui déclenche le scénario, ce dernier tombe en erreur : la commande miiocli n’est pas reconnue ! (miiocli: not found). Y aurait-il un path renseigner quelque part ?
Merci d’avance pour ton aide !
En attendant, j’ai mis le path en dur dans les commandes de l’équipement script, à savoir, pour ceux qui sont confrontés au même problème : /usr/local/bin/miiocli
Merci pour ton super tuto. j’ai réussi mon intégration dans Jeedom.
serait il possible d’avoir la description des commande infos ( AQI, AQI average, temps filtre et usure filtre ) je sais je suis bidon mais j’ai l’impression que ce que j’ai mis n’est pas bon.
Encore merci
Merci ! Tuto au top !
si ça peut aider :
pour la commande
sudo pip3 install python-miio
j’ai du ajouter :
–ignore-installed PyYAML
pour le token : https://lunarok.github.io/jeedom_docs/plugins/xiaomihome/wifi.html
Un génie ! parfait ! fonctionne impec ! merci !
Franchement, super, surtout quand le plugni Jeedom pour xiaomi (7€) ne fonctionne pour aucun de mes appareils xiaomi (purificateur, caméra, aspirateur), maintenant je les ai tous dans jeedom !
Pour répondre à Thierry pour le token: il y a des manip avec les tel android, en utilisant une vieille appli de xiaomi, combinée à l’utilisation du mode debub android + un pc avec un logiciel qui déclenche un backup de l’appli pour trouver dans cette archive le token…
Enfin bref c’est compliqué, j’avais par le passé réussi mais mes derniers essais sont KO.
Et j’ai trouvé à la place un truc super : « token_extractor.exe »
Il balaye les serveurs xiaomi et récupère ces infos.
Seule inconvénient: il faut lui donner ton compte/mot de passe Xiaomi.
J’espère que c’est un soft fiable, au pire peut-être juste changer le mot de passe après.
z-pack antibiotics azitromicina azithromycin over the counter https://azithromaxww.com/
Slt,
Sais tu si le robot Xiaomi viomi v2 pro est compatible avec cette méthode ?
Slt,
Savez vous si il est possible d’utiliser votre méthode pour le robot Xiaomi viomi v2 pro ?
Bonjour,
J’ai une jeedom smart a la derniere version (4.1.24) et impossible d’installer la commande miio:
Lorsque je lance : sudo pip3 install python-miio
J’ai :
error: can’t find Rust compiler
If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
To update pip, run:
pip install –upgrade pip
and then retry package installation.
If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
J’ai bien fait le « pip install –upgrade pip » mais ca ne marche toujours pas.
une idée de ce qu’il faut faire ?
Bonjour,
Un grand merci pour le tuto !
J’ai eu le même pb que Theric, j’ai solutionné avec :
> Installation de rust (sinon erreur Rust compiler manquant)
curl https://sh.rustup.rs -sSf | sh -s —
(Attention c’est pour un jeedom sur raspberry pi / voir le site de rust pour d’autres config https://rustup.rs)
> maj de python
sudo apt-get install python3-dev
> maj de pip3 + setuptools de pip (sinon erreur avec Cryptography)
sudo pip3 install –upgrade pip setuptools wheel
Et tout roule !
par contre je mets pas l’IP de Jeedom dans les commandes mais : http://localhost/purifier.json
Encore merci !
Bonjour,
J’ai un problème lorsque j’utilise la méthode pour l’installation du module miiocli pour le pilotage du purificateur Xiaomi 3h.
Tout à l’air de fonctionner correctement jusqu’à l’étape :
sudo pip3 install python-miio
Celui me renvoie l’erreur :
Can’t roll back cryptography; was not uninstalled
Command « /usr/bin/python3
-u
« import setuptools, tokenize;_
file
_=’/tmp/pip-install-dbsouxqp/cryptography/setup.py’;f-getattr(tokenize,’open’,open)(_file);
code=f.read).replace(r\n’
‘In’);f.close();exec(compile(code,
file
exec’))’
install
–record/tmp/pip-record-12z_c632/install-record.txt–single-version-externally-managed–compile »failedwitherrorcode1in/tmp/pip-install-dbsouxqp/cryptography/
Forcément lors de l’appel de la commande suivante me renvoie l’erreur quel n’existe pas
Je suis sous une VM jeedom V4 sous debian 10
Pouvez-vous m’aider ?
Merci
Pour ceux qui ont comme moi un accès interdit de Jeedom pour accéder au fichier json, il faut ajouter une autorisation pour ce type de fichiers. Pour cela, éditez le fichier /var/www/html/.htaccess et cherchez la ligne suivante :
Modifiez la pour obtenir le résultat suivant (ajoutez |json vers la fin de la ligne) :
Pas besoin de redémarrer Apache, la config est instantanée !
Bonjour et merci pour ce tuto. @t3k peux tu nous dire quelle ligne remplacer dans le .htaccess ?
Ton sujet m’interresse, tous les jours j’ai 300 notifications (Erreur pour [Salon][purificateur 3h][État] : Json invalide ou non décodable : 403 Forbidden Forbidden You don’t have permission to access this resource) et pourtant il fonctionne parfaitement.
Bonjour K2T,
Attention à la fréquence ou tu interroge l’équipement.
C’est peut-etre ca le probleme, si tu l’interoge trop souvent il doit rejeter les requetes.
Benjamin.
Bonjour
Il y a un prérequis d’OS (debian 10 ou 11) pour faire fonctionner la partie miiocli ?
merci
Savez vous si les 2 nouveaux produits Xiaomi Smart Pet Food Feeder & Fountain
sont déjà dans miiocli ?
Bonjour,
Il me semble pas pour le distributeur de nourriture.
Par contre pour la fontaine à eau cela doit être possible.
Vous pouvez retrouver la liste des appareils pris en charge à cette adresse : « python-miio — python-miio documentation » https://python-miio.readthedocs.io/en/latest/#supported-devices
Benjamin.
Bonjour, merci pour votre réponse