Получение токена для Xiaomi Vacuum Mop P — необходимый шаг, если вы хотите интегрировать робот-пылесос в сторонние системы умного дома (Home Assistant, Node-RED) или использовать альтернативные приложения с расширенным функционалом. Токен — это уникальный 32-символьный ключ, который служит «паролем» для взаимодействия с устройством через API Mi Home. Без него сторонние сервисы не смогут отправлять команды пылесосу.
Проблема в том, что Xiaomi официально не предоставляет токены — их нужно извлекать самостоятельно. В этой статье мы разберём все актуальные методы: от простого копирования из Mi Home (если токен уже отображается) до сложных способов с использованием ADB и специализированных утилит. Важно: некоторые методы требуют root-прав или работы с консолью, поэтому подходите к процессу внимательно.
Если вы новичок, рекомендуем начать с первых двух способов — они не требуют технических навыков. Для опытных пользователей подробно описаны методы с MITM-прокси и декомпиляцией APK, которые дают 100% результат, но занимают больше времени.
1. Способ: Извлечение токена из приложения Mi Home (если он отображается)
Самый простой метод — проверить, не отображается ли токен прямо в Mi Home. Это работает, если:
- 🔹 Вы используете китайскую версию приложения (не глобальную).
- 🔹 Устройство было добавлено в аккаунт до обновления политики безопасности Xiaomi (2021 год).
- 🔹 Пылесос подключён к аккаунту с правами разработчика (например, через Xiaomi Open Platform).
Инструкция:
- Откройте Mi Home и перейдите в профиль устройства Xiaomi Vacuum Mop P.
- Нажмите на три точки (⋮) в правом верхнем углу →
О программе. - Прокрутите вниз до блока
Token(если он есть). Скопируйте 32-значный ключ.
Если токена нет — переходите к следующим методам. Внимание: в глобальной версии Mi Home этот раздел обычно скрыт.
2. Способ: Получение токена через Mi Account (официальный метод для разработчиков)
Если вы разработчик и у вас есть доступ к Xiaomi Open Platform, можно запросить токен легально. Этот способ подходит для тестирования API, но требует:
- 📝 Зарегистрированный аккаунт разработчика на open.home.mi.com.
- 🔐 Подтверждённую почту и телефон (китайский номер не обязателен).
- 💻 Навыки работы с
HTTP-запросамииJSON.
Пошаговая инструкция:
- Авторизуйтесь на account.xiaomi.com и получите
client_idиclient_secretв разделеMi Account API. - Сформируйте запрос на получение токена:
POST https://account.xiaomi.com/oauth2/tokenContent-Type: application/x-www-form-urlencoded
client_id=ВАШ_CLIENT_ID
client_secret=ВАШ_CLIENT_SECRET
grant_type=password
username=ВАШ_EMAIL_ИЛИ_ТЕЛЕФОН
password=ВАШ_ПАРОЛЬ
- В ответе будет поле
mi_token— это и есть ваш токен для API.
⚠️ Внимание: Этот токен даёт доступ ко ВСЕМ устройствам в вашем аккаунте Mi Home. Не передавайте его третьим лицам!
3. Способ: Извлечение токена через ADB (для Android)
Метод требует root-прав на Android-устройстве, но даёт 100% результат. Суть: мы получаем токен из базы данных Mi Home, где он хранится в зашифрованном виде.
Что понадобится:
- 📱 Android-смартфон с root и установленным Mi Home.
- 💻 Компьютер с
ADB(скачать здесь). - 🔧 Утилита
SQLite Browserдля просмотра базы данных.
Инструкция:
- Подключите смартфон к ПК и выполните команду:
adb shellsu
cp /data/data/com.xiaomi.smarthome/databases/mihome.db /sdcard/mihome.db
exit
exit
Это скопирует базу данных Mi Home на карту памяти.
- Скачайте
mihome.dbна компьютер и откройте вSQLite Browser. - Перейдите в таблицу
devicesи найдите строку сmodel = "roborock.vacuum.m1s"(или аналогичным для Vacuum Mop P). - Скопируйте значение из поля
token.
⚠️ Внимание: Если базы нет или она пустая, значит Mi Home хранит данные в облаке. В этом случае попробуйте метод с MITM-прокси (раздел 5).
Отладка по USB включена (Настройки → Для разработчиков)
Установлены драйверы ADB на ПК
Смартфон имеет root-права
Mi Home авторизован и пылесос добавлен в приложение-->
4. Способ: Использование утилиты MiHome-Binary-Protocol
Этот метод подходит для пользователей, у которых нет root, но есть доступ к Python. Мы будем перехватывать трафик между Mi Home и серверами Xiaomi с помощью скрипта.
Инструменты:
- 🐍
Python 3.8+и библиотекаmitmproxy. - 📱 Android-смартфон с установленным сертификатом
mitmproxy. - 🔗 Скрипт com.xiaomi_mihome (fork с поддержкой новых протоколов).
Пошагово:
- Установите
mitmproxy:pip install mitmproxy - Скачайте и запустите скрипт:
git clone https://github.com/Maxmudjon/com.xiaomi_mihome.gitcd com.xiaomi_mihome
python3 mihome_binary_protocol.py
- На смартфоне настройте прокси на
IP вашего ПК:8080и установите сертификатmitmproxy-ca-cert.cer. - Откройте Mi Home, обновите статус пылесоса — в консоли отобразится токен.
Важно: С 2023 года Xiaomi начала шифровать часть трафика. Если скрипт не работает, попробуйте использовать метод с декомпиляцией APK (раздел 6).
Почему Xiaomi скрывает токены?
С 2021 года Xiaomi ужесточила политику безопасности после инцидентов с утечками данных. Токены теперь генерируются динамически и привязываются к сессии, а в открытом виде хранятся только в зашифрованных базах данных или облаке. Это усложняет интеграцию со сторонними системами, но защищает от несанкционированного доступа к устройствам пользователей.
5. Способ: Перехват токена через MITM-прокси (продвинутый)
Этот метод требует навыков работы с сетью и SSL/TLS. Мы будем перехватывать трафик между Mi Home и серверами Xiaomi, чтобы извлечь токен из ответа API.
Необходимое ПО:
- 🌐
FiddlerилиCharles Proxy(для перехвата трафика). - 📱 Android-смартфон с установленным корневым сертификатом прокси.
- 🔍 Знание структуры
HTTP-запросов.
Инструкция:
- Настройте прокси на ПК и перенаправьте трафик со смартфона.
- В
Fiddlerвключите расшифровку HTTPS (Decrypt HTTPS traffic). - Откройте Mi Home и обновите статус пылесоса.
- Найдите запрос к
api.io.mi.comс путьём/app/genTokenили/home/device/list. - В ответе будет поле
"token": "..."— это и есть нужный ключ.
| Метод | Сложность | Требуется root | Работает в 2026 |
|---|---|---|---|
| Извлечение из Mi Home | ⭐ | ❌ Нет | ⚠️ Частично |
| Mi Account API | ⭐⭐ | ❌ Нет | ✅ Да |
| ADB + SQLite | ⭐⭐⭐ | ✅ Да | ✅ Да |
| MiHome-Binary-Protocol | ⭐⭐⭐⭐ | ❌ Нет | ⚠️ Зависит от версии |
| MITM-прокси | ⭐⭐⭐⭐⭐ | ❌ Нет | ✅ Да |
6. Способ: Декомпиляция APK Mi Home (для опытных)
Если ни один из методов не сработал, остаётся реверс-инжиниринг приложения Mi Home. Этот способ требует знаний Java/Smali и работы с JADX или Apktool.
Краткая инструкция:
- Скачайте APK Mi Home (например, с APKPure).
- Декомпилируйте его с помощью
JADX:jadx-gui mihome.apk - Найдите класс, отвечающий за авторизацию (обычно в пакете
com.xiaomi.smarthome). - Ищите методы с названиями
getToken,fetchDeviceTokenили аналогичными. - Проанализируйте логику генерации токена и воспроизведите её в своём коде.
⚠️ Внимание: Декомпиляция может нарушать лицензионное соглашение Xiaomi. Используйте этот метод только для личных целей!
Частые ошибки и их решения
При извлечении токена пользователи сталкиваются с типичными проблемами:
- 🔴 Ошибка 401 Unauthorized при запросе к API → Проверьте
client_secretи регион аккаунта. - 🔴 В базе
mihome.dbнет таблицыdevices→ Обновите Mi Home или используйте MITM-прокси. - 🔴 Токен состоит из одних нулей (
0000...) → Это заглушка. Попробуйте другой метод. - 🔴 Прокси не перехватывает трафик → Убедитесь, что на смартфоне установлен сертификат прокси.
Если вы получаете токен, но он не работает в Home Assistant, проверьте:
- 📌 Совместимость модели (Vacuum Mop P должен поддерживать протокол
miio). - 📌 Регион сервера (китайские устройства требуют аккаунт с регионом
cn). - 📌 Актуальность токена (некоторые ключи действуют ограниченное время).
FAQ: Ответы на популярные вопросы
❓ Можно ли получить токен без root и прокси?
Да, но только если:
- 🔹 У вас китайская версия Mi Home и токен отображается в профиле устройства.
- 🔹 Вы разработчик с доступом к Xiaomi Open Platform.
Во всех остальных случаях потребуется хотя бы один из продвинутых методов.
❓ Почему токен перестал работать после обновления Mi Home?
Xiaomi периодически обновляет протоколы безопасности. Если токен перестал работать:
- Проверьте, не сбросились ли настройки пылесоса (иногда помогает переподключение к Wi-Fi).
- Получите новый токен одним из описанных методов.
- Обновите интеграцию в Home Assistant (например, используйте компонент
xiaomi_miioпоследней версии).
❓ Можно ли использовать один токен для нескольких пылесосов?
Нет. Токен привязан к конкретному устройству (по его DID — уникальному идентификатору). Если у вас несколько Xiaomi Vacuum Mop P, для каждого нужен свой ключ.
❓ Безопасно ли делиться токеном с третьими лицами?
Абсолютно не безопасно. Токен даёт полный контроль над устройством:
- 🔴 Злоумышленник может управлять пылесосом (включать/выключать, менять настройки).
- 🔴 В некоторых случаях — получить доступ к другим устройствам в вашем аккаунте Mi Home.
- 🔴 Xiaomi может заблокировать аккаунт за подозрительную активность.
Если вам нужна помощь с настройкой — предоставляйте токен только проверенным сервисам (например, официальным интеграциям Home Assistant).
❓ Как проверить, работает ли токен?
Отправьте тестовый запрос к API пылесоса. Пример на Python:
import requests
DID = "YOUR_DEVICE_ID" # Найдите в Mi Home или через ADB
TOKEN = "YOUR_TOKEN"
IP = "192.168.x.x" # Локальный IP пылесоса
url = f"http://{IP}/miio/info"
headers = {"X-Xiaomi-Propertys": '["miIO.info"]'}
response = requests.get(url, headers=headers, cookies={"userId": DID, "serviceToken": TOKEN})
print(response.json())
Если ответ содержит данные о устройстве (модель, прошивка) — токен действует.