it:iot:xiaomi-mi-robot-vacuum-mop-2-ultra

Toto je starší verze dokumentu!


Xiaomi Mi Robot Vacuum - Mop 2 Ultra

Na internet jsem se inspiroval některýma knihovnama, které ukazují, že lze můj robotický vysavač ovládat skrze příkazy v Pythonu. Tak jsem se pustil, co je na tom pravdu s vidinou, že bych nepotřeboval oficiální aplikaci, ale mohl využívat scénáře v Node Red.

Nejprve k samotnému binárnímu protokolu Xiaomi. Dle příspěvku Xiaomi's MiHome Binary protocol to vypadá, že komunikace probíhá skrz protokol UDP na portu 54321. Tady je popsána struktura packetu: Xiaomi Mi Home Binary Protocol

Pro instalaci robotického vysavače jsem si musel vytvořit účet v aplikaci od Xiaomi. A přihlašovací údaje do aplikace jsou cestou, jak získat šiforvací token. Tady jsou popsány cesty, jak token získat: Obtain Mi Home device token. Cesty jsou sice komplikované, nicméně článek jsem dal pro úplnost, protože může sloužit jako návod, jak protokol odposlouchávat a vyhledat konkrétní příkazy.

Nicméně pak jsem našel jednodušší cestu pro získání tokenu. A byl to projekt python-miio.

Zde je popis instalace:

pip3 install python-miio

Později jsem potřeboval i aktuální verzi z repozitáře, kterou jsem rozběhal ve virtuálním stroji takto:

git clone https://github.com/rytilahti/python-miio.git
cd python-miio/
pip3 install poetry
poetry install
poetry run miiocli --help

K získání tokenu mi pak stačil tento příkaz:

miiocli cloud list

Zadal jsem přihlašovací jméno do účtu Mi Home a heslo a měl jsem jako výstup token a IP adresu, na které mi robot naslouchá.

Je hodně typů robotů a potřeboval jsem vědět, jak volat svůj model. Chvíli jsem tápal a zkoušel, jestli je podporovaný, než jsem v kódu našel tohle: https://github.com/rytilahti/python-miio/blob/master/miio/integrations/vacuum/dreame/dreamevacuum_miot.py

Pochopil jsem, že můj model patří do dreamevacuum.

Pro vypsání možných příkazů k použití, které jsou implementovány v modulu dreamevacuum zavolám:

miiocli --output json_pretty  dreamevacuum  --ip 192.168.1.108 --token sifrovacitoken --help

Pro zjištění přesného modelu robota, který budu potřebovat pro další volání použiju příkaz:

miiocli --output json_pretty  dreamevacuum  --ip 192.168.1.108 --token sifrovacitoken info

Pro zjištění stavu mého robota poslouží příkaz:

miiocli --output json_pretty  dreamevacuum  --ip 192.168.1.108 --token sifrovacitoken --model dreame.vacuum.p2150a status
  • it/iot/xiaomi-mi-robot-vacuum-mop-2-ultra.1673993627.txt.gz
  • Poslední úprava: 2023/01/17 22:13
  • autor: Petr Nosek