Как узнать токен робота-пылесоса Xiaomi через компьютер: 3 рабочих способа

Токен робота-пылесоса Xiaomi — это уникальный цифровой ключ, который открывает доступ к управлению устройством через сторонние платформы вроде Home Assistant, Node-RED или OpenHab. Без него интеграция с умным домом ограничивается стандартным приложением Mi Home, что лишает пользователей гибкости автоматизации. Например, вы не сможете запустить уборку по расписанию через Google Assistant или связать пылесос с датчиками движения.

Проблема в том, что Xiaomi официально не предоставляет токен — его нужно извлекать самостоятельно. Сделать это через смартфон сложно из-за ограничений Android/iOS, а вот компьютер даёт больше возможностей: от анализа сетевого трафика до использования Python-скриптов. В этой статье разберём три проверенных метода, актуальных для моделей Mi Robot Vacuum, Roborock и других пылесосов на платформе Xiaomi, включая новые устройства с протоколом MIOT.

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

1. Подготовка: что понадобится для извлечения токена

Перед тем как приступить, убедитесь, что у вас есть всё необходимое. Без правильной подготовки даже самый надёжный метод может не сработать.

Во-первых, проверьте модель пылесоса. Токены извлекаются по-разному для устройств на базе MIOT (например, Roborock S7 или Xiaomi Mi Robot Vacuum-Mop 2 Pro) и устаревших протоколов. Узнать модель можно на коробке, в документах или в приложении Mi Home в разделе Устройство → Настройки → Об устройстве.

Во-вторых, подготовьте компьютер с одной из операционных систем: Windows 10/11, macOS или Linux (рекомендуется Ubuntu 20.04+). На нём должны быть установлены:

  • 🔧 Python 3.8+ (для скриптов извлечения токена)
  • 📡 Wireshark или Fiddler (для анализа трафика)
  • 🔑 Postman или curl (для тестирования API-запросов)
  • 📱 Приложение Mi Home (актуальная версия, привязанное к пылесосу)

Также потребуется смартфон с приложением Mi Home, подключённый к той же сети, что и пылесос. Если вы используете Android, включите режим разработчика и разрешите отладку по USB (Настройки → О телефоне → Номер сборки — тапните 7 раз). Для iPhone понадобится прокси-сервер (например, Charles Proxy), так как Apple блокирует перехват HTTPS-трафика.

📊 Какую модель робота-пылесоса Xiaomi вы используете?
Roborock S7/S8
Xiaomi Mi Robot Vacuum-Mop 2
Xiaomi Mi Robot Vacuum 1S
Другая модель
Ещё не купил

2. Метод 1: Извлечение токена через Mi Home и Python-скрипт

Этот способ подходит для большинства современных моделей и считается самым надёжным. Он основан на перехвате данных авторизации между приложением Mi Home и серверами Xiaomi.

Шаг 1: Установите Python и библиотеку miio (если она не установлена). Откройте терминал и выполните:

pip install python-miio

Шаг 2: Скачайте скрипт get_miio_token.py (или его аналог) и сохраните в удобную папку. Этот скрипт имитирует авторизацию в Mi Home и извлекает токен.

Шаг 3: В файле get_miio_token.py найдите строки с username и password — введите туда логин и пароль от вашего аккаунта Xiaomi (того, к которому привязан пылесос). Сохраните изменения.

☑️ Подготовка к извлечению токена через Python

Выполнено: 0 / 4

Шаг 4: Запустите скрипт командой:

python get_miio_token.py

Если всё сделано правильно, в консоли появится строка с токеном в формате 50 символов (цифры и латинские буквы). Скопируйте её и сохраните в надёжном месте. Токен действует бессрочно, но при сбросе пылесоса к заводским настройкам или перепривязке к другому аккаунту он изменится.

⚠️ Внимание: Не храните токен в открытых текстовых файлах или облачных сервисах. Если ваш аккаунт Xiaomi взломают, злоумышленники смогут управлять пылесосом через локальную сеть.

3. Метод 2: Перехват токена через анализ сетевого трафика

Этот метод сложнее, но работает даже для устройств с обновлёнными протоколами безопасности. Он основан на перехвате HTTPS-трафика между приложением Mi Home и серверами Xiaomi.

Шаг 1: Установите Wireshark (для Windows/macOS/Linux) или Fiddler (только Windows). Эти инструменты позволяют "прослушивать" сетевые пакеты.

Шаг 2: На смартфоне включите прокси-сервер:

  • 📱 Для Android: перейдите в Настройки → Wi-Fi → Дополнительно → Прокси-сервер и укажите IP вашего компьютера с портом 8888 (по умолчанию для Fiddler).
  • 🍎 Для iPhone: используйте Charles Proxy и следуйте официальной инструкции.

Шаг 3: Запустите Wireshark и начните захват пакетов. Отфильтруйте трафик по домену api.io.mi.com (это сервер Xiaomi IoT). В Mi Home откройте страницу пылесоса и выполните любое действие (например, запустите уборку).

Шаг 4: В захваченных пакетах найдите POST-запрос на /home/rpc/*. В теле запроса будет поле "token" — это и есть нужный ключ. Пример структуры запроса:

{

"method": "miIO.info",

"params": {

"did": "123456789",

"token": "YOUR_TOKEN_HERE"

}

}

Что делать, если токен не отображается в трафике?

Если вы не видите токен в пакетах, проверьте:

1. Правильно ли настроен прокси на смартфоне (IP и порт должны совпадать с настройками Wireshark/Fiddler).

2. Обновлено ли приложение Mi Home — старые версии могут использовать другой протокол.

3. Не блокирует ли антивирус перехват трафика (добавьте исключение для Wireshark).

4. Для iPhone: установлен ли корневой сертификат Charles Proxy в "Настройки → Основные → Установленные сертификаты".

4. Метод 3: Использование HTTP-запросов и MIOT-протокола

Для продвинутых пользователей существует способ извлечения токена через прямой HTTP-запрос к API Xiaomi. Этот метод требует знания основ работы с REST API и JSON.

Шаг 1: Получите Device ID (DID) вашего пылесоса. Его можно найти:

  • 📄 В приложении Mi Home: Устройство → Настройки → Об устройстве → Общая информация (поле ID).
  • 🔍 Через Wireshark: в захваченных пакетах ищите параметр "did".

Шаг 2: Сформируйте запрос на авторизацию. Для этого понадобится:

  • 🔐 Логин и пароль от аккаунта Xiaomi.
  • 🌐 User-Agent приложения Mi Home (можно скопировать из Wireshark или использовать стандартный: Android-7.1.1-1.0.0-ONEPLUS A3010-136-APP/6.1.103).

Шаг 3: Отправьте POST-запрос на https://account.xiaomi.com/pass/serviceLoginAuth2 с телом:

{

"clientId": "2882303761517431161",

"packageName": "com.xiaomi.smarthome",

"sign": "YOUR_SIGN_HERE",

"countryCode": "ru",

"qs": "%3FappName%3Dcom.xiaomi.smarthome%26sign%3DYOUR_SIGN_HERE",

"user": "YOUR_PHONE_OR_EMAIL",

"hash": "YOUR_PASSWORD_HASH"

}

Поле sign генерируется по алгоритму Xiaomi (можно найти в декомпилированном APK Mi Home или использовать готовые скрипты вроде com.xiaomi-miio). После успешной авторизации сервер вернёт serviceToken, который можно использовать для запроса токена устройства.

Шаг 4: Отправьте второй запрос на https://api.io.mi.com/app/genToken с заголовком Authorization: Bearer YOUR_SERVICE_TOKEN и телом:

{

"deviceId": "YOUR_DID",

"passToken": "YOUR_PASS_TOKEN"

}

В ответе будет поле "token" — это и есть искомый ключ. Этот метод сложнее предыдущих, но работает для устройств с обновлёнными протоколами безопасности (например, Roborock S7 MaxV).

5. Проверка токена и интеграция с умным домом

После получения токена его нужно проверить на работоспособность. Для этого можно использовать Python-библиотеку miio или инструмент Postman.

Шаг 1: Установите библиотеку miio (если не установлена):

pip install python-miio

Шаг 2: Подключитесь к пылесосу с помощью команды:

mirobo --ip PYLESO_IP --token YOUR_TOKEN info

Замените PYLESO_IP на локальный IP-адрес пылесоса (можно найти в роутере или в Mi Home), а YOUR_TOKEN — на полученный токен. Если команда вернёт информацию о устройстве (модель, заряд батареи, статус), токен работает.

Шаг 3: Для интеграции с Home Assistant добавьте в файл configuration.yaml:

vacuum:

- platform: xiaomi_miio

host: PYLESO_IP

token: YOUR_TOKEN

После перезагрузки Home Assistant пылесос появится в интерфейсе как управляемое устройство. Теперь вы можете:

  • 📅 Настраивать уборку по расписанию.
  • 🔄 Связывать пылесос с другими датчиками (например, запускать уборку при отсутствии людей дома).
  • 🗣️ Управлять голосом через Google Assistant или Алису.
Платформа Метод интеграции Требуется токен? Поддерживаемые функции
Home Assistant Компонент xiaomi_miio ✅ Да Полный контроль (уборка, зоны, карты)
Node-RED Ноды node-red-contrib-mi-home ✅ Да Автоматизация по триггерам
OpenHab Binding MiIo ✅ Да Управление через правила
IoBroker Адаптер iobroker.mihome ✅ Да Визуализация и скрипты

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

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

Ошибка 1: "Invalid token" или "Unauthorized"

Причины:

  • 🔄 Токен устарел (например, после сброса пылесоса).
  • 📱 Устройство привязано к другому аккаунту Xiaomi.
  • 🔐 В токене опечатка (проверьте регистр символов).

Решение: Повторите процесс извлечения токена или проверьте привязку устройства в Mi Home.

Ошибка 2: Не удаётся перехватить трафик в Wireshark

Причины:

  • 🛡️ Mi Home использует сертификаты pinning (защита от перехвата).
  • 📵 Прокси не настроен на смартфоне.
  • 🔌 Антивирус блокирует Wireshark.

Решение: Для Android попробуйте использовать Packet Capture (приложение из Play Market), для iPhoneCharles Proxy с установленным сертификатом.

Ошибка 3: Скрипт get_miio_token.py выдаёт ошибку авторизации

Причины:

  • 🔑 Неправильный логин/пароль от Xiaomi.
  • 🔄 Устаревшая версия библиотеки miio.
  • 🌍 Аккаунт привязан к другому региону (например, Китай).

Решение: Обновите библиотеку (pip install --upgrade python-miio) и проверьте регион аккаунта в Mi Home (Профиль → Регион). Для китайских аккаунтов может потребоваться VPN.

⚠️ Внимание: Если пылесос перестал отвечать на команды после интеграции, проверьте, не блокирует ли брандмауэр роутера локальные запросы. Добавьте IP-адрес пылесоса в исключения или отключите фаервол временно.

7. Безопасность: как защитить токен от утечки

Токен робота-пылесоса — это ключ к управлению устройством в вашей локальной сети. Его утечка может привести к несанкционированному доступу. Следуйте правилам безопасности:

1. Хранилище токена:

  • 🔐 Не сохраняйте токен в облачных сервисах (Google Docs, Dropbox).
  • 📁 Используйте зашифрованные контейнеры (например, VeraCrypt) или менеджеры паролей (KeePass, Bitwarden).
  • 📄 Если токен записан в файле конфигурации (configuration.yaml), ограничьте права доступа: chmod 600 configuration.yaml.

2. Сетевая безопасность:

  • 🌐 Изолируйте пылесос в отдельной подсети (VLAN) роутера.
  • 🔒 Отключите UPnP на роутере, чтобы предотвратить несанкционированный доступ извне.
  • 🔄 Регулярно обновляйте прошивку пылесоса и роутера.

3. Мониторинг активности:

  • 📊 Проверяйте логи умного дома на подозрительные команды (например, неожиданные запуски уборки).
  • 🔔 Настройте уведомления в Home Assistant о новых подключениях к пылесосу.

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

  1. Отвяжите пылесос от аккаунта Xiaomi (Mi Home → Профиль → Устройства → Удалить).
  2. Сбросьте устройство к заводским настройкам (зажмите кнопку Reset на 5 секунд).
  3. Получите новый токен и обновите его во всех интеграциях.

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

❓ Можно ли получить токен без компьютера, только со смартфона?

Да, но это сложнее. Для Android можно использовать приложение MiHome2MQTT или Packet Capture для перехвата трафика. На iPhone без джейлбрейка это практически невозможно из-за ограничений Apple.

❓ Работает ли этот метод для Roborock S8 Pro Ultra?

Да, но для новых моделей Roborock (2023–2026 гг.) может потребоваться обновлённая версия скрипта get_miio_token.py или использование MIOT-протокола (метод 3). Некоторые устройства требуют дополнительной авторизации через miot-spec.

❓ Что делать, если токен перестал работать после обновления прошивки?

Обновления прошивки редко сбрасывают токен, но если это произошло:

  1. Проверьте, не изменился ли Device ID (DID) пылесоса.
  2. Повторите процесс извлечения токена.
  3. Если пылесос перестал отвечать, выполните сброс (Reset) и привяжите его заново.
❓ Можно ли использовать один токен для нескольких пылесосов?

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

❓ Законно ли извлекать токен таким способом?

Формально Xiaomi не запрещает использование локального API, но и не документирует его. В пользовательском соглашении есть пункт о запрете обратной разработки (reverse engineering). Риски:

  • 🔴 Блокировка аккаунта (маловероятно, но возможно при массовых запросах).
  • 🔴 Потеря гарантии (если сервисный центр обнаружит следы вмешательства).

Для личного использования в рамках умного дома претензий обычно не возникает.