Π ΠΎΠ±ΠΎΡΡ-ΠΏΡΠ»Π΅ΡΠΎΡΡ Xiaomi Π΄Π°Π²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ Π±ΡΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ β ΠΎΠ½ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΠΈΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠΌΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΎΡΠΊΡΡΡΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.hether Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΡΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ»Π΅ΡΠΎΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ° ΠΈΠ»ΠΈ Π²ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΠΠ‘ β ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Roborock S8 Pro Ultra, DreameBot X30 Ultra ΠΈΠ»ΠΈ Viomi V3) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π· ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π΄Π°ΠΆΠ΅ Π±Π°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π· Mi Home ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Python-ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΎΠΉ ΡΠ΅ΡΠ΅Π· ADB.
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠΎΠ²-ΠΏΡΠ»Π΅ΡΠΎΠ² Xiaomi β ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· API ΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Roborock Π½Π° Π±Π°Π·Π΅ STM32) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ, ΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° MT7688. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π²Π°Ρ ΠΏΡΠ»Π΅ΡΠΎΡ Π² Β«ΠΊΠΈΡΠΏΠΈΡΒ», Π° ΠΎΡΠΊΡΡΡΡΠ΅ ΠΏΠΎΡΡΡ β Π² Π»Π°ΠΊΠΎΠΌΡΡ ΡΠ΅Π»Ρ Π΄Π»Ρ Ρ
Π°ΠΊΠ΅ΡΠΎΠ².
ΠΡΠ»ΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ² IoT, Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΠ΅ΡΠ²ΡΡ
Π΄Π²ΡΡ
ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² β ΡΠ°ΠΌ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΏΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ ΠΏΡΠΎ API, Python-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π²ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ β ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΡ ΠΌΠΎΠ΄Π΅Π»Ρ.
1. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°: ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΠΎΡΠ°-ΠΏΡΠ»Π΅ΡΠΎΡΠ° ΠΈ Π΅Π³ΠΎ Β«ΠΆΠ΅Π»Π΅Π·Π½ΡΡΒ» ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° Rockchip RK3308 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, DreameBot D9) ΠΈ STM32F4 (Roborock S5 Max) ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. Π£Π·Π½Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ:
- π Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ (ΠΈΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π»
Hardware Specifications). - π οΈ Π Π°Π·ΠΎΠ±ΡΠ°Π² ΠΏΡΠ»Π΅ΡΠΎΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π² ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΏΠ»Π°ΡΠ΅ (ΡΡΠ΅Π±ΡΠ΅Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΡΡΠΈ!).
- π± Π§Π΅ΡΠ΅Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Mi Home: ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° β ΠΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ β ΠΠΎΠ΄Π΅Π»Ρ.
ΠΡΠΎΡΠΎΠΉ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. Π£ΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎ 3.5.8 Π΄Π»Ρ Roborock) ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ API ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ:
- π² Π
Mi Home:ΠΡΠΎΡΠΈΠ»Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π° β Π’ΡΠΈ ΡΠΎΡΠΊΠΈ β Π€ΠΈΡΠΌΠ²Π΅ΡΠ°. - π₯οΈ Π§Π΅ΡΠ΅Π·
SSH(Π΅ΡΠ»ΠΈ Π΅ΡΡΡ root-Π΄ΠΎΡΡΡΠΏ): ΠΊΠΎΠΌΠ°Π½Π΄Π°cat /etc/version
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π ΠΎΠ±ΠΎΡΡ-ΠΏΡΠ»Π΅ΡΠΎΡΡ Xiaomi Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ Viomi (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Viomi V2) ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π΄Π»Ρ Roborock. ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΠΊΡΠΏΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΎΠΉ ΡΡΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ Π²ΡΠΎΠ΄Π΅ XDA Developers.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:
| ΠΠ°Π΄Π°ΡΠ° | ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
|---|---|---|
| ΠΠ°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° | Mi Home (Android/iOS), Π°ΠΊΠΊΠ°ΡΠ½Ρ Xiaomi |
ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API. |
| Π Π°Π±ΠΎΡΠ° Ρ API | Python 3.8+, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-miio |
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π· |
| ΠΡΠΎΡΠΈΠ²ΠΊΠ° | ADB, Fastboot, ΠΊΠ°Π±Π΅Π»Ρ USB-Type-C |
ΠΠ»Ρ Roborock S7 Π½ΡΠΆΠ΅Π½ ΠΊΠ°Π±Π΅Π»Ρ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ OTG. |
| ΠΡΠ»Π°Π΄ΠΊΠ° | Wireshark, TCPdump |
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°. |
2. ΠΠ°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π· Mi Home: ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π·ΠΎΠ½Ρ, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ
ΠΠ°ΠΆΠ΅ Π±Π΅Π· Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Mi Home ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ ΡΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ:
Π Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- β° ΠΠ°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΠΊΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π½ΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅Ρ Π΄ΠΎΠΌΠ°).
- π‘οΈ ΠΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΊ ΠΏΠΎΠ³ΠΎΠ΄Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ (ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Xiaomi Weather).
- π Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΏΡΠ»Π΅ΡΠΎΡΠΈΡΡ, ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠΌΡΡΡ ΠΏΠΎΠ»Β»).
Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅:
- ΠΡΠΊΡΠΎΠΉΡΠ΅
Mi Homeβ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠ»Π΅ΡΠΎΡ. - ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²
Π£Π±ΠΎΡΠΊΠ° β Π Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅. - ΠΠ°ΠΆΠΌΠΈΡΠ΅
ΠΠΎΠ±Π°Π²ΠΈΡΡΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π΄Π½ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ, Π²ΡΠ΅ΠΌΡ, ΡΠΈΠΏ ΡΠ±ΠΎΡΠΊΠΈ. - Π ΡΠ°Π·Π΄Π΅Π»Π΅
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ ΠΎΠΏΡΠΈΡΠΠ²ΡΠΎΠΎΡΠΈΡΡΠΊΠ° ΠΏΡΠ»Π΅ΡΠ±ΠΎΡΠ½ΠΈΠΊΠ°(Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ Π΄ΠΎΠΊ-ΡΡΠ°Π½ΡΠΈΠ΅ΠΉ).
ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ ΠΈ Π·ΠΎΠ½Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π±Π΅Π· ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π±Π°ΡΡΠ΅ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΏΡΠ»Π΅ΡΠΎΡΡ Π·Π°Π΅Π·ΠΆΠ°ΡΡ Π² Π΄Π΅ΡΡΠΊΡΡ ΠΊΠΎΠΌΠ½Π°ΡΡ ΠΈΠ»ΠΈ Π·ΠΎΠ½Ρ Ρ ΠΊΠΎΠ²ΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- Π
Mi HomeΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠ°ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ. - ΠΠ°ΠΆΠΌΠΈΡΠ΅
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ β ΠΠΎΠ±Π°Π²ΠΈΡΡ Π·ΠΎΠ½Ρ/ΡΡΠ΅Π½Ρ. - ΠΠ°ΡΠΈΡΡΠΉΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ Π½Π° ΠΊΠ°ΡΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΡΡ Roborock Π΄ΠΎ2021 Π³ΠΎΠ΄Π°ΠΌΠΎΠ³ΡΡ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΊΠ°ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π·ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ β ΠΠ°ΡΡΠ° β Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ.
ΠΠ»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π· Π³ΠΎΠ»ΠΎΡΠ° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠ»ΠΈΡΠ° ΠΈΠ»ΠΈ Google Assistant). Π§ΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ ΠΏΡΠ»Π΅ΡΠΎΡ Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΠΌ Π°ΡΡΠΈΡΡΠ΅Π½ΡΠΎΠΌ:
- Π
Mi HomeΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΡΠΎΡΠΈΠ»Ρ β ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ β ΠΠΎΠ»ΠΎΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡ (Π―Π½Π΄Π΅ΠΊΡ, Google, Siri) ΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ.
- Π‘ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΈΠΏΠ°: Β«ΠΠ»ΠΈΡΠ°, Π²ΠΊΠ»ΡΡΠΈ ΠΏΡΠ»Π΅ΡΠΎΡ Π½Π° ΠΊΡΡ Π½Π΅Β».
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡΠ° ΠΊ Wi-Fi (2.4 GHz)
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Mi Home Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ
Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ Π²Π°ΡΠ΅ΠΌΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ Xiaomi
Π‘ΠΊΠ°ΡΠ°ΡΡ ΠΊΠ°ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ Π΅ΡΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΎ)-->
3. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ°: ΠΊΠ°ΠΊ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ API ΡΠΎΠ±ΠΎΡΠ°-ΠΏΡΠ»Π΅ΡΠΎΡΠ°
ΠΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Python ΠΈΠ»ΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Home Assistant) Π½ΡΠΆΠ΅Π½ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° β ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Xiaomi Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ
ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½:
- Π§Π΅ΡΠ΅Π· MITM-ΠΏΡΠΎΠΊΡΠΈ (Π΄Π»Ρ Android):
- π± Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½
Packet CaptureΠΈΠ»ΠΈFiddler. - π ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π·Π°Ρ
Π²Π°Ρ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ Π²
Mi Home. - π ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π² Π»ΠΎΠ³Π°Ρ
Π·Π°ΠΏΡΠΎΡ ΠΊ
api.io.mi.comΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌdeviceId. - Π§Π΅ΡΠ΅Π· ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ iOS (ΠΎΠ±Ρ ΠΎΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ):
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Mi Home (ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΆΠ΅ΠΉΠ»Π±ΡΠ΅ΠΉΠΊ).
- π Π’ΠΎΠΊΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- Π§Π΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (Π΄Π»Ρ Π²Π΅Π±-Π²Π΅ΡΡΠΈΠΈ Mi Home):
- π ΠΡΠΊΡΠΎΠΉΡΠ΅ Π²Π΅Π±-Π²Π΅ΡΡΠΈΡ Mi Home Π²
Chrome. - π§ ΠΠ°ΠΆΠΌΠΈΡΠ΅
F12βConsoleΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅:Object.values(miio.env.devices).map(d => ({id: d.deviceID, token: d.token}))
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ΠΎΠΊΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²ΡΠ·Π°Π½ΠΎ ΠΎΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π₯ΡΠ°Π½ΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² KeePass) ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΡΠ΅ΡΡΠΈΠΌ Π»ΠΈΡΠ°ΠΌ β ΡΡΠΎ Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²Π°ΡΠΈΠΌ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°:
70:7f:2c:1c:4f:9a:7a:d8:6f:b1:5d:c4:3a:8f:ee:9b
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠΎΠΊΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Python-ΡΠΊΡΠΈΠΏΡ:
from miio import Vacuum
vacuum = Vacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")
print(vacuum.status)
ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°ΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, {'state': 8,'battery': 100}), ΡΠΎΠΊΠ΅Π½ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ. ΠΡΠΈΠ±ΠΊΠ° DeviceException ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΠΊΠ΅Π½ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ offline.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ?
ΠΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΡΠΈΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ:
1. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ β Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΡΡ Viomi).
2. Π‘Π±ΡΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° β ΠΏΡΠΈ ΠΎΡΠ²ΡΠ·ΠΊΠ΅ ΠΎΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Xiaomi ΡΠΎΠΊΠ΅Π½ Π°Π½Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ.
3. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ° β Π΅ΡΠ»ΠΈ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΏΠΎΠ»ΡΡΠΈΠ» Π½ΠΎΠ²ΡΠΉ IP ΠΏΠΎ DHCP, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ .
4. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Xiaomi β ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ) Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½.
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΡΡΡΠΏ:
- ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π°.
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ Π»ΠΈ deviceID (ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Mi Home β ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°).
- ΠΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΊ Π·Π°Π²ΠΎΠ΄ΡΠΊΠΈΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ (ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ 10 ΡΠ΅ΠΊΡΠ½Π΄).
4. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Python: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-miio ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° python-miio β ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ±ΠΎΡΠΎΠ²-ΠΏΡΠ»Π΅ΡΠΎΠ² Xiaomi. ΠΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Π²ΠΊΠ»ΡΡΠ°Ρ Roborock, Dreame, Viomi) ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ:
pip install python-miio --upgrade
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ:
from miio import Vacuum
import time
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ
vacuum = Vacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
vacuum.start # ΠΠ°ΡΠ°ΡΡ ΡΠ±ΠΎΡΠΊΡ
time.sleep(10) # ΠΠ°ΡΠ·Π° 10 ΡΠ΅ΠΊΡΠ½Π΄
vacuum.pause # ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ
vacuum.home # ΠΠ΅ΡΠ½ΡΡΡΡΡ Π½Π° Π±Π°Π·Ρ
vacuum.status # ΠΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°ΡΡΡ
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠ±ΠΎΡΠΊΠ° ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ Ρ ΡΡΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Ρ Π±Π°ΡΠ°ΡΠ΅ΠΈ:
from miio import Vacuum
import schedule
import time
def check_and_clean:
vacuum = Vacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")
status = vacuum.status
if status.battery > 50: # ΠΡΠ»ΠΈ Π·Π°ΡΡΠ΄ Π±ΠΎΠ»ΡΡΠ΅ 50%
vacuum.start
print("Π£Π±ΠΎΡΠΊΠ° Π½Π°ΡΠ°ΡΠ°")
else:
print("ΠΠ°ΡΡΠ΄ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½ΠΈΠ·ΠΊΠΈΠΉ")
ΠΠ°ΠΏΡΡΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π² 14:00
schedule.every.day.at("14:00").do(check_and_clean)
while True:
schedule.run_pending
time.sleep(60)
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΡΠ°ΠΌΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ Π·ΠΎΠ½Π°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ (ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ API ΠΊΠ°ΡΡ)
map_data = vacuum.get_map
print(map_data)
Π£Π±ΠΎΡΠΊΠ° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ [x1, y1, x2, y2])
vacuum.clean_zone([18000, 22000, 22000, 26000])
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π·ΠΎΠ½ ΡΠ±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠ»Π΅ΡΠΎΡΠ° ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. ΠΠ»Ρ Roborock S7 ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ³Π»Π° ΠΊΠ°ΡΡΡ (0,0), Π° Π΄Π»Ρ DreameBot X30 β Ρ ΡΠ΅Π½ΡΡΠ°. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠΎΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΊΠ°ΡΡΡ ΡΠ΅ΡΠ΅Π· vacuum.get_map ΠΈ ΠΈΠ·ΡΡΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
.
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Home Assistant Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ configuration.yaml:
vacuum:
- platform: xiaomi_miio
host: 192.168.1.100
token: YOUR_TOKEN_HERE
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Home Assistant ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΠ΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
5. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ: Valetudo, OpenMiHome ΠΈ ΡΠΈΡΠΊΠΈ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΠ Xiaomi ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ: ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π΅Π· ΠΎΠ±Π»Π°ΠΊΠ°, Π·Π°ΠΊΡΡΡΡΠ΅ API Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π²ΡΠΎΠ΄Π΅ Valetudo ΠΈΠ»ΠΈ OpenMiHome ΡΠ΅ΡΠ°ΡΡ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ.
Valetudo β ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ:
- π ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΎΠ±Π»Π°ΠΊΠ° Xiaomi.
- π Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·ΠΎΠ½.
- π§ ΠΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ API ΡΠ΅ΡΠ΅Π·
RESTΠΈΠ»ΠΈMQTT. - π‘οΈ ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: Π½Π΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΠΈΡΠ°ΠΉ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Valetudo Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ:
| ΠΠΎΠ΄Π΅Π»Ρ | ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° | ΠΠ΅ΡΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ |
|---|---|---|
| Roborock S5/S5 Max | β ΠΠΎΠ»Π½Π°Ρ | Π§Π΅ΡΠ΅Π· SSH + Docker |
| Roborock S6/S7 | β ΠΠΎΠ»Π½Π°Ρ | Π§Π΅ΡΠ΅Π· ADB + root |
| Dreame D9/D10 | β οΈ Π§Π°ΡΡΠΈΡΠ½Π°Ρ | Π’ΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ |
| Viomi V2/V3 | β ΠΠ΅Ρ | ΠΠ°ΠΊΡΡΡΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° |
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Valetudo Π½Π° Roborock S5:
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ
ValetudoΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°. - ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ ΠΏΡΠ»Π΅ΡΠΎΡΡ ΠΏΠΎ
SSH(Π»ΠΎΠ³ΠΈΠ½Ρ/ΠΏΠ°ΡΠΎΠ»ΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π·Π΄Π΅ΡΡ). - ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΉΠ»
valetudoΠ½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ:scp valetudo root@192.168.1.100:/mnt/UDISK/ - Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ:
chmod +x /mnt/UDISK/valetudo - ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ:
echo"/mnt/UDISK/valetudo" >> /mnt/default/autostart.sh - ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡ:
reboot
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Valetudo Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://[IP_ΠΏΡΠ»Π΅ΡΠΎΡΠ°]:8080. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- πΊοΈ Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- π‘ Π£ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠ΅Π·
MQTT. - π ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· ΠΎΠ±Π»Π°ΠΊΠ°.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π°Π½Π½ΡΠ»ΠΈΡΡΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡ Xiaomi ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎΠΌΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Π²Π΅ΡΠ½Π°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° Π½Π° Roborock S7 Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. ΠΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:dd if=/dev/mtdblock0 of=/mnt/UDISK/backup.bin
OpenMiHome β Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ, Π½ΠΎ ΠΎΠ½ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Home Assistant ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ β ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Xiaomi Π±Π΅Π· ΠΎΠ±Π»Π°ΠΊΠ°.
6. Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΌΠ½ΡΠΌ Π΄ΠΎΠΌΠΎΠΌ ΠΈ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ
Π ΠΎΠ±ΠΎΡ-ΠΏΡΠ»Π΅ΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΡΡΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°, ΡΠ²ΡΠ·Π°Π² Π΅Π³ΠΎ Ρ Home Assistant, Node-RED ΠΈΠ»ΠΈ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Home Assistant ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- π ΠΠ°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅Ρ Π΄ΠΎΠΌΠ° ΠΈ Π±Π°ΡΠ°ΡΠ΅Ρ Π·Π°ΡΡΠΆΠ΅Π½Π°Β»).
- π Π‘Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠ»Π΅ΡΠΎΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π΅ΡΠ»ΠΈ ΠΎΠΊΠ½ΠΎ ΠΎΡΠΊΡΡΡΠΎ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡΒ»).
- π ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Π΄Π°ΡΠ±ΠΎΡΠ΄Π΅.
ΠΡΠΈΠΌΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π² Home Assistant (ΡΠ°ΠΉΠ» automations.yaml):
- alias:"Π£Π±ΠΎΡΠΊΠ° ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΎΠΊΠ½Π°"
trigger:
platform: time
at:"15:00:00"
condition:
- condition: state
entity_id: binary_sensor.window_contact
state:"off" # ΠΠΊΠ½ΠΎ Π·Π°ΠΊΡΡΡΠΎ
- condition: numeric_state
entity_id: sensor.roborock_battery
above: 50
action:
- service: vacuum.start
target:
entity_id: vacuum.roborock_s7
ΠΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΠ»ΠΈΡΡ/Google Assistant Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Yandex IoT ΠΈΠ»ΠΈ Google Home. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- Π
Mi HomeΡΠ²ΡΠΆΠΈΡΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡ Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΠΌ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠΌ (ΡΠ°Π·Π΄Π΅Π»ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ β ΠΠΎΠ»ΠΎΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ). - Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° (ΠΠ»ΠΈΡΠ° ΠΈΠ»ΠΈ Google Home) Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π·
ΠΠΎΠ±Π°Π²ΠΈΡΡ β Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ. - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΡΡΠΈΠ½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΠ»ΠΈΡΠ°, Π½Π°ΡΠ½ΠΈ ΡΠ±ΠΎΡΠΊΡ Π½Π° ΠΊΡΡ Π½Π΅Β»).
ΠΠ»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Node-RED. ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½ΠΎΠ΄Ρ
node-red-contrib-mi-home. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΊ Ρ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
injectΠΈΠ»ΠΈMQTT). - ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π½ΠΎΠ΄Ρ
mi-vacuumΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Π΅Ρ Ρ IP ΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
start,pause,zone_clean).
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Telegram-Π±ΠΎΡΠΎΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ. ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Python:
import telebot
from miio import Vacuum
bot = telebot.TeleBot("YOUR_TELEGRAM_BOT_TOKEN")
vacuum = Vacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")
@bot.message_handler(commands=['start'])
def start(message):
vacuum.start
bot.reply_to(message,"ΠΡΠ»Π΅ΡΠΎΡ Π½Π°ΡΠ°Π» ΡΠ±ΠΎΡΠΊΡ!")
@bot.message_handler(commands=['stop'])
def stop(message):
vacuum.pause
bot.reply_to(message,"ΠΡΠ»Π΅ΡΠΎΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.")
bot.polling
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π·TelegramΠΈΠ»ΠΈMQTT) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠΊΡΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΡ ΠΏΡΠ»Π΅ΡΠΎΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅VPN(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, WireGuard) ΠΈΠ»ΠΈCloudflare TunnelΠ΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
7. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ±ΡΠΎΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ±ΠΎΡΠΎΠ²-ΠΏΡΠ»Π΅ΡΠΎΠ² Xiaomi ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠΈΠΏΠΈΡΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ. Π Π°Π·Π±Π΅ΡΡΠΌ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ±ΠΊΠ°: Β«Unable to connect to the vacuumΒ»
- π ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ
Python-ΡΠΊΡΠΈΠΏΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. - π ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡ (ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ 5 ΡΠ΅ΠΊΡΠ½Π΄).
- π‘ Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΎΠΊΠ΅Π½ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΡΠ΅Π·
Mi Home). - π‘οΈ ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π±ΡΠ°Π½Π΄ΠΌΠ°ΡΡΡ Π½Π° ΡΠΎΡΡΠ΅ΡΠ΅ (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ
UDP-ΠΏΠ°ΠΊΠ΅ΡΡ).
ΠΡΠΈΠ±ΠΊΠ°: Β«Invalid tokenΒ»
- π ΠΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½ (ΡΡΠ°ΡΡΠΉ ΠΌΠΎΠ³ ΠΈΡΡΠ΅ΡΡ).
- π± ΠΠ΅ΡΠ΅ΠΏΡΠΈΠ²ΡΠΆΠΈΡΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΊ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ Xiaomi.
- π ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
python-miio:
pip install --upgrade python-miio
ΠΡΠ»Π΅ΡΠΎΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½Π° Π±Π°Π·Ρ
- π§ ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΡΠ±ΠΈΠ»Π°ΡΡ Π»ΠΈ ΠΊΠ°ΡΡΠ° (ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Ρ Π²
Mi Home). - π Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π±Π°ΡΠ°ΡΠ΅Ρ Π·Π°ΡΡΠΆΠ΅Π½Π° Ρ ΠΎΡΡ Π±Ρ Π½Π° 20%.
- π‘ ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ Π΄ΠΎΠΊ-ΡΡΠ°Π½ΡΠΈΡ Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΊΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 1.5 ΠΌ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ).
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΏΡΠ»Π΅ΡΠΎΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ (Β«ΠΊΠΈΡΠΏΠΈΡΒ»)
- π ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ±ΡΠΎΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ: ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ 10β15 ΡΠ΅ΠΊΡΠ½Π΄.
- π₯οΈ ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π·
UART(Π½ΡΠΆΠ΅Π½USB-TTLΠ°Π΄Π°ΠΏΡΠ΅Ρ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠ΅ΠΉΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ. - π§ ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ Π² issue Π½Π° GitHub Ρ Π»ΠΎΠ³Π°ΠΌΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΠ»ΠΈ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΡΠΊΠ°ΡΠΈΡΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ Π²Π΅ΡΡΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΊ ΠΠ ΡΠ΅ΡΠ΅Π·
USB. - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ ΡΠ΅ΡΠ΅Π·
ADB:adb push firmware.bin /sdcard/adb shell"flash_image misc /sdcard/firmware.bin"
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΌΠΈΠ³Π°Π΅Ρ ΠΊΡΠ°ΡΠ½ΡΠΌ ΠΈ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°. ΠΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· JTAG ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΡΠ΅Π½ΡΡ. Π‘Π°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ· ΡΡΡΠΎΡ.
8. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: ΠΊΠ°ΠΊ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠ»Π΅ΡΠΎΡ ΠΎΡ Ρ Π°ΠΊΠ΅ΡΠΎΠ²
Π ΠΎΠ±ΠΎΡΡ-ΠΏΡΠ»Π΅ΡΠΎΡΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ β ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΌΠΈΡΠ΅Π½Ρ Π΄Π»Ρ Ρ Π°ΠΊΠ΅Ρ