Владельцы современной умной техники от компании Xiaomi часто сталкиваются с необходимостью интеграции своих устройств в альтернативные системы умного дома, такие как Home Assistant, Homebridge или Domoticz. Для успешного сопряжения оборудования с локальными серверами и сторонними платформами критически важно знать уникальный идентификатор устройства, который в терминологии экосистемы Mi IoT называется токеном. Без этого 32-значного hexadecimal-ключа управление роботом-пылесосом вне официального облака становится невозможным.
Поиск этого ключа может показаться сложной задачей для неподготовленного пользователя, так как производитель сознательно скрывает его от глаз обычного потребителя в целях безопасности. Однако существует несколько проверенных методов извлечения токена, которые варьируются от использования сторонних утилит на Android до более сложных процедур с эмуляторами iOS. В этой статье мы подробно разберем каждый способ, чтобы вы могли выбрать наиболее подходящий для вашей технической подготовки.
Стоит сразу отметить, что процедура получения токена не требует разборки устройства или пайки, но может потребовать временной установки специализированного программного обеспечения. Токен выступает в роли цифрового ключа доступа, позволяющего вашему локальному серверу авторизоваться в устройстве и отправлять ему команды напрямую через локальную сеть Wi-Fi. Это обеспечивает мгновенный отклик и работу даже при отсутствии интернета.
Зачем нужен токен и где его применяют
Основное назначение токена заключается в обеспечении безопасной связи между управляющим устройством и исполнителем команд. Официальное приложение Mi Home получает этот ключ автоматически при первом подключении и хранит его в защищенной памяти смартфона. Однако, когда вы решаете выйти за рамки экосистемы Xiaomi и подключить пылесос к системе Home Assistant или запустить локальный сервер miio, вам потребуется вручную извлечь этот ключ и прописать его в конфигурационных файлах.
Использование токена позволяет реализовать сценарии, недоступные в стандартном приложении. Например, вы можете настроить автоматическую очистку контейнера для пыли при достижении определенного уровня заряда батареи или запускать уборку по расписанию, зависящему от вашего местоположения, без задержек, характерных для облачных серверов. Локальное управление через токен также гарантирует работу устройства даже в случае временных сбоев на серверах производителя.
Важно понимать, что токен привязан к конкретному устройству и его MAC-адресу. Если вы сбросите пылесос до заводских настроек, токен, как правило, остается прежним, но в редких случаях при перепрошивке модуля Wi-Fi может измениться. Поэтому рекомендуется сохранять полученные ключи в надежном месте. Для большинства моделей, таких как Roborock S50, Xiaomi Vacuum Mop или Dreame F9, процедура извлечения идентична.
Способ получения токена через Android (Mi Home 5.x)
Наиболее простым и доступным способом для большинства пользователей является использование смартфонов на базе операционной системы Android. Метод заключается в установке модифицированной или специальной версии приложения Mi Home, которая имеет встроенную функцию логирования сетевых запросов. В отличие от стандартной версии из Google Play, этот инструмент позволяет видеть обмен данными между телефоном и пылесосом в реальном времени.
Для начала вам необходимо скачать APK-файл специального приложения, часто называемого "Mi Home Token Logger" или использовать модифицированную сборку Mi Home 5.x. После установки важно разрешить приложению доступ к сети и, в некоторых случаях, запросить root-права, хотя современные версии умеют работать и без них, используя локальный VPN-туннель для перехвата трафика. При запуске приложения и подключении к пылесосу, в логах появится строка с ключом token.
☑️ Чек-лист подготовки Android
Процесс выглядит следующим образом: вы открываете модифицированное приложение, переходите в раздел логирования и нажимаете кнопку старта записи. Затем вы открываете официальное приложение Mi Home (или используете встроенный браузер модификации) и управляете пылесосом. В этот момент в логах появится JSON-ответ от сервера, содержащий поле token и did (идентификатор устройства). Скопируйте эти значения, так как они понадобятся для настройки интеграции.
⚠️ Внимание: Использование модифицированных версий приложений может нести потенциальные риски безопасности. Убедитесь, что скачиваете APK-файлы только из проверенных источников с открытым исходным кодом, чтобы исключить внедрение вредоносного ПО.
Извлечение токена через эмулятор iOS (Charles Proxy)
Владельцы iPhone или пользователи, предпочитающие более детальный сетевой анализ, могут воспользоваться методом с использованием прокси-сервера Charles Proxy. Этот способ считается более универсальным, так как не требует установки сомнительных APK-файлов, но он технически сложнее и требует наличия компьютера (Windows, macOS или Linux) и смартфона, подключенных к одной сети Wi-Fi.
Суть метода заключается в перехвате HTTPS-трафика между приложением Mi Home на iPhone и серверами Xiaomi. Для этого на компьютере устанавливается программа Charles, которая выступает в роли посредника. На iPhone в настройках Wi-Fi прописывается IP-адрес компьютера и порт, указанный в Charles. После установки сертификата безопасности (SSL Certificate) на телефон, программа сможет расшифровывать и отображать запросы.
Как установить сертификат Charles на iPhone?
Для установки сертификата необходимо скачать его через Safari на iPhone, перейти в Настройки → Основные → Профили и установить сертификат. После этого в разделе Настройки → Основные → Об этом устройстве → Доверие необходимо включить полный доступ для сертификата Charles Proxy.">Для установки сертификата необходимо скачать его через Safari на iPhone, перейти в Настройки → Основные → Профили и установить сертификат. После этого в разделе Настройки → Об этом устройстве → Доверие необходимо включить полный доступ для сертификата Charles Proxy.!--WIDGET:spoiler
После настройки фильтрации в Charles (обычно фильтруют по домену mi.com или miot.com), нужно открыть приложение Mi Home на iPhone и выполнить любое действие с пылесосом, например, запустить уборку. В списке запросов появится POST-запрос, в теле которого (во вкладке Request или Response) будут содержаться искомые данные: uid, did, token и mac. Этот метод работает для любых версий iOS и не требует джейлбрейка.
Получение токена через Root-доступ и ADB
Для продвинутых пользователей, имеющих устройства с правами суперпользователя (Root) или возможностью отладки по USB (ADB), существует прямой метод извлечения токена из файловых хранилищ приложения. Этот способ наиболее надежен, так как позволяет получить доступ к базе данных приложения Mi Home, где токены хранятся в открытом виде (в старых версиях) или могут быть вычислены.
Если у вас есть Root-права, вы можете использовать файловый менеджер с доступом к системным разделам и перейти по пути /data/data/com.xiaomi.mihome/files/. Там может находиться файл miio.cache или база данных SQLite, содержащая информацию об устройствах. В более новых версиях Android доступ к этой папке закрыт даже для root-менеджеров без специальных разрешений, поэтому часто используют команду ADB для выгрузки файла.
adb pull /data/data/com.xiaomi.mihome/files/miio.cache ./miio.cache
После извлечения файл можно проанализировать с помощью текстового редактора или специализированных скриптов на Python, которые распарсят структуру и выдадут токены всех привязанных устройств. Этот метод требует высокой квалификации, так как неумелое обращение с системными файлами может привести к нестабильной работе смартфона.
| Метод | Сложность | Нужен ПК | Безопасность |
|---|---|---|---|
| Android (Mi Home мод) | Низкая | Нет | Средняя |
| iOS + Charles Proxy | Высокая | Да | Высокая |
| Root / ADB | Очень высокая | Да | Низкая |
| Плагин Home Assistant | Средняя | Да | Высокая |
Альтернативные методы и плагины Home Assistant
Существуют способы получения токена непосредственно через интерфейс Home Assistant, если у вас уже установлена эта система. Интеграция Xiaomi Miio или сторонние плагины, такие как Xiaomi Cloud Map Extractor, иногда позволяют извлечь токен в процессе настройки, если вы предоставите им учетные данные от аккаунта Mi Cloud. Однако этот метод менее надежен из-за периодических изменений в API облака Xiaomi.
Также стоит упомянуть утилиты для Linux, такие как miio (часть проекта python-miio). С помощью команды miio token можно попытаться получить токен, если устройство уже было добавлено в приложение на Android/iOS и данные кэшируются в известном месте. Однако чаще всего эта команда используется уже для проверки работоспособности полученного токена, а не для его первичного извлечения.
Некоторые пользователи прибегают к помощи эмуляторов Android на ПК (например, BlueStacks или NoxPlayer), устанавливая туда модифицированный Mi Home. Это позволяет совместить удобство большого экрана и методов Android, не рискуя основным смартфоном. Принцип действия остается тем же: перехват трафика внутри эмулятора.
Проверка работоспособности токена и типичные ошибки
После того как вы получили 32-значный ключ, его необходимо проверить. Самый простой способ — использовать командную строку с установленным пакетом python-miio. Команда miio --ip 192.168.1.X --token ВАШ_ТОКЕН status должна вернуть текущее состояние пылесоса (заряд батареи, статус уборки, объем пылесборника). Если вы видите ответ от устройства, значит, токен верен.
Частой ошибкой является путаница между токеном устройства и токеном аккаунта. Токен аккаунта длиннее и используется для авторизации в облаке, в то время как токен устройства (32 символа) нужен для локального управления. Также убедитесь, что при копировании вы не захватили лишние пробелы или символы переноса строки.
⚠️ Внимание: Токен чувствителен к регистру символов? Нет, hexadecimal-ключи обычно регистронезависимы, но лучше копировать их точно в том виде, в котором они отображаются, чтобы избежать ошибок при вводе в конфигурационные файлы YAML.
Если команда status возвращает ошибку таймаута, проверьте, находится ли ваш сервер управления и пылесос в одной подсети. Некоторые роутеры имеют функцию "Изоляция клиентов AP", которая запрещает устройствам Wi-Fi общаться друг с другом. Эту функцию необходимо отключить в настройках роутера.
Меры безопасности при работе с токенами
Токен — это фактический ключ от вашего устройства. Любой, кто обладает этим ключом и находится в вашей Wi-Fi сети (или имеет доступ к ней извне, если сеть не защищена), может управлять пылесосом: запускать, останавливать, менять режимы и даже обновлять прошивку. Поэтому крайне важно не передавать токен третьим лицам и не выкладывать скриншоты с конфигом в публичный доступ.
Рекомендуется сегментировать сеть умного дома. Выделите IoT-устройства в отдельный VLAN или гостевую сеть с ограниченным доступом к основной домашней сети, где находятся ваши компьютеры и смартфоны с важными данными. Это минимизирует риски в случае компрометации одного из устройств.
В случае подозрений на утечку токена, единственным способом защиты является полный сброс устройства (Reset Wi-Fi) и его повторная привязка. При переподключении модуль Wi-Fi может сгенерировать новый токен, хотя в большинстве случаев ключ остается неизменным, а сброс просто разрывает старые сессии.
Можно ли использовать один токен для нескольких пылесосов?
Нет, у каждого устройства Xiaomi свой уникальный токен. Если у вас два робота-пылесоса, вам нужно извлечь токен для каждого из них отдельно. Они не взаимозаменяемы.
Что делать, если токен перестал работать?
В редких случаях токен может измениться после обновления прошивки устройства или сброса сети. Вам придется повторить процедуру извлечения токена заново одним из описанных выше способов.
Нужен ли интернет для работы с токеном?
Для локального управления через Home Assistant или miio интернет не нужен, достаточно локальной сети Wi-Fi. Однако для первоначальной настройки и извлечения токена интернет обязателен.
Безопасно ли давать токен голосовым ассистентам?
Официальные ассистенты (Алиса, Google Assistant) работают через облако и не требуют ввода токена вручную. Токен нужен только для сторонних локальных систем. Передавать токен неизвестным скриптам опасно.