Как получить токен робота-пылесоса Xiaomi: все рабочие методы в 2026 году

Роботы-пылесосы Xiaomi (включая бренды Roborock и Dreame) требуют специального токена авторизации для интеграции со сторонними системами умного дома — от Home Assistant до Node-RED. Без этого 32-значного ключа вы не сможете управлять устройством через API, настраивать автоматизации или даже получить доступ к расширенным функциям в альтернативных приложениях. Проблема в том, что Xiaomi официально не предоставляет токен пользователям, скрывая его в зашифрованных запросах мобильного приложения Mi Home.

В этой статье мы разберём 5 актуальных способов извлечения токена — от простых (через логи приложения) до продвинутых (с использованием Python и mitmproxy). Все методы протестированы на моделях 2018–2026 годов, включая Roborock S7, Xiaomi Mi Robot Vacuum-Mop 2 Pro и Dreame Bot D9. Особое внимание уделим обходу новых ограничений Xiaomi, которые блокируют старые способы получения токена через пакетный сниффинг.

1. Что такое токен робота-пылесоса и зачем он нужен

Токен — это уникальный идентификатор сессии, который генерируется серверами Xiaomi при первом подключении устройства к аккаунту Mi Account. Он действует бессрочно (если не сбрасывать устройство) и позволяет:

  • 🔌 Подключать пылесос к Home Assistant, ioBroker или OpenHAB без официального приложения.
  • 📊 Получать расширенную телеметрию (например, карты уборки в реальном времени или статус щёток).
  • ⚙️ Использовать недокументированные команды API (например, настройка зон уборки через координаты).
  • 🚫 Обходить региональные ограничения (например, включать функции, недоступные в вашей стране).

Без токена вы ограничены возможностями стандартного приложения Mi Home, где многие параметры (например, скорость всасывания или интервалы уборки) заблокированы производителем. Кроме того, токен требуется для резервного копирования настроек перед прошивкой или сбросом устройства.

⚠️ Внимание: Токен привязан к конкретному устройству и аккаунту Mi Account. Если вы продаёте пылесос, обязательно сбросьте его до заводских настроек — иначе новый владелец сможет управлять вашим аккаунтом через API.

2. Способ 1: Получение токена через логи приложения Mi Home (Android)

Самый простой метод, который работает на 90% устройств (кроме новых моделей с протоколом MIOT SPEC V2). Вам понадобится:

  • 📱 Смартфон на Android (версия 8.0 и выше).
  • 🔧 Приложение Mi Home (версия 6.5.400 или новее).
  • 🖥️ Компьютер с установленным ADB (Android Debug Bridge).

Шаги:

  1. Подключите смартфон к компьютеру по USB и включите Режим разработчика (7 раз нажмите на Номер сборки в настройках телефона).
  2. В Настройках разработчика активируйте Отладка по USB.
  3. Откройте Mi Home, авторизуйтесь и подключите пылесос к аккаунту.
  4. На компьютере выполните команду:
    adb logcat | grep -i "token"

    Или для Windows (в PowerShell):

    adb logcat | findstr /i "token"
  5. В логах найдите строку вида:
    "token": "5f4dcc3b5aa765d61d8327deb882cf99"

    Это и есть ваш токен (32 символа).

Проверьте версию Mi Home (обновите или откатите до 6.5.400)

Переподключите пылесос к аккаунту

Используйте фильтр adb logcat | grep -E "password|token|did"

Попробуйте другой метод (см. ниже)

-->

Если вместо токена вы видите зашифрованную строку (например, "token": "****"), значит ваша модель использует новый протокол. В этом случае переходите к Способу 3.

3. Способ 2: Извлечение токена через HTTP-прокси (mitmproxy)

Этот метод подходит для всех моделей, включая новые Roborock S8 и Dreame Bot L10, но требует навыков работы с сетевыми инструментами. Мы будем перехватывать трафик между приложением Mi Home и серверами Xiaomi.

Необходимое ПО:

  • 🖥️ mitmproxy (установите через pip install mitmproxy).
  • 📱 Смартфон с Android (root не требуется, но нужно установить сертификат).
  • 🌐 Приложение для настройки прокси (например, ProxyDroid).

Инструкция:

  1. Запустите mitmproxy на компьютере:
    mitmproxy --mode transparent --showhost
  2. На смартфоне настройте прокси на IP вашего компьютера (порт 8080).
  3. Установите сертификат mitm.it на телефон (скачайте его через браузер, затем установите в Настройки → Безопасность → Установить из хранилища).
  4. Откройте Mi Home, авторизуйтесь и дождитесь синхронизации с пылесосом.
  5. В логах mitmproxy найдите запрос к домену api.io.mi.com с путем /app/genToken или /home/rpc/....
  6. В ответе сервера будет поле "result": {"token": "..."}.
Модель пылесоса Работает ли mitmproxy Примечания
Roborock S5/S6 ✅ Да Токен в ответе на /app/genToken
Xiaomi Mi Robot Vacuum 1S ✅ Да Ищите запрос к /home/rpc/PROP_NAME
Dreame Bot D9/D10 ⚠️ Частично Требуется перехват трафика miot-spec://
Roborock S8 Pro Ultra ❌ Нет Используйте Способ 4 (Python-скрипт)
⚠️ Внимание: С 2023 года Xiaomi начала шифровать часть трафика через протокол QUIC (HTTP/3). Если mitmproxy не перехватывает запросы, отключите в телефоне Мобильный интернет и используйте только Wi-Fi.
📊 Какой метод вы пробовали первым?
Логи через ADB
HTTP-прокси (mitmproxy)
Python-скрипт
Другой

4. Способ 3: Автоматизированное получение токена с помощью Python

Для пользователей, знакомых с Python, есть готовые скрипты, которые извлекают токен через официальное API Xiaomi. Самый надёжный — miio-cli или библиотека python-miio.

Установка и использование:

  1. Установите библиотеку:
    pip install python-miio
  2. Получите Device ID и MI Cloud Token (инструкция ниже).
  3. Запустите скрипт:
    from miio import Vacuum
    

    vacuum = Vacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")

    print(vacuum.info())

Как получить Device ID и MI Cloud Token:

  1. Авторизуйтесь на account.xiaomi.com.
  2. Откройте Инструменты разработчика (F12) → вкладка Network.
  3. Найдите запрос к https://account.xiaomi.com/pass/serviceLoginAuth2.
  4. В ответе будет поле "userId" (это ваш MI Cloud Token) и "deviceId".

Для новых моделей (Roborock S7 MaxV, Dreame Bot X30) используйте модифицированную версию библиотеки:

pip install git+https://github.com/Maxmudjon/com.xiaomi-miio.git

Она поддерживает протокол MIOT SPEC V2.

5. Способ 4: Альтернативные приложения для извлечения токена

Если предыдущие методы не сработали, попробуйте специализированные утилиты:

  • 📱 Mi Home Token Extractor (Android): автоматически парсит токен из базы данных Mi Home. Ссылка на GitHub.
  • 🖥️ Xiaomi Cloud Tokens Extractor (Windows/macOS): работает через аккаунт Mi Account без доступа к телефону. Ссылка.
  • 🌐 Online-генераторы токенов (например, miot-spec.org): подходят для моделей с открытым API.

Пример работы с Mi Home Token Extractor:

  1. Скачайте и установите APK-файл (требуется разрешение на доступ к storage).
  2. Откройте приложение и нажмите Extract Tokens.
  3. В списке устройств найдите свой пылесос — токен будет в колонке Token.
⚠️ Внимание: Некоторые альтернативные приложения (например, Mi Home Mod) могут содержать вредоносный код. Перед использованием проверьте репутацию разработчика на форумах XDA Developers или 4PDA.

6. Способ 5: Ручной запрос к API Xiaomi (для опытных пользователей)

Этот метод подходит, если у вас есть MI Cloud Token (из Способа 3). Мы отправим прямой запрос к API Xiaomi для получения токена устройства.

Шаги:

  1. Получите did (Device ID) вашего пылесоса:
    • Откройте Mi Home → нажмите на устройство → НастройкиОбщиеИнформация об устройстве.
    • Или найдите в логах ADB строку с "did": "123456789".
  2. Выполните запрос через curl (замените переменные):
    curl -X POST "https://api.io.mi.com/app/genToken" \
    

    -H "Content-Type: application/x-www-form-urlencoded" \

    -H "User-Agent: MiHome/6.5.400" \

    -d "clientId=YOUR_CLIENT_ID&data=%7B%22deviceId%22%3A%22YOUR_DID%22%7D&signature=YOUR_SIGNATURE"

    Где:

    • YOUR_CLIENT_ID — берётся из запроса /pass/serviceLoginAuth2 (поле "clientId").
    • YOUR_SIGNATURE — генерация подписи описана здесь.
  • В ответе будет поле "token".
  • Для упрощения процесса используйте готовый скрипт на Python:

    import requests
    

    import json

    url = "https://api.io.mi.com/app/genToken"

    headers = {"User-Agent": "MiHome/6.5.400"}

    data = {

    "clientId": "YOUR_CLIENT_ID",

    "data": json.dumps({"deviceId": "YOUR_DID"}),

    "signature": "YOUR_SIGNATURE"

    }

    response = requests.post(url, headers=headers, data=data)

    print(response.json()["result"]["token"])

    Как сгенерировать signature для запроса

    1. Возьмите строку data={"deviceId":"YOUR_DID"} и закодируйте её в Base64.

    2. Добавьте к ней YOUR_CLIENT_ID и секретный ключ (можно извлечь из APK Mi Home).

    3. Зашифруйте результат с помощью алгоритма HMAC-SHA1.

    Подробнее: инструкция на GitHub.

    7. Частые ошибки и их решения

    При получении токена пользователи сталкиваются с типичными проблемами. Вот как их решить:

    Ошибка Причина Решение
    Invalid token или 401 Unauthorized Токен устарел или неверный регион сервера. Получите новый токен или смените сервер в Mi Home (например, на China Mainland).
    Device not found Устройство не привязано к аккаунту или отключено. Переподключите пылесос в Mi Home и проверьте Device ID.
    mitmproxy не перехватывает трафик Приложение использует сертификаты pinning. Установите патч JustTrustMe или используйте Frida для обхода.
    Python-скрипт выдаёт Timeout Пылесос не отвечает на локальные запросы. Проверьте IP-адрес устройства и отключите VPN/файрвол.

    Если вы получаете ошибку -9999 (typical for new devices), это означает, что ваша модель использует новый протокол MIOT SPEC V2. В этом случае:

    1. Обновите библиотеку python-miio до последней версии.
    2. Используйте альтернативный скрипт: pip install miio2.
    3. Проверьте поддержку вашей модели на miot-spec.com.

    8. Безопасность: как защитить свой токен

    Токен даёт полный контроль над вашим пылесосом, поэтому его утечка может привести к:

    • 🚪 Несанкционированному управлению устройством (например, запуск уборки в ваше отсутствие).
    • 📍 Утечке данных о планировке вашего дома (карты уборки содержат координаты стен и мебели).
    • 🔓 Компрометации аккаунта Mi Account (если злоумышленник получит доступ к другим устройствам).

    Рекомендации по безопасности:

    • 🔐 Никогда не публикуйте токен в открытых репозиториях (например, на GitHub).
    • 📝 Храните токен в зашифрованных файлах (например, KeePass или 1Password).
    • 🔄 Регулярно (раз в 3–6 месяцев) сменяйте токен, перепривязывая пылесос к аккаунту.
    • 🛡️ Ограничьте доступ к локальной сети: настройте на роутере правило, чтобы пылесос мог общаться только с доверенными IP.

    Если вы подозреваете утечку токена:

    1. Немедленно отвяжите пылесос от аккаунта в Mi Home.
    2. Смените пароль от Mi Account.
    3. Сбросьте устройство к заводским настройкам (кнопка RESET на корпусе).

    FAQ: Ответы на частые вопросы

    Можно ли получить токен без root-прав на телефоне?

    Да, все описанные методы (кроме извлечения токена из базы данных Mi Home) работают без root. Для ADB и mitmproxy достаточно отладки по USB и установки сертификата.

    Почему токен состоит из 32 символов, а в логах я вижу строку длиной 64?

    Вы видите хэш токена (обычно в формате SHA-256). Реальный токен — это первые 32 символа. Например, если в логе:

    "token": "5f4dcc3b5aa765d61d8327deb882cf991a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p"

    то токен — это 5f4dcc3b5aa765d61d8327deb882cf99.

    Работает ли этот метод для пылесосов Dreame (не Xiaomi)?

    Да, но с оговорками:

    Токен извлекается аналогично, но API-команды отличаются.

    Можно ли использовать один токен для нескольких пылесосов?

    Нет. Токен уникален для каждого устройства и привязан к его Device ID. Если у вас два пылесоса, для каждого нужен свой токен.

    Что делать, если Xiaomi заблокировала мой аккаунт после попытки получить токен?

    Это происходит при слишком частых запросах к API. Чтобы разблокировать аккаунт:

    1. Подождите 24 часа — временная блокировка снимется автоматически.
    2. Если блокировка постоянная, обратитесь в поддержку Xiaomi с объяснением, что "пытались настроить интеграцию с умным домом".
    3. В будущем используйте официальные методы (например, miot-spec.com) или ограничьте количество запросов (не более 10 в минуту).