Робот-пылесос Xiaomi Vacuum Mop Pro (модели STYJ02YM, STYTJ01ZHM и аналоги) требует токена доступа для интеграции со сторонними системами умного дома — от Home Assistant до Node-RED. Без этого уникального кода вы не сможете управлять устройством через API, автоматизировать уборку по расписанию или получать данные о статусе батареи. Проблема в том, что Xiaomi не предоставляет токен открыто: его нужно извлекать самостоятельно.
В этой статье мы разберём все актуальные способы получения токена для Vacuum Mop Pro — от официального метода через Mi Home до обхода ограничений с помощью Python-скриптов и MITM-атак. Вы узнаете, какие инструменты понадобятся, как избежать блокировки аккаунта и что делать, если токен suddenly перестал работать. А ещё — единственный легальный способ получить токен без риска потерять гарантию (спойлер: он связан с официальным API Xiaomi Cloud).
1. Что такое токен Xiaomi и зачем он нужен
Токен (или authentication token) — это уникальный 32-значный ключ, который идентифицирует ваше устройство в экосистеме Xiaomi. Он генерируется серверами компании при первом подключении пылесоса к аккаунту Mi Account и используется для:
- 🔐 Аутентификации запросов к API пылесоса (например, команды
start,pause,get_status). - 📊 Чтения телеметрии: уровень заряда, карты уборки, ошибки датчиков.
- 🤖 Интеграции со сторонними системами (Home Assistant, ioBroker, OpenHab).
- ⚙️ Настройки скрытых параметров, недоступных в стандартном приложении Mi Home.
Без токена вы ограничены функционалом официального приложения. Например, не сможете:
- 📅 Запускать уборку по расписанию через Google Assistant или Алису.
- 🗺️ Экспортировать карты помещений для анализа в Python или QGIS.
- ⚡ Увеличивать мощность всасывания выше лимитов, установленных Xiaomi.
⚠️ Внимание: Токен привязан к конкретному устройству и аккаунту Mi Account. Если вы сбросите пылесос к заводским настройкам или измените регион аккаунта, токен станет недействительным. Также Xiaomi может аннулировать токен при подозрении на злоупотребление API (например, слишком частые запросы).
2. Официальный способ: получение токена через Mi Home (без рисков)
Это единственный метод, который не нарушает пользовательское соглашение Xiaomi и не требует технических навыков. Однако он работает только для пользователей из Китая или тех, кто привязал пылесос к китайскому серверу (cn). Если ваш аккаунт зарегистрирован в регионе ru, eu или us, переходите к способу №3.
Пошаговая инструкция:
- Откройте приложение Mi Home (версия не ниже
6.5.400). - Перейдите в профиль →
Настройки → Общие настройки → Региони выберите Китай . - Добавьте пылесос в приложение (если он ещё не привязан).
- Перейдите на страницу устройства →
Настройки (⚙️) → Общие → О программе. - Нажмите 5 раз подряд на поле с версией прошивки. Появится скрытое меню.
- Выберите пункт
Get Token(может называтьсяTokenна китайском). - Скопируйте отображаемый код — это и есть ваш токен.
Если пункт Get Token отсутствует, значит:
- 🔹 Ваш аккаунт не привязан к китайскому серверу.
- 🔹 Версия приложения Mi Home устарела (обновите через APKMirror).
- 🔹 Xiaomi удалила эту функцию для вашей модели пылесоса (актуально для устройств, выпущенных после 2023 года).
3. Альтернативный метод: извлечение токена через MITM-атаку (для продвинутых)
Если официальный способ не сработал, можно перехватить токен при помощи Man-in-the-Middle (MITM) атаки. Этот метод требует навыков работы с Python, Wireshark или Fiddler, но даёт 100% результат. Суть в том, что вы подменяете сервер Xiaomi своим ПК и"прослушиваете" трафик между приложением Mi Home и облаком.
Что понадобится:
- 💻 Компьютер с Python 3.8+ и библиотекой
mitmproxy. - 📱 Android-смартфон с root-правами или возможность установки пользовательского сертификата.
- 🌐 Локальная сеть (пылесос и телефон должны быть подключены к одной Wi-Fi-точке).
Инструкция:
- Установите
mitmproxy:pip install mitmproxy - Запустите прокси-сервер:
mitmproxy --mode transparent --showhost - На смартфоне настройте прокси на IP вашего ПК и порт
8080. - Установите сертификат
mitmproxyна телефон (инструкция: документация). - Откройте Mi Home и выполните любое действие с пылесосом (например, запустите уборку).
- В логах
mitmproxyнайдите запрос кapi.io.mi.comс параметромtoken.
Пример успешного перехвата:
GET /app/genToken?clientId=...&signature=...
Host: api.io.mi.com
Response: {"token":"a1b2c3d4e5f6...","expire": 1672531200}
⚠️ Внимание: Xiaomi может заблокировать ваш аккаунт за подозрительную активность, если вы будете отправлять слишком много запросов к API. Используйте этот метод только для извлечения токена, а не для массового опроса серверов. Рекомендуемый интервал между запросами — не менее 5 секунд.
Что делать, если MITM не работает?
Если трафик не перехватывается, проверьте:
1. На телефоне отключён VPN или другие прокси.
2. Сертификат mitmproxy установлен в доверенные (на Android: Настройки → Безопасность → Доверенные сертификаты).
3. В Mi Home отключено шифрование трафика (если есть такая опция).
4. Пылесос и телефон подключены к одной сети (без разделения на гостевую и основную).
4. Использование Python-скриптов для автоматического получения токена
Для пользователей, не желающих возиться с mitmproxy, есть готовые скрипты на Python, которые автоматизируют процесс. Один из самых надёжных — miio-cli от сообщества OpenMiHome. Он работает через облако Xiaomi и не требует root-прав.
Установка и запуск:
- Установите
miio-cli:pip install python-miio - Авторизуйтесь в Mi Account:
miio --discover --sync-cloud(введите логин и пароль от вашего аккаунта).
- Получите список устройств:
miio devices - Скопируйте токен для нужного пылесоса:
miio inspect --ip [IP_пылесоса] --token [временный_токен]
Пример вывода:
Device ID: 12345678
Model: roborock.vacuum.m1s (Xiaomi Vacuum Mop Pro)
Token: 6a5f4e3d2c1b0a9876543210fedcba98
Firmware: 3.5.9_1838
Преимущества метода:
- ✅ Не требует root или модификации телефона.
- ✅ Работает для любых регионов (
ru,eu,us). - ✅ Поддерживает двухуровневую аутентификацию (если включена в аккаунте).
Недостатки:
- ❌ Xiaomi может заблокировать аккаунт при частых запросах.
- ❌ Требует знания командной строки.
☑️ Подготовка к работе со скриптом
5. Извлечение токена из бэкапа Mi Home (для Android)
Если у вас есть резервная копия данных Mi Home (созданная через ADB Backup или Titanium Backup), токен можно извлечь из неё без подключения к пылесосу. Этот метод подходит, если устройство сломано или находится в другом месте.
Инструкция:
- Создайте бэкап Mi Home:
adb backup -f mihome.ab -app com.xiaomi.smarthome - Распакуйте архив
mihome.abс помощью Android Backup Extractor. - Откройте файл
apps/com.xiaomi.smarthome/db/mihome.dbв SQLite Browser. - Выполните запрос:
SELECT token FROM devices WHERE model LIKE'%vacuum%';
Если токен в базе отсутствует, попробуйте:
- 🔍 Поискать в таблице
account(иногда токен хранится там в зашифрованном виде). - 🔍 Проверить бэкап на наличие файлов с расширением
.pref(могут содержать токен в открытом виде).
⚠️ Внимание: В новых версиях Mi Home (после 2023 года) токены хранятся в зашифрованном виде. Для их расшифровки потребуется ключ, который генерируется динамически при каждом запуске приложения. В этом случае используйте MITM-метод.
6. Проверка токена и устранение ошибок
Получив токен, его нужно проверить на работоспособность. Для этого используйте Python-скрипт или онлайн-сервисы вроде MIoT Spec. Если токен не работает, причины могут быть следующими:
| Ошибка | Причина | Решение |
|---|---|---|
Invalid token |
Токен неверный или устарел. | Получите новый токен любым из описанных методов. |
Device not found |
Пылесос отключён от Wi-Fi или привязан к другому аккаунту. | Проверьте подключение к сети и синхронизацию с Mi Home. |
Region mismatch |
Токен получен для другого региона (например, cn, а пылесос на eu). |
Смените регион аккаунта или получите токен для текущего региона. |
Too many requests |
Xiaomi заблокировал IP за частые запросы. | Подождите 24 часа или используйте другой IP (VPN). |
Для тестирования токена вручную используйте Postman или cURL:
curl -X POST"http://[IP_пылесоса]/miIO.info" \
-H"Content-Type: application/json" \
-d'{"id":1}' \
--user"token:[ВАШ_ТОКЕН]"
Если ответ содержит "result":["miIO.version",...], токен действующий.
7. Безопасность: как не потерять токен и аккаунт
Токен даёт полный контроль над вашим пылесосом, поэтому его утечка может привести к:
- 🚫 Удаленному управлению устройством злоумышленниками.
- 📍 Краже данных о планировке вашего дома (карты уборки содержат точные размеры комнат).
- 🔒 Блокировке аккаунта Xiaomi за подозрительную активность.
Правила безопасности:
- 🔐 Храните токен в менеджере паролей (например, Bitwarden или KeePass).
- 🌐 Не передавайте токен третьим лицам или публичным репозиториям (например, в GitHub).
- 🔄 Регулярно (раз в 3–6 месяцев) обновляйте токен через Mi Home.
- 🛡️ Используйте двухфакторную аутентификацию в Mi Account.
Если вы подозреваете, что токен скомпрометирован:
- Немедленно отвяжите пылесос от аккаунта в Mi Home.
- Смените пароль от Mi Account.
- Получите новый токен одним из описанных методов.
FAQ: Частые вопросы о токенах Xiaomi Vacuum Mop Pro
❓ Можно ли получить токен без root-прав на телефоне?
Да, для этого подойдут:
- 📌 MITM-прокси с установкой пользовательского сертификата (не требует root на Android 7+).
- 📌 Python-скрипты (
python-miioилиmiio-cli). - 📌 Официальный метод через Mi Home (только для китайского региона).
Root нужен только для перехвата трафика на старых версиях Android (до 6.0).
❓ Почему токен перестал работать после обновления прошивки?
Xiaomi периодически обновляет протоколы аутентификации. После крупных обновлений (например, с 3.5.8 на 4.0.0) старые токены могут становиться недействительными. Решение:
- Получите новый токен любым из описанных методов.
- Проверьте совместимость вашей системы умного дома с новой версией прошивки.
Если пылесос перестал отвечать на команды, попробуйте сбросить его к заводским настройкам (удерживайте кнопку питания 20 секунд).
❓ Какой срок действия у токена?
Официально токен не имеет срока годности, но Xiaomi может аннулировать его в следующих случаях:
- 🔄 Сброс пылесоса к заводским настройкам.
- 🌍 Смена региона аккаунта (
cn→ru). - 🔒 Подозрительная активность (слишком частые запросы к API).
- 📦 Обновление прошивки пылесоса (редко, но бывает).
Рекомендуется обновлять токен раз в 6 месяцев.
❓ Можно ли использовать один токен для нескольких пылесосов?
Нет. Токен привязан к конкретному устройству (по его Device ID) и аккаунту Mi Account. Если у вас несколько пылесосов, для каждого нужен свой токен.
Исключение: если пылесосы одной модели и привязаны к одному аккаунту, можно попробовать использовать токен от первого устройства для второго, но это сработает только в 30% случаев (зависит от версии прошивки).
❓ Легально ли использовать токен для интеграции с Home Assistant?
Формально — нет. Xiaomi запрещает использование API вне официальных приложений (пользовательское соглашение, п. 4.3). Однако:
- ✅ На практике блокировки за это крайне редки (если не злоупотреблять запросами).
- ✅ Сообщество Home Assistant использует токены годами без последствий.
- ✅ Xiaomi не предъявляла исков пользователям за личное использование API.
Риски минимальны, если вы не распространяете токен публично и не отправляете более 100 запросов в час.