Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
it:iot:xiaomi-mi-robot-vacuum-mop-2-ultra [2023/01/17 21:50] – Petr Nosek | it:iot:xiaomi-mi-robot-vacuum-mop-2-ultra [2023/01/17 22:47] (aktuální) – [raw_command, get_property_by, call_action_by] Petr Nosek | ||
---|---|---|---|
Řádek 3: | Řádek 3: | ||
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. | 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 [[https:// | + | Nejprve k samotnému binárnímu protokolu Xiaomi. Dle příspěvku [[https:// |
+ | ===== 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: [[https:// | ||
+ | |||
+ | Nicméně pak jsem našel jednodušší cestu pro získání tokenu. A byl to projekt [[https:// | ||
+ | |||
+ | Zde je [[https:// | ||
+ | |||
+ | <code bash> | ||
+ | pip3 install python-miio | ||
+ | </ | ||
+ | |||
+ | Později jsem potřeboval i aktuální verzi z repozitáře, | ||
+ | |||
+ | <code bash> | ||
+ | git clone https:// | ||
+ | cd python-miio/ | ||
+ | pip3 install poetry | ||
+ | poetry install | ||
+ | poetry run miiocli --help | ||
+ | </ | ||
+ | |||
+ | |||
+ | K získání tokenu mi pak stačil tento příkaz: | ||
+ | <code bash> | ||
+ | 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á. | ||
+ | |||
+ | |||
+ | |||
+ | ===== posílání příkazů na robota ===== | ||
+ | |||
+ | 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ý, | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli --output json_pretty | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pro zjištění přesného modelu robota, který budu potřebovat pro další volání použiju příkaz: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli --output json_pretty | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pro zjištění stavu mého robota poslouží příkaz: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli --output json_pretty | ||
+ | </ | ||
+ | |||
+ | Pro můj model je omezená možnost příkazů, skrze miiocli. Našel jsem ovšem nějaké záhadný příkazy, o kterých jsem dlouho bádal, jak zavolat. V [[https:// | ||
+ | |||
+ | Podařilo se mi spustit pouze tento: | ||
+ | |||
+ | <code bash> | ||
+ | poetry run miiocli genericmiot --ip 192.168.1.108 --token sifrovacitoken actions | ||
+ | </ | ||
+ | |||
+ | Ale z výstupu jsem nebyl moc moudrý. Očekával jsem, že kromě actions se mi podaří jesště zavolat status, set a call, ale to se mi nepodařilo. | ||
+ | |||
+ | |||
+ | ==== příkazy: raw_command, | ||
+ | |||
+ | U těchto funkcí jsem pořád nemohl přijít na funkčnost, až po několika hodinách jsem zkoušením a hledáním ve zdrojovém kódu přišel na odpověď. | ||
+ | |||
+ | Ze [[https:// | ||
+ | |||
+ | Později jsem vyčetl, že čísla siid a aiiid + vysvětlení jaké funkce volají jsou dokumentaci mého mopu: https:// | ||
+ | |||
+ | A jak tedy zavolat příkaz?: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli dreamevacuum --ip 192.168.1.108 --token sifrovanytoken --model dreame.vacuum.p2150a raw_command action ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | To byla akce. Pro čtení zase tento příkaz - vrací mi hodnotu baterie: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli dreamevacuum --ip 192.168.1.108 --token sifrovanytoken --model dreame.vacuum.p2150a raw_command get_properties ' | ||
+ | </ | ||
+ | |||
+ | Ještě by mělo fungovat set_properties na konci a vrátit pole s objektem json, kde bude siid, aiid a typoval bych, že hodnota bude value. To jsem ale nezkoušel. | ||
+ | |||
+ | A pak mě napadlo vyzkoušet i funkce call_action_by a get_property_by a fungovalo to: | ||
+ | |||
+ | <code bash> | ||
+ | miiocli dreamevacuum --ip 192.168.1.108 --token sifrovacitoken --model dreame.vacuum.p2150a call_action_by 7 1 | ||
+ | miiocli dreamevacuum --ip 192.168.1.108 --token sifrovacitoken --model dreame.vacuum.p2150a get_property_by 2 1 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== shrnutí ==== | ||
+ | |||
+ | K dokonalosti mi bohužel schází implementace výběru konkrétní místnosti, kterou chci vysávat. To se mi zatím nepodařilo. | ||
+ | Při hledání jsem narazil na projekt, kdy už někdo vytvářel kobminaci Home Assistenta, Noderedu a Xiaomi vysavače: [[https:// |