Air Purifier 3H

J’ai remarqué pour ma part que le purificateur était très capricieux au niveau des requetes. Il ne répond pas tout le temps. D’où l’erreur je l’ai aussi. J’ai modifié un peu la récup des données (cmd rafraichir dans le tuto) avec un scénario c’est lui qui vient rafraichir ou non les données en fonction de l’état du json.

Je vous met des copies d’écran du scénario :


Je tiens à préciser que je ne maitrise pas le codage j’ai pioché à droite et à gauche les infos pour arriver à ça.

Merci pour le partage :slight_smile:

Bonjour,

  • j’ai pu faire l’install
  • j’ai récupéré le token avec paket sender
  • la commande avec help retourne les fonctionnalité.
  • le ping sur le 3H est ok

Ensuite j’ai lancé la commande

sudo miiocli airpurifiermiot --ip 192.168.0.XX --token 333b............3d47 status

Résultat:

ERROR:miio.miioprotocol:Got error when receiving: timed out
Error: No response from the device

Je me suis dit que j’aivais dû mal noter le token. J’ai réinitialisé et j’ai obtenu un token différent. Chaque fois que je reset le 3H j’ai un token différent.

Est ce que quelqu’un aurait une idée

  • pour savoir si c’est un problème de token (l’appli android ferait-elle un changement lors de la connexion initiale?)
  • un problème parce qu’il est aussi associé avec Alexa?
  • Autre idée?

Meilleures salutations

J’ai trouvé la méthode packet sender n’est pas OK en mettant la version mi home avec les log c’est OK!

Bonjour,
Je me répond a moi-même . n’étant pas calé sur linux/python… je vais essayer d’être clair pour aider les autres.
en fait dans les nouvelles version de MIIOCLI il ya une nouvelle class qui apparaît spécialement pour les roborock de Xiaomi.
Donc, en utilisant seulement « vacuum » pour creer le fichier JSON il y avait une ligne expliquant cette nouvelle class a la fin du JSON qui , du coût devenait « non décodable »
j’ai mis du temps a trouvé car, bien que comprenant cela il était indiqué d’utiliser « RoborockVacuum »,
j’avais toujours le même probleme…
En fais il faut utiliser roborockvacuum (sans les majuscule) a la place de vacuum
Et la plus aucun probleme de JSON, j’ai de nouveau la possibilité de piloter mon S50

Hello

Suite au passage en 4.2.7 et le nouveau système de droits, les scripts ne fonctionnent plus :frowning:

Hello,
Problème aussi constaté…
Il faudrait savoir si on peut le déposer dans un partie qui serait « public ». Mais je n’ai pas l’expertise… A voir si un boss a une idée!

Il faudrait pouvoir écrire le json dans une variable et relire la variable pour en extraire les infos…

Je crois qu’il faut que le json soit stocké dans le même dossier contenant le script.
J’ai un script autre que pour le purificateur et avec écriture d’un json et aucun problème depuis la mise à jour en 4.2.

Problème résolu dans l’autre discussion en dessus.

1 « J'aime »

Bon il faudra voir pour écrire à la bonne place. Autrement On peut faire un scénario qui lit le json et qui écrit les valeurs dans des variables. Ensuite on fait un virtuel qui récupère les variables et on fait tourner le scénario à intervalles réguliers…

La solution de @olivr2s demande moins de modif, c’est sûr!

Si jamais un bout de code (quick & dirty) pour mettre les valeurs dans des variables

$fichier = system('sudo miiocli --output json airpurifiermiot --ip 192.168.0.60 --token 47ffhhhhhhhhhh640d status', $retval);

$humidity =json_decode($fichier)->{'humidity'};
$power    =json_decode($fichier)->{'power'};
$fan_level=json_decode($fichier)->{'fan_level'};
$mode     =json_decode($fichier)->{'mode'};
$temperature=json_decode($fichier)->{'temperature'};
$aqi        =json_decode($fichier)->{'aqi'};
$average_aqi=json_decode($fichier)->{'average_aqi'};
$motor_speed=json_decode($fichier)->{'motor_speed'};
$filter_life_remaining=json_decode($fichier)->{'filter_life_remaining'};
$use_time=json_decode($fichier)->{'use_time'};
$filter_hours_used=json_decode($fichier)->{'filter_hours_used'};
$favorite_level=json_decode($fichier)->{'favorite_level'};
$favorite_rpm =json_decode($fichier)->{'favorite_rpm'};

$scenario->setData('pur_humidity', $humidity);
$scenario->setData('pur_power', $power);
$scenario->setData('pur_fan_level',$fan_level);
$scenario->setData('pur_mode',$mode);
$scenario->setData('pur_temperature',$temperature);
$scenario->setData('pur_aqi',$aqi);
$scenario->setData('pur_average_aqi',$average_aqi);
$scenario->setData('pur_motor_speed', $motor_speed);
$scenario->setData('pur_filter_life_remaining', $filter_life_remaining);
$scenario->setData('pur_use_time', $use_time);
$scenario->setData('pur_filter_hours_used', $filter_hours_used);
$scenario->setData('pur_favorite_level', $favorite_level);
$scenario->setData('pur_favorite_rpm', $favorite_rpm);

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 disponible ici : Purificateur 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


sudo miiocli airpurifiermiot --ip [IpDeVotrePurificateur] --token [TokenDeVotrePurificateur] --help

Je suis sous une VM jeedom V4 sous debian 10
Pouvez-vous m’aider ?

Merci

Merci pour ce bout de code qui m’a permis de remettre en fonctionnement la collecte des données de mon purificateur suite passage en 4.2.

La réponse est un peu plus haut dans cette discussion :

Il faut taper la commande : sudo pip3 install --upgrade pip
Cela met à jour pip et ensuite retaper la commande : sudo pip3 install python-miio

Bonjour eleckito21

Pourrais-tu me donner mes réglages de ton visuel.
Il est top et j’aimerai bien avoir le même.
Merci

DBX

Post ton visuel que je vois les infos que je dois te donner c’est plus simple.

Bonjour,

Ci-dessous ce qui est affiché aujourd’hui:
image

Merci pour ton aide
DBX

1 « J'aime »

Je joue avec les widgets :

  • power → binairyswitch sur on et off | Etat masqué
  • fan → button
  • humidity → line
  • mode info → (widget maison) voir copie d’écran après
  • temperature → line
  • aqi → (widget maison) mais le tile ressemble
  • usure filtre → line
  • temps → line

Bonjour

Merci beaucoup.
Je testes et je reviens vers vous après la mise en place… j’aurai certainement d’autres questions (ce sera mon 1er widget) :grin:
Bonne journée.

1 « J'aime »

Pour ma part, j’ai réussi à recuperer le token pour utiliser avec le plugin Xiaomi avec un programme fourni par https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
Je met le token, l’IP du purificateur sur mon réseau, et j’ai un timeout de la part du plugin…

et avec la commande miiocli j’ai un « Unable to discover the device 192.168.22.137 »

Je precise que dans l’app Xiaomi, l’IP de mon purificateur est bien l’IP 192.168.22.137

Merci pour cette piste n’ayant pas trouvé où placer mon purifier.json, je me suis donc créé un repertoire à mon prénom, puis j’ai mis dedans un .htacces qui lève l’interdiction d’accèder aux appels par le serveur lui-même. Pour moi pas de soucis de sécurité car pour l’instant c’est uniquement le purifier.json que j’y place et qu’il y a pas de clef ou autre données qui pourraient être rendue accessible.

J’ai donc ensuite modifié dans l’interface script les chemins pour que

sudo miiocli --output json airpurifiermiot --ip 192.168.0.XX --token 613ssdfsdfsdfsdfsf1158e648eb8 status >/var/www/html/purifier.json

devienne maintenant

sudo miiocli --output json airpurifiermiot --ip 192.168.0.XX --token 613ssdfsdfsdfsdfsf1158e648eb8 status >/var/www/html/francis/purifier.json

Et les appels internes qui récupére la valeur dans le json de

http://192.168.0.XX/purifier.json

devienne maintenant

http://192.168.0.39/francis/purifier.json

Le .htaccess déposé dans le repertoire francis contient uniquement :

Order deny,allow
Deny from all
Allow from 127.0.0.1

Il faut penser aussi a mettre d’aplomb le proprietaire et les droits sur le repetoire et les fichiers ajoutés
Les fameux chown ww-data:www-data et chmod