Très intéressant !
J’essaie de mon coté mais au moment où j’écris la commande
« sudo pip3 install python-miio »
J’ai comme réponse :" python-miio requires Python ‹ >=3.6 › but the running Python is 3.5.3"
Je dois installer une version supérieur de Python ? Je ne risque pas de rendre incompatible d’autres plugins ?
Hello Privas,
Merci pour ton tuto, il mérite un post à part : tout semble marcher au poil ici !
Thor, j’avais le même soucis que toi, je m’en suis sorti en installant python3.9 en altinstall dans le usr/bin.
Voici les commandes qui différaient des tuto d’install python que j’ai trouvé sur le net, peut être que ca aidera quelqu’un !
> Pour installer python dans usr/bin plutot que usr/local/bin
./configure --enable-optimizations --with-ensurepip=install --prefix=/usr
> Pour ne pas écraser ton python de base
sudo make altinstall
> Une fois l'alternative installé
python -m pip install --upgrade pip
python -m pip install python-miio
Bonjour,
Je découvre avec plaisir que le fil que j’ai initié a trouvé une bonne âme pour partager une solution. Merci beaucoup à elle, j’étais personnellement loin de pouvoir bâtir une telle solution.
Je suis presque au bout, mais bute sur le problème suivant : la commande sudo miiocli --output json airpurifiermiot --ip xxxxx --token xxxxxx status > /var/www/html/purifier.json
tombe en erreur
-bash: /var/www/html/purifier.json: Permission non accordée
Je l’ai testée sans la redirection de l’output, ça marche.
Je l’ai testée en dirigeant l’output vers un fichier chez moi, mais j’obtiens toujours l’erreur.
Quelqu’un a-t-il une idée de l’origine du problème ?
J’ai trouvé tout de même un fichier purifier.json dans le dossier html dont voici le contenu :
Traceback (most recent call last):
File « /usr/local/bin/miiocli », line 11, in
sys.exit(create_cli())
File « /usr/local/lib/python3.6/site-packages/miio/cli.py », line 45, in create_cli
return cli(auto_envvar_prefix=« MIIO »)
File « /usr/local/lib/python3.6/site-packages/miio/click_common.py », line 59, in call
return self.main(*args, **kwargs)
File « /usr/local/lib/python3.6/site-packages/click/core.py », line 760, in main
_verify_python3_env()
File « /usr/local/lib/python3.6/site-packages/click/_unicodefun.py », line 130, in _verify_python3_env
" mitigation steps.{}".format(extra)
RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult https://click.palletsprojects.com/python3/ for mitigation steps.
This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issue by exporting the following environment variables:
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
Je ne sais pas où et comment pratiquer les exports préconisés ci-dessus. En attendant, j’ai créé moi-même le fichier json en copiant/collant la sortie de la commande.
J’ai trouvé une solution d’attente pour ceux qui sont concernés :
Pour la commande « Refresh » et toutes les commandes de type « Action », faire précéder l’appel à miiocli des deux commandes préconisées dans la trace de l’erreur à savoir
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
Me voilà enfin avec un Air Purifier 3H opérationnel sous Jeedom.
Mille mercis, Benjamin, pour ton travail et ton partage.
Hello,
J’avais le même soucis que toi.
Etrangement je n’ai plus le message d’erreur après avoir migré OS vers debian 10 qui vient avec python 3.7 en utilisant la même sauvegarde de Jeedom.
En espérant que ca règle ton problème aussi.
Tu observeras les deux commandes export qui précèdent l’appel à miiocli. C’est ce que j’ai ajouté devant toutes les commandes du script qui appellent miiocli.
Je n’avais pas le problème de langue mais l’erreur que tu rencontrais avant (json invalide ou indécodable). L’erreur revient que lorsque le purificateur n’est pas branché. Est ce que ton routeur a des absences ou que le purificateur n’est pas branché h24?
Merci @labraud c’est un peu plus clair pour moi
Oui en effet ce n’est pas un problème de langage que j’ai, mais de communication.
Je pense que je vais faire un reset de mon routeur. Car en effet il m’arrive d’avoir des coupures de WiFi et je crois que ça doit venir de là. En effet. Merci @Dimide
Après y avoir pensé un moment et même si je débute en debian (/script) je pense avoir trouvé la solution pour ton problème de communication avec un « if » via le code ci dessous pour la commande refresh :
Il faudra bien sur remplacer l’adresse IP & le token.
En gros ton jeedom fera un ping sur l’adresse IP du purifier, si il peut atteindre l’host il lancera la commande miiocli sinon il fera rien et utilisera les infos du précédent JSON.
Ce code est améliorable si tu veux par exemple gérer autrement l’erreur de connection (exemple parser un json avec des champs perso contenant « Erreur Comm » ou autre).
J’ai testé ca m’a l’air de marcher chez moi.
Bonjour @Dimide
J’ai mis la commande comme conseillé, mais lorsque le ping est nul j’ai quand même l’erreur.
Je viens de relire ton post pour voir si je l’avais fait convenablement et je viens de m’apercevoir que tu me préconise un « if » . Ou dois-je le mettre ce if ? Comment dois-je m’y prendre ?
J’avais testé la commande de la sorte :
ping -c1 -W1 -q adresseIPAirPurifier && echo 1 > /var/www/html/purifier.json || echo 0 > /var/www/html/purifier.json
Pour avoir un 1 quand il était accessible et un 0 quand il n’était pas accessible et ca semblait marcher.
Je vais réessayer ce weekend.
Bravo à la personne ayant compiler tout ça… Mon purificateur est pilotable via Jeedom désormais.
Je ne suis pas développeur, peux être que ce type de méthode n’est pas applicable/automatisable pour être ajouter au Plugin mais @lunarok pourrait peut être s’en inspirer pour intégrer rapidement ce dispositifs attendus de beaucoup dans une prochaine mise à jour.
En tout cas merci encore pour cette astuce et merci à Lunarok pour son plugin