Как извлечь токены устройств Xiaomi для интеграции в Home Assistant
Умные бытовые приборы от компании Xiaomi и ее многочисленных суббрендов (таких как Roborock, Smartmi, Yeelight, Viomi) пользуются огромной популярностью благодаря отличному соотношению цены и функциональности. Однако по умолчанию большинство этих устройств работают через китайские или глобальные облачные серверы производителя. Это приводит к заметным задержкам при передаче команд и зависимости от наличия интернет-соединения. Для интеграции этих приборов в локальную систему Home Assistant по безопасному протоколу miio требуется получить уникальный 32-значный ключ шифрования — так называемый miio-токен доступа.
Получение этого токена является обязательным условием для создания надежного локального управления, которое не зависит от внешних серверов. Обладая токеном, Home Assistant сможет отправлять команды напрямую устройству в вашей локальной сети. В данном руководстве мы подробно разберем наиболее простой и безопасный способ извлечения токенов с использованием облачных данных.
Шаг 1. Первоначальная привязка устройства в приложении Mi Home
Прежде чем пытаться извлечь токен, необходимо привязать умный прибор к вашей учетной записи Xiaomi. Токен генерируется облаком в момент первого подключения устройства к беспроводной Wi-Fi сети и обновляется при каждом сбросе сетевых настроек.
- Установите на смартфон официальное приложение Mi Home.
- Авторизуйтесь под своей учетной записью. При этом обратите внимание на выбранный регион (например, «Материковый Китай» или «Россия»). Устройства, предназначенные для разных рынков, должны быть привязаны к соответствующему региону.
- Добавьте устройство в приложение, следуя подсказкам на экране. Убедитесь, что оно успешно управляется со смартфона.
- Не сбрасывайте Wi-Fi на устройстве после этого, иначе облачный сервер сгенерирует новый токен, и старый ключ перестанет работать.
Шаг 2. Запуск утилиты Xiaomi Cloud Tokens Extractor
Существует несколько методов извлечения токенов: перехват сетевого трафика, использование старых модифицированных версий Mi Home или резервное копирование базы данных Android. Однако самым надежным и простым способом в настоящее время является использование консольной утилиты Xiaomi Cloud Tokens Extractor, написанной на языке Python. Она напрямую подключается к серверам Xiaomi и считывает токены из вашей учетной записи.
Для этого выполните следующие действия:
- Скачайте готовую скомпилированную версию утилиты для вашей операционной системы (Windows, macOS или Linux) с официального репозитория на GitHub.
- Откройте терминал или командную строку в папке с загруженным файлом.
- Запустите утилиту командой
token_extractor(или дважды кликните по файлу в проводнике). - Программа попросит ввести имя пользователя (или ID аккаунта Mi) и пароль.
- Далее укажите код региона. Если вы используете серверы в Китае, введите
cn, если в России —ru, для Европы —de. Если вы не уверены, выберите вариантall, чтобы утилита опросила все доступные серверы.
TIP
Утилита не сохраняет ваши учетные данные локально и отправляет их по защищенному протоколу HTTPS непосредственно на серверы авторизации Xiaomi, что гарантирует безопасность вашего аккаунта.
Шаг 3. Фиксация локальных IP-адресов и токенов
После успешной авторизации программа выведет в окно консоли структурированный список всех устройств, привязанных к вашему аккаунту.
Пример вывода программы:
Device Name: Робот-пылесос
IP Address: 192.168.1.45
MAC Address: 00:1A:2B:3C:4D:5E
Token: d41d8cd98f00b204e9800998ecf8427e
Model: roborock.vacuum.s5
Аккуратно скопируйте 32-значную строку из поля Token и запишите текущий IP-адрес устройства.
IMPORTANT
Для стабильной работы локальной интеграции обязательно настройте статическое резервирование IP-адресов на вашем домашнем роутере для всех устройств Xiaomi. Если роутер переназначит IP-адрес устройству после перезагрузки, Home Assistant потеряет связь с ним, хотя сам токен при этом останется прежним.
Шаг 4. Настройка интеграции в Home Assistant и проброс в Алису
Теперь, имея на руках IP-адрес и токен, мы можем добавить устройство в локальный умный дом.
- Откройте Home Assistant, перейдите в Настройки -> Устройства и службы.
- Нажмите Добавить интеграцию и найдите Xiaomi Miio.
- Выберите тип вашего устройства (например, пылесос или увлажнитель).
- Введите IP-адрес и вставьте скопированный токен. Нажмите Отправить.
- Устройство добавится в систему, и вы получите полный локальный контроль над ним.
Для того чтобы управлять этим устройством голосом, пробросьте его в Алису. Настройка шлюзов взаимодействия описана в статье о подключении Xiaomi Gateway к Home Assistant. После настройки шлюза добавьте сущность в фильтр Yandex Smart Home в вашем configuration.yaml и обновите конфигурацию устройств в приложении Яндекса.
Возможные проблемы и их решение
Если утилита выдает ошибку авторизации, дважды проверьте правильность ввода пароля. Также убедитесь, что на вашем аккаунте не включена двухфакторная аутентификация (2FA), которая может временно блокировать сторонние подключения к API. На время работы скрипта 2FA рекомендуется отключить в личном кабинете Xiaomi.
Если после успешного добавления устройства в Home Assistant статус сущности отображается как unavailable, проверьте настройки сетевого экрана (брандмауэра) на вашем роутере. Устройства Xiaomi общаются с сервером по портам UDP 54321 и 54322, и эти порты должны быть открыты внутри вашей локальной сети.
Инструкция по настройке
Подключение прибора к экосистеме Mi Home
Добавьте ваше устройство Xiaomi (пылесос, увлажнитель или лампу) в официальное мобильное приложение Mi Home. Зафиксируйте регион учетной записи.
Запуск утилиты извлечения токенов
Скачайте кроссплатформенную программу Xiaomi Cloud Tokens Extractor. Запустите ее на своем компьютере и введите учетные данные от аккаунта Xiaomi.
Копирование токена и определение IP
Найдите в полученном списке нужное устройство, скопируйте его уникальный 32-значный токен доступа (Token) и запишите локальный IP-адрес прибора.
Настройка интеграции в Home Assistant
Перейдите в веб-интерфейс Home Assistant, добавьте локальную интеграцию для вашего устройства (например, Xiaomi Miio) и укажите IP-адрес и скопированный токен.