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
získání šifrovacího tokenu
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á.
volání mého zařízení
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