Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Následující verze | Předchozí verze | ||
| it:iot:xiaomi-mi-robot-vacuum-mop-2-ultra [2023/01/17 21:47] – vytvořeno 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:// | ||
| + | ===== 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:// | ||