Токен робота-пылесоса Xiaomi: как узнать и не потерять доступ к умным функциям

Токен доступа — это уникальный «пароль» вашего робота-пылесоса Xiaomi, который открывает расширенные возможности управления: от интеграции с Home Assistant до создания кастомных сценариев автоматизации. Без него многие функции, например, удалённое управление через MQTT или настройка зон уборки через сторонние приложения, просто недоступны. Но производитель не предоставляет токен в открытом виде, а его потеря после сброса настроек может обернуться головной болью.

Проблема усложняется тем, что с 2020 года Xiaomi ужесточила политику безопасности: старые методы получения токена (например, через mi.io без авторизации) перестали работать, а новые требуют дополнительных шагов. В этой статье мы разберём актуальные способы для моделей Mi Robot Vacuum-Mop 2 Pro, Xiaomi Vacuum Cleaner G10 и других популярных пылесосов бренда — включая те, что работают на новой прошивке с шифрованием AES-128.

Если вы уже пробовали получить токен и сталкивались с ошибками вроде Invalid token или Device not found, не спешите сбрасывать настройки пылесоса. Скорее всего, проблема кроется в неверно выбранном регионе сервера Mi Home или устаревшей версии Python-библиотеки. Мы подробно разберём эти нюансы — и вы сможете избежать типичных ошибок.

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

Токен — это 32-значный алфавитно-цифровой ключ, который генерируется серверами Xiaomi при первом подключении устройства к аккаунту Mi Account. Он служит для аутентификации запросов к API пылесоса, позволяя сторонним приложениям и сервисам отправлять команды от вашего имени. Без токена вы ограничены только базовыми функциями официального приложения Mi Home.

Вот что можно сделать с токеном:

  • 🔧 Интеграция с Home Assistant или OpenHab для создания сложных сценариев (например, запуск уборки при уходе из дома).
  • 📱 Управление через Telegram-бота или голосовых помощников (Алиса, Google Assistant).
  • 🗺️ Экспорт карт уборки в формате .svg для анализа покрытия.
  • ⚙️ Настройка кастомных зон уборки через Valetudo или DreameBot.

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

С 2022 года некоторые модели (например, Xiaomi Robot Vacuum-Mop 2 Lite) используют динамические токены, которые обновляются каждые 24 часа. В этом случае для стабильной работы потребуется дополнительный скрипт для автоматического обновления ключа.

📊 Какую модель робота-пылесоса Xiaomi вы используете?
Mi Robot Vacuum-Mop 2 Pro
Xiaomi Vacuum Cleaner G10
Mi Robot Vacuum-Mop P
Другая модель Xiaomi
Пылесос другого бренда

Официальный способ: получение токена через Mi Home (для новичков)

Самый простой метод — извлечь токен из трафика официального приложения Mi Home. Он подходит для пользователей, которые не хотят углубляться в технические детали. Вам понадобится:

  • 📱 Смартфон с установленным Mi Home (версия не ниже 6.0.100).
  • 🌐 Доступ к Wi-Fi сети, к которой подключён пылесос.
  • 💻 Компьютер или второй смартфон для перехвата трафика.

Инструкция по шагам:

  1. Установите на компьютер программу Fiddler или Charles Proxy для перехвата HTTP-запросов.
  2. На смартфоне настройте прокси-сервер (IP-адрес компьютера и порт 8888 для Fiddler).
  3. Запустите Mi Home, авторизуйтесь и откройте страницу управления пылесосом.
  4. В программе-перехватчике найдите запрос к домену api.io.mi.com с путьём /app/genToken — в ответе будет строка "token": "ваш_токен".

Если вы используете Android, можно обойтись без компьютера:

  1. Установите приложение Packet Capture из Google Play.
  2. Запустите захват трафика и откройте Mi Home.
  3. Найдите в логах запрос к mi.io — токен будет в теле ответа.

☑️ Подготовка к перехвату токена

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

Внимание! Если вы используете iPhone, для перехвата трафика потребуется установить сертификат доверенного центра на устройство. Без этого Mi Home не будет работать через прокси из-за политики безопасности Apple.

Альтернативный метод: извлечение токена из резервной копии Mi Home

Если перехват трафика кажется сложным, можно попробовать извлечь токен из резервной копии настроек Mi Home. Этот способ работает на Android и не требует root-прав, но подходит только для устройств, подключённых к вашему аккаунту.

Шаги для извлечения:

  1. Откройте Mi Home и перейдите в профиль → Настройки → Резервное копирование данных.
  2. Создайте резервную копию (файл будет сохранён в памяти устройства).
  3. Скачайте архив на компьютер и распакуйте его. Внутри найдите файл mihome_backup.json.
  4. Откройте файл в текстовом редакторе и найдите раздел "devices". Там будут перечислены все ваши устройства с их токенами.

Пример структуры файла:

{

"devices": [

{

"did": "123456789",

"token": "a1b2c3d4e5f6...",

"name": "Mi Robot Vacuum",

"model": "roborock.vacuum.a10"

}

]

}

Если в файле нет токена, значит ваша версия Mi Home не сохраняет его в резервной копии. В этом случае попробуйте другие методы.

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

В некоторых версиях Mi Home (начиная с 6.1.400) токены не сохраняются в бэкапе из соображений безопасности. Альтернатива — использовать метод с Python-скриптом (описан ниже) или перехват трафика через Mitmproxy.

Для продвинутых: получение токена через Python-скрипт

Этот метод подходит тем, кто готов работать с командной строкой. Он универсален и работает даже для новых моделей пылесосов с динамическими токенами. Вам понадобится:

  • 🐍 Установленный Python 3.8+.
  • 📦 Библиотеки python-miio и click (устанавливаются через pip install python-miio click).
  • 🔑 Логин и пароль от вашего аккаунта Mi Account.

Инструкция:

  1. Откройте терминал и выполните команду:
    mirobo discover

    Она найдёт все устройства Xiaomi в вашей локальной сети.

  2. Скопируйте IP-адрес и Device ID (did) вашего пылесоса.
  3. Выполните команду для получения токена:
    mirobo --ip АДРЕС_УСТРОЙСТВА --token --debug

    Если устройство запрашивает авторизацию, используйте:

    mirobo --ip АДРЕС_УСТРОЙСТВА login

    и введите данные от Mi Account.

Если скрипт выдаёт ошибку Invalid token, попробуйте указать регион сервера вручную (например, для Европы используйте --server eu). Полный список регионов:

РегионКод сервераПример домена
Китайcnapi.io.mi.com
Европаeuapi.europe.mi.com
СШАusapi.us.mi.com
Россияruapi.ru.mi.com

Внимание! Если вы используете двухфакторную аутентификацию в Mi Account, перед запуском скрипта получите временный пароль в настройках аккаунта. Иначе авторизация завершится ошибкой Login failed: -9005.

Проблемы и ошибки: что делать, если токен не работает

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

  • Ошибка Invalid token:

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

  • Ошибка Device not found:

    Причины: пылесос не в сети или IP-адрес изменился. Решение: перезагрузите роутер и пылесос, затем повторно выполните mirobo discover.

  • Ошибка -5003 при авторизации:

    Причины: неверный пароль или аккаунт привязан к другому региону. Решение: смените пароль в Mi Account и повторите авторизацию с указанием правильного региона.

Если вы получаете токен для интеграции с Home Assistant, но устройство не появляется в системе, проверьте:

  1. Что в конфигурационном файле configuration.yaml указан правильный device_id и token.
  2. Что в настройках Home Assistant выбран тот же регион сервера, что и в Mi Home.
  3. Что порты 54321 и 80 не заблокированы вашим роутером.

Внимание! Некоторые модели пылесосов (например, Xiaomi Mi Robot Vacuum-Mop 2 Ultra) требуют дополнительной привязки к аккаунту через Mi Home даже после получения токена. Если устройство не отвечает на команды, попробуйте переподключить его в официальном приложении.

Как защитить токен и не потерять доступ к пылесосу

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

  • 🔐 Не делитесь токеном в открытых источниках (форумы, чаты). Злоумышленники могут получить контроль над вашим пылесосом.
  • 📝 Сохраните токен в защищённом месте: менеджере паролей (например, KeePass) или зашифрованном файле.
  • 🔄 Регулярно обновляйте токен для динамических моделей (раз в 24 часа) через скрипт или Home Assistant.
  • 🚫 Не используйте токен в недоверенных приложениях. Некоторые "кастомные" прошивки могут содержать вредоносный код.

Если вы продаёте пылесос, обязательно:

  1. Сбросьте его к заводским настройкам через Настройки → Сброс в Mi Home.
  2. Удалите устройство из своего аккаунта Mi Account.
  3. Удалите все сохранённые токены из своих записей.

Для автоматического обновления токена в Home Assistant добавьте в configuration.yaml следующий код:

vacuum:

- platform: xiaomi_miio

host: АДРЕС_ПЫЛЕСОСА

token: ВАШ_ТОКЕН

name: "Mi Robot Vacuum"

model: roborock.vacuum.a10 # Укажите вашу модель

Сравнение методов получения токена: какой выбрать

Выбор метода зависит от вашего уровня подготовки и модели пылесоса. Ниже — сравнительная таблица:

Метод Сложность Подходит для моделей Требуемые инструменты Надёжность
Перехват трафика (Fiddler) Средняя Все модели до 2023 г. Компьютер, смартфон Высокая
Резервная копия Mi Home Низкая Модели до 2021 г. Только смартфон Средняя (не всегда работает)
Python-скрипт (mirobo) Высокая Все модели (включая новые) Python, командная строка Очень высокая
Mitmproxy (продвинутый перехват) Очень высокая Все модели Linux/Mac, Mitmproxy Высокая

Для большинства пользователей оптимальным будет перехват трафика через Fiddler или Python-скрипт. Если вы не хотите возиться с настройками, попробуйте метод с резервной копией — но будьте готовы, что он может не сработать.

Внимание! Для моделей Xiaomi с прошивкой v3.5.8_2023 и новее (например, Xiaomi Vacuum Cleaner G20) стандартные методы могут не работать из-за нового протокола шифрования. В этом случае используйте специализированные инструменты вроде DreameBot или Valetudo-RE.

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

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

Да, все описанные методы (перехват трафика, резервная копия, Python-скрипт) работают без root. Root-права могут понадобиться только для перехвата HTTPS-трафика на некоторых версиях Android (например, 10+), но это решается установкой пользовательского сертификата.

Почему токен перестаёт работать после обновления прошивки?

Скорее всего, обновление сбросило привязку устройства к аккаунту. В этом случае нужно:

  1. Удалить пылесос из Mi Home.
  2. Сбросить его к заводским настройкам (кнопка Reset на корпусе).
  3. Подключить заново и получить новый токен.

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

Нет, токен уникален для каждого устройства. Однако один аккаунт Mi Account может управлять несколькими пылесосами — для каждого будет сгенерирован свой токен.

Как проверить, действителен ли токен?

Выполните команду в терминале:

mirobo --ip АДРЕС_ПЫЛЕСОСА --token ВАШ_ТОКЕН status

Если устройство ответит данными о состоянии (например, уровнем заряда), токен действует. Ошибка Invalid token означает, что ключ неверный или устарел.

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

Блокировка происходит при подозрении на бот-активность (например, если вы отправляете более 100 запросов в минуту). Чтобы разблокировать аккаунт:

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