Как узнать токен пылесоса Xiaomi Mi Robot Vacuum: 5 проверенных способов

Почему токен пылесоса Xiaomi так важен — и где его искать

Токен доступа (Mi Home Token) — это уникальный цифровой ключ, который связывает ваш робот-пылесос Xiaomi Mi Robot Vacuum с облачными сервисами компании. Без него невозможно подключить устройство к сторонним приложениям вроде Home Assistant, ioBroker или альтернативным прошивкам типа Valetudo. Но вот проблема: Xiaomi не предоставляет токен в открытом виде. Его нужно извлечь самостоятельно — и здесь начинаются сложности.

В этой статье мы разберём 5 рабочих методов получения токена (включая актуальные на 2026 год), объясним, почему некоторые способы перестали работать, и предостережём от распространённых ошибок. Особое внимание уделим моделям Mi Robot Vacuum-Mop 2 Pro, S7 и X10+, где процесс отличается от старых версий. Если вы планируете интегрировать пылесос в умный дом или просто хотите резервную копию токена — читайте дальше.

⚠️ Важно: Извлечение токена может нарушить условия пользовательского соглашения Xiaomi. Мы не рекомендуем использовать токен для нелегальных целей (например, обхода региональных ограничений). Все действия вы выполняете на свой страх и риск.

Способ 1: Извлечение токена через Mi Home (официальное приложение)

Самый простой метод — получить токен прямо из приложения Mi Home, но он работает только для устройств, подключённых к аккаунту Xiaomi до ноября 2021 года. После этого срока компания ужесточила защиту, и токен перестал отображаться в логах. Если ваш пылесос подключён позже — переходите к Способу 2.

Инструкция для Android:

  1. Откройте Mi Home и убедитесь, что пылесос в сети.
  2. Перейдите в Профиль → Настройки → О программе → Версия приложения.
  3. Тапните 5 раз по строке с версией, пока не появится надпись Отладка включена.
  4. Вернитесь в главное меню, откройте Устройства → Ваш пылесос → Трёхточие (⋮) → О устройстве.
  5. Прокрутите вниз и нажмите Логи (или Export logs).
  6. В открывшемся файле mihome_logs.zip найдите папку с названием вашего пылесоса и откройте файл device_token.dat.

⚠️ Внимание: На iOS этот метод не работает — Apple блокирует доступ к логам приложений. Также Xiaomi может в любой момент закрыть эту "лазейку" обновлением приложения.

Устройство подключено к аккаунту Xiaomi до ноября 2021

Версия Mi Home не новее 6.4.100 (последние версии блокируют логи)

На телефоне включена отладка по USB (для резервного копирования логов)

Файл логов сохранён в безопасное место (токен может понадобиться позже)-->

Способ 2: Использование Python-скрипта miio extractor

Если официальный метод не сработал, придётся прибегнуть к автоматизированному извлечению через Python. Этот способ подходит для всех моделей Xiaomi Mi Robot Vacuum, включая новые S7 MaxV и X10+, но требует минимальных технических навыков.

Вам понадобится:

  • 💻 Компьютер с Python 3.8+ (Windows, macOS или Linux)
  • 📱 Android-смартфон с Mi Home и включённой отладкой по USB
  • 🔌 Кабель USB для подключения телефона к ПК
  • 📦 Установленные пакеты: adb, python-miio

Пошаговая инструкция:

  1. Скачайте репозиторий mihome_extractor и распакуйте его.
  2. Подключите телефон к ПК, разрешите отладку по USB и выполните команду:
    adb backup -f mihome.ab com.xiaomi.smarthome

    На телефоне появится запрос на резервное копирование — подтвердите (пароль не устанавливайте!).

  3. Прервите процесс копирования (достаточно 1-2 МБ данных).
  4. Запустите скрипт извлечения:
    python mihome_extractor.py mihome.ab
  5. В папке output появится файл devices.csv — там будут токены всех ваших устройств Xiaomi.

💡 Полезный совет: Если скрипт выдаёт ошибку Java heap space, уменьшите размер резервной копии, прервав её раньше, или добавьте флаг --no-compress в команду adb backup.

Что делать, если скрипт не находит токен?

Если в файле devices.csv нет токена, проверьте:

1. Версию Mi Home — в новых версиях (6.5+) данные шифруются по-другому.

2. Регион аккаунта — для Китая (сервер cn) токен извлекается иначе.

3. Наличие root-прав на телефоне — без них некоторые данные могут не копироваться.

В крайнем случае попробуйте способ с MITM-прокси (Способ 4).

Способ 3: Получение токена через терминал (для прошивок с ADB)

Этот метод подходит для пылесосов на кастомных прошивках (например, Valetudo) или устройств с включённым ADB-доступом. Если ваш Xiaomi Mi Robot Vacuum работает на стоковой прошивке Xiaomi, пропустите этот раздел.

Инструкция:

  1. Подключитесь к пылесосу по SSH или ADB (например, через adb connect [IP-адрес]).
  2. Выполните команду для чтения токена из конфигурационного файла:
    cat /mnt/default/miio/miio_conf.json | grep "token"
  3. Если файл отсутствует, попробуйте альтернативный путь:
    cat /mnt/UDISK/miio/device.token

⚠️ Внимание: На новых моделях (S7, X10+) токен может храниться в зашифрованном виде. Для его декодирования потребуется ключ, который извлекается отдельно (см. Способ 4).

Модель пылесоса Путь к токену Требуется ли root? Примечания
Mi Robot Vacuum 1S /mnt/default/miio/miio_conf.json Нет Токен в открытом виде
Mi Robot Vacuum-Mop 2 /mnt/UDISK/miio/device.token Да Файл защищён, нужен ключ
Xiaomi S7 / X10+ /mnt/data/miio/device.conf Да Токен зашифрован, требуется MITM

Способ 4: Перехват токена через MITM-прокси (для опытных пользователей)

Если предыдущие методы не сработали, остаётся самый сложный, но универсальный способ — перехват трафика между приложением Mi Home и серверами Xiaomi. Для этого понадобится настроить MITM-прокси (например, Charles или Fiddler) и "обмануть" телефон, заставив его отправлять запросы через ваш компьютер.

Что потребуется:

  • 🖥️ ПК с установленным Charles Proxy или mitmproxy
  • 📱 Android-смартфон с сертификатом прокси (рутирование не обязательно)
  • 🌐 Стабильное интернет-соединение

Пошаговая инструкция:

  1. Установите и запустите Charles Proxy на ПК.
  2. На телефоне подключитесь к той же сети Wi-Fi, что и ПК.
  3. В настройках Wi-Fi на телефоне укажите прокси-сервер (IP вашего ПК и порт 8888).
  4. Установите сертификат Charles на телефон (инструкция в документации программы).
  5. Запустите Mi Home, авторизуйтесь и дождитесь синхронизации устройств.
  6. В Charles отфильтруйте запросы по домену api.io.mi.com.
  7. Найдите запрос с путьём /home/device/list — в ответе будет JSON с токенами.

🔍 Как найти токен в ответе: Ищите поле "token" в объектах устройств. Например:

{

"did": "123456789",

"token": "5f4dcc3b5aa765d61d8327deb882cf99",

"name": "Mi Robot Vacuum"

}

1. На телефоне отключён VPN или другой прокси.

2. В Charles включён SSL Proxying для домена api.io.mi.com.

3. Сертификат Charles установлен как доверенный в настройках Android.-->

Способ 5: Запрос токена через облако Xiaomi (альтернативный API)

Этот метод подходит для пользователей, у которых есть доступ к Xiaomi Cloud API. Он не требует взлома или перехвата трафика, но нужны учётные данные от аккаунта Xiaomi (логин и пароль).

Инструкция:

  1. Получите userId и ssecurity (сессионный ключ) через запрос к API:
    curl 'https://account.xiaomi.com/pass/serviceLogin?sid=miui_intl&_json=true' \
    

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

    --data-raw '_json=true&sid=miui_intl&user=ваш_email&hash=MD5(пароля)'

  2. Используйте полученные данные для запроса списка устройств:
    curl 'https://api.io.mi.com/app/home/device_list' \
    

    -H 'x-xiaomi-protocal-flag-cli: PROTOCAL-HTTP2' \

    -H 'Cookie: userId=ваш_userId; serviceToken=ваш_ssecurity'

  3. В ответе найдите массив "list" — там будут токены всех устройств.

⚠️ Внимание: Xiaomi может заблокировать аккаунт за частые запросы к API. Не злоупотребляйте этим методом и используйте официальные SDK, если планируете автоматизацию.

Mi Home (логи)|Python-скрипт|Терминал (ADB)|MITM-прокси|Облако Xiaomi|Ещё не пробовал-->

Частые ошибки и как их избежать

Даже следуя инструкциям, пользователи часто сталкиваются с проблемами. Вот самые распространённые ошибки и их решения:

  • 🔄 Токен не найден в логах Mi Home → Проверьте версию приложения (должна быть не новее 6.4.100) или используйте Python-скрипт.
  • 🔒 Ошибка аутентификации в Charles Proxy → Убедитесь, что сертификат установлен как доверенный и отключён VPN.
  • 📱 ADB не видит устройство → Включите отладку по USB в настройках разработчика и подтвердите подключение на телефоне.
  • 🌐 Запрос к API возвращает ошибку 403 → Xiaomi заблокировал ваш IP за частые запросы. Подождите 24 часа или используйте другой метод.
  • 🔑 Токен найден, но не работает → Убедитесь, что вы скопировали его полностью (32 символа) без пробелов. Для новых моделей может потребоваться ключ шифрования.

💡 Ключевой вывод: Если вы не уверены в своих навыках, начинайте с самого простого метода (Mi Home или Python-скрипт). MITM-прокси и облачный API оставьте на крайний случай — они требуют опыта и могут привести к блокировке аккаунта.

FAQ: Ответы на популярные вопросы

Можно ли получить токен без телефона (только с пылесоса)?

Нет. Токен генерируется серверами Xiaomi при связывании устройства с аккаунтом. Без доступа к Mi Home или облаку извлечь его невозможно. Исключение — если пылесос уже прошит кастомной прошивкой (например, Valetudo), где токен может храниться локально.

Почему токен изменился после сброса пылесоса?

При сбросе настроек (Reset to factory) или отвязке от аккаунта Xiaomi генерирует новый токен. Старый становится недействительным. Чтобы избежать потери доступа, сохраняйте токен сразу после первого подключения.

Работает ли извлечение токена для пылесосов с сервера Mainland China (cn)?

Да, но процесс отличается. Для китайских аккаунтов (region=cn) токен шифруется по другому алгоритму. Используйте модифицированные скрипты, например, mihome_extractor с флагом --region cn.

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

Нет. Каждое устройство имеет уникальный токен, привязанный к его DID (идентификатору). Попытка использовать токен от одного пылесоса для другого приведёт к ошибке аутентификации.

Законно ли извлекать токен для личного использования?

С юридической точки зрения — серой зоной. Xiaomi не запрещает использовать токен для подключения к личным системам умного дома (например, Home Assistant), но прямо не разрешает. Нарушение условий использования может привести к блокировке аккаунта, хотя такие случаи крайне редки.