Erreur de récupération de données

Bonjour à tous !
J’utilise ce plugin depuis plus d’un an et demi.
Il est arrivé plusieurs fois que les infos ne se mettent plus à jour, je voyais en effet des erreurs dans les logs, alors j’allais dans la configuration, refaisait un petit « Sauvegarder » ça et là, voire une réinstallation de dépendances, sans savoir trop ce que je faisais et ça retombait en marche pendant quelques mois.

Mais là je butte, impossible de récupérer les infos de mon aspirateur.

Je vous joins quelques logs :

[2025-07-30 11:36:23] DEBUG  : ============================ EXEC CMD ============================
[2025-07-30 11:36:23] DEBUG  :    avec les options : {"user_login":"TonioBDS","user_id":"2"}
[2025-07-30 11:36:23] DEBUG  : exécution de la commandeRafraichir[refresh]
[2025-07-30 11:36:23] DEBUG  : ============================ MISE A JOUR DE LA COMMANDE ============================
[2025-07-30 11:36:23] DEBUG  : Génération des commandes depuis le fichier de configuration : /var/www/html/plugins/mirobot/core/class/../conf/genericmiot.json
[2025-07-30 11:36:23] DEBUG  : Exécution de la commande avec [genericmiot] => sudo  /var/www/html/plugins/mirobot/core/class/../../resources/venv/bin/miiocli -o json_pretty genericmiot --ip 192.168.0.19 --token XXXXXXXXXXXXXXXXXXX576554f566a485142 status  >&1 2>/var/www/html/plugins/mirobot/core/class/../../data/exec/error_1036.txt
[2025-07-30 11:36:25] DEBUG  : Résultat de la commande : null
[2025-07-30 11:36:25] DEBUG  : ---------- errorFile content --------------
[2025-07-30 11:36:25] DEBUG  : ERROR:miio.click_common:Exception: argument of type 'bool' is not iterable Traceback (most recent call last):   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/miio/click_common.py", line 55, in __call__     return self.main(*args, **kwargs)            ^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1363, in main     rv = self.invoke(ctx)          ^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1830, in invoke     return _process_result(sub_ctx.command.invoke(sub_ctx))                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1824, in invoke     cmd_name, cmd, args = self.resolve_command(ctx, args)                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1871, in resolve_command     cmd = self.get_command(ctx, cmd_name)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/miio/click_common.py", line 274, in get_command     if cmd_name not in self.commands:        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: argument of type 'bool' is not iterable
[2025-07-30 11:36:25] DEBUG  : ---------------------------
[2025-07-30 11:36:25]WARNING : ERROR:miio.click_common:Exception: argument of type 'bool' is not iterable
[2025-07-30 11:36:46] DEBUG  : ============================ DISCOVER ============================
[2025-07-30 11:36:47] DEBUG  : ["INFO:root:Access denied when logging on to Xiaomi cloud (0): Access denied. Did you set the correct api key and\/or username?","Traceback (most recent call last):","  File \"\/var\/www\/html\/plugins\/mirobot\/core\/class\/..\/..\/resources\/venv\/bin\/micloud\", line 8, in <module>","    sys.exit(cli())","             ^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/click\/core.py\", line 1442, in __call__","    return self.main(*args, **kwargs)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/click\/core.py\", line 1363, in main","    rv = self.invoke(ctx)","         ^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/click\/core.py\", line 1830, in invoke","    return _process_result(sub_ctx.command.invoke(sub_ctx))","                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/click\/core.py\", line 1226, in invoke","    return ctx.invoke(self.callback, **ctx.params)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/click\/core.py\", line 794, in invoke","    return callback(*args, **kwargs)","           ^^^^^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/cli.py\", line 27, in get_devices","    mc.login()","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/micloud.py\", line 89, in login","    raise e","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/micloud.py\", line 69, in login","    if self._login_request():","       ^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/micloud.py\", line 117, in _login_request","    raise e","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/micloud.py\", line 102, in _login_request","    location = self._login_step2(sign)","               ^^^^^^^^^^^^^^^^^^^^^^^","  File \"\/var\/www\/html\/plugins\/mirobot\/resources\/venv\/lib\/python3.11\/site-packages\/micloud\/micloud.py\", line 175, in _login_step2","    raise MiCloudAccessDenied(\"Access denied. Did you set the correct api key and\/or username?\")","micloud.micloudexception.MiCloudAccessDenied: Access denied. Did you set the correct api key and\/or username?"]
[2025-07-30 11:45:04] DEBUG  : *** Rafraichissement toutes les 5 minutes ***
[2025-07-30 11:45:04] DEBUG  : ============================ MISE A JOUR DE LA COMMANDE ============================
[2025-07-30 11:45:04] DEBUG  : Génération des commandes depuis le fichier de configuration : /var/www/html/plugins/mirobot/core/class/../conf/genericmiot.json
[2025-07-30 11:45:04] DEBUG  : Exécution de la commande avec [genericmiot] => sudo  /var/www/html/plugins/mirobot/core/class/../../resources/venv/bin/miiocli -o json_pretty genericmiot --ip 192.168.0.19 --token XXXXXXXXXXX554f566a485142 status  >&1 2>/var/www/html/plugins/mirobot/core/class/../../data/exec/error_1036.txt
[2025-07-30 11:45:09] DEBUG  : Résultat de la commande : null
[2025-07-30 11:45:09] DEBUG  : ---------- errorFile content --------------
[2025-07-30 11:45:09] DEBUG  : ERROR:miio.click_common:Exception: argument of type 'bool' is not iterable Traceback (most recent call last):   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/miio/click_common.py", line 55, in __call__     return self.main(*args, **kwargs)            ^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1363, in main     rv = self.invoke(ctx)          ^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1830, in invoke     return _process_result(sub_ctx.command.invoke(sub_ctx))                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1824, in invoke     cmd_name, cmd, args = self.resolve_command(ctx, args)                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/click/core.py", line 1871, in resolve_command     cmd = self.get_command(ctx, cmd_name)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "/var/www/html/plugins/mirobot/resources/venv/lib/python3.11/site-packages/miio/click_common.py", line 274, in get_command     if cmd_name not in self.commands:        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: argument of type 'bool' is not iterable
[2025-07-30 11:45:09] DEBUG  : ---------------------------
[2025-07-30 11:45:09]WARNING : ERROR:miio.click_common:Exception: argument of type 'bool' is not iterable

On y vois d’abord un refresh manuel de commande, puis une détection automatique des appareil, et enfin un refresh programmé.

Notez que mon appli Xiaomi Home permet bien toujours d’accéder à mon aspirateur et les données y sont fiables.

Si vous êtes inspirés, je suis tout ouïe !
Merci à vous !


Informations Jeedom

Core : 4.4.19 (master)
DNS Jeedom : non

Plugin : Mi Robot
Version : 2024-09-17 14:20:46 (beta)

Informations complémentaires

Version OS : debian 12.8
Version PHP : 8.2.26
Version CLI : ["miiocli, version 0.6.0.dev0"]


Spirobot [1036] : 
   Model : dreame.vacuum.r2216o 
   Type : genericmiot

Bonjour,

Idem chez moi

0036|[2025-08-23 12:44:05] DEBUG : Résultat de la commande : null
0037|[2025-08-23 12:44:05]WARNING : ERROR:miio.click_common:Exception: argument of type ‹ bool › is not iterable

Hello !
Je n’ai toujours pas trouvé de solution au problème décrit plus haut.
Les utilisateurs de plugin-mirobot, ça marche toujours chez vous ?
Si l’auteur du plugin veut bien jeter un oeil aussi…
Merci à tous !

C assez parlant

Lol je suis d’accord ! Merci de prendre le temps !
Mais il s’agit donc de mes identifiants Xiaomi Home qui sont renseignés dans la configuration du plugin :
image
C’est identifiants sont bon, j’arrive à me connecter sur mon copte Xiaomi, sur l’appli Xiaomi Home…

Je vois qu’un autre post d’il y a 4 jours réfère au même problème :

Je me dis qu’il s’est donc passé quelque chose sur la méthode d’authentification au Xiaomi cloud par exemple ?
---------Edit-------------
En fouillant sur le net un peu plus, je vois que des utilisateurs sur HA ont les même problèmes depuis juin. :

Certain ont parlé de MFA mais il semblerait que désormais certaines authentification nécessite un CAPTCHA:

D’autres mentionnent la possibilité d’utiliser un script pour extraire le token du device et de n’utiliser que ça pour faire fonctionner leur plugin.

Ca dépasse largement mes compétences par contre…

Bonjour a tous,
Oui j’ai vu aussi ce captcha en cherchant le token de mon robot avec l’appli token_extractor :

@tomitomas , une idée ?

nullement

et j ai la meme erreur chez moi si ca peut vous rassurer.

pas le temps de creuser actuellement le soucis. d autant qu il semble y avoir un nouveau plugin qui arrive et qui fera surement mieux le job que les qlq rustines que jai pu mettre quand j ai récupérer celui la…

Oui c’est ce que j’ai pu lire sur des forums en effet.
Par contre je comprends que tu essaies de contourner le pb en utilisant ce token extractor et ainsi mettre à jour le token de ton device ?
Si je comprends bien, le plugin est sensé le faire mais depuis une évolution de l’API cloud Xiaomi vers mai-juin ça merdouille sévère.

Ah bon ? Tu as un nom ?

Pour le soucis en question, ma compréhension c’est que le plugin mirobot utilise la librairie micloud qui n’est plus suivie depuis 3 ans.
Il semblerait que Xiaomi-cloud-tokens-extractor soit beaucoup plus suivi.
Sur ce fil, ils parlent du pb de captcha et de MFA et que l’issue est désormais résolue…
Evidemment je doute qu’on puisse remplacer l’un par l’autre tout simplement…

1 « J'aime »

Par contre je comprends que tu essaies de contourner le pb en utilisant ce token extractor et ainsi mettre à jour le token de ton device ?

Non, je voulais d’abord inclure mon x20+ dans le plugin Xiaomi home et là il faut le token du device pour pouvoir attaquer directement le robot sans passer par le cloud. Mais le x20+ n’est pas supporté.

Apres j’ai découvert le plugin mirobot, mais pas moyen de me connecter au cloud xiaomi.

Alors en attendant un plugin, je l’ai intégré avec le plugin Script et je lui envoie les actions et je récupère les infos, en ligne de commande, avec miiocli, le token et le mapping que j’ai trouvé là:
Xiaomi Robot Vacuum X20+

Le mapping n’est plus tout a fait juste, vu que ca depend du firmware du device, mais a tâtons, y a moyen de faire quelque chose.

1 « J'aime »

Je ne sais pas si c’est le même souci, mais tu as essayé ça pour le plugin mirobot ?

Et sinon j’avais remarqué qu’après un appairage sur le plugin Xiaomi ça passait mieux dans mirobot. Aucune idée si c’est vraiment le cas mais constaté plusieurs fois.

Et si tu passes toutes ces étapes, tu peux aussi tenter ces modifs pour pas mal d’états et erreurs supplémentaires gérées sur le x20+ :

Bon courage.