Piloter un robot Roborock

salut @Madcow et merci pour le partage.
Ca fonctionne tjs chez toi?

Je bute sur le 2FA, pas d’email recu :thinking:


(test) root@jeedom-test> roborock login --email xxx@gmail.com --password yyyy
INFO:roborock.web_api:Login failed for xxx@gmail.com with the following context: {'msg': 'need two step validate', 'data': None, 'code': 2031}
Traceback (most recent call last):
  File "/root/dev/test/bin/roborock", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/root/dev/python-roborock/roborock/cli.py", line 994, in main
    return cli()
           ^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/core.py", line 1485, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/core.py", line 1406, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/core.py", line 1873, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/core.py", line 824, in invoke
    return callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/test/lib/python3.11/site-packages/click/decorators.py", line 34, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/python-roborock/roborock/cli.py", line 101, in wrapper
    return asyncio.run(run())
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/root/dev/python-roborock/roborock/cli.py", line 94, in run
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/python-roborock/roborock/cli.py", line 313, in login
    user_data = await client.pass_login(password)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dev/python-roborock/roborock/web_api.py", line 386, in pass_login
    raise RoborockException(f"{login_response.get('msg')} - response code: {login_response.get('code')}")
roborock.exceptions.RoborockException: need two step validate - response code: 2031

Voici la version que j’ai installée (la dernière à date):

(test) root@jeedom-test> roborock --version
roborock, version 3.13.1

Merci :wink:

Bonjour,

Oui ça fonctionne toujours mais j’avais eu le 2FA par l’appli. Et je n’ai pas la dernière version de la lib.

Peut-être faire une issue sur le github ?

Quand tu te connectes avec l’appli tu as aussi un 2FA ?

Merci pour ton retour. Oui je vais faire ça.
J’ai reçu le robot hier, j’ai eu le 2 FA sur les 2 tels que j’ai connectés mais pas via cette lib python.

Salut … intéressant je vais suivre ça de près si je me décide a changer de robot.

De mon coté j’ai un vieux roborock S4 qui fonctionne très bien et est 100% compatible jeedom et autre.

Et la seule solution valable que j’ai trouvé a ete de carrement flasher le robot avec un firmware Valetudo :wink:

Gros avantage : le robot se retrouve hors cloud et communique plus qu’en local en MQTT ! :slight_smile:
Et donc plus besoin de plugin dédié et de compte cloud …

https://korben.info/valetudo-hack-robot-aspirateur.html

Il faut fouiller mais il y a pas mal de robots compatibles avec ces firmwares …:

Bonjour,

Le FW n’est plus suivi sur les Roborock récents. Hélas !

Le mqtt Roborock via la lib est en grande partie local. Mais toujours besoin d’authentification en effet.

c’est pour ca que je roule tous les jours en 2cv…
Plus c’est vieux… et mieux ca marche et c’est fiable! :smiley:
Vive la LOW-TECH : :smiley:

2 « J'aime »

Pour info si ça peut servir à d’autres j’ai eu la réponse: il suffit de se connecter sans mdp. Encore fallait-il le savoir…donc ça n’est pas du vrai 2FA

1 « J'aime »

Bonjour,

C’est à dire sans argument --password ?

Exactement, dans ce cas le code est demandé.

Bonjour,

Bonne année 2026 à tous !

Mise à jour du 1er post.

Bonjour,

Mise à jour du 1er post.

hello ,
Juste pour info , j ai un roborock Q10 X5+ jouer un peut ave les commandes et Gemini .
Voici les commande qui fonctionne pour le moment .

Démarrer,
/home/pi/pilotage-roborock/venv/bin/roborock command --device_id 55x0lp2m7639XXXXXXXXXX --cmd START_CLEAN --params ""1"" 2>/dev/null
Arrêter,
/home/pi/pilotage-roborock/venv/bin/roborock command --device_id 55x0lp2m7639XXXXXXXXXX --cmd STOP --params ""0"" 2>/dev/null
Pause,
/home/pi/pilotage-roborock/venv/bin/roborock command --device_id 55x0lp2m7639XXXXXXXXXX --cmd PAUSE --params ""1"" 2>/dev/null
Retour Base,
/home/pi/pilotage-roborock/venv/bin/roborock command --device_id 55x0lp2m7639XXXXXXXXXX --cmd START_DOCK_TASK --params ""1"" 2>/dev/null

Bien a tous