Владельцы современных систем уборки часто сталкиваются с необходимостью интеграции своего устройства в экосистемы умного дома, выходящие за рамки стандартного приложения. Для моделей, выпущенных в 2021 году, таких как Xiaomi Mi Robot Vacuum Mop 2 или Roborock S7 (работающих на платформе Xiaomi), критически важным параметром становится уникальный идентификатор безопасности. Этот ключ, известный как токен, необходим для локального управления устройством через протокол Miio, что позволяет использовать расширенные функции в Home Assistant, Node-RED или других платформах автоматизации.
Получение этого ключа не всегда является очевидной задачей, так как производитель сознательно скрывает его в глубоких слоях системных файлов приложения для обеспечения безопасности. Без этого 32-символьного hexadecimal-ключа вы не сможете отправлять команды напрямую на устройство по локальной сети. В этой статье мы разберем актуальные методы извлечения токена для устройств 2021 модельного года, которые могут отличаться от старых схем из-за обновлений протоколов шифрования.
⚠️ Внимание: Процесс получения токена часто требует root-прав на Android или использования эмуляторов с перехватом трафика. Все действия вы выполняете на свой страх и риск, хотя описанные методы считаются безопасными при аккуратном исполнении.
Существует несколько проверенных способов добычи заветной строки символов. Выбор конкретного метода зависит от вашей технической подготовки, наличия компьютера и операционной системы, которую вы используете в качестве основного инструмента. Наиболее популярными остаются метод перехвата трафика через Charles Proxy, использование модифицированных версий приложения Mi Home с включенным логированием, а также прямое извлечение из базы данных Android.
Подготовка окружения и необходимые инструменты
Прежде чем приступать к извлечению токена, необходимо подготовить программное обеспечение. Если вы планируете использовать метод сниффинга трафика, вам потребуется компьютер (Windows, macOS или Linux) и смартфон, подключенные к одной Wi-Fi сети. Основным инструментом здесь выступает Charles Proxy или его бесплатный аналог mitmproxy. Эти программы позволяют перехватывать и анализировать HTTPS-запросы, которые ваше устройство отправляет на серверы Xiaomi.
Второй, более простой для новичков путь, требует установки специального плагина или модифицированного APK-файла приложения Mi Home. Официальная версия приложения из Google Play или AppStore не позволяет просматривать токены подключенных устройств в открытом виде. Вам придется скачать специальную версию для разработчиков или использовать плагины, внедряемые в систему через Taichi или Xposed Framework, если у вас есть root-права.
- 📱 Смартфон на базе Android (для методов с перехватом трафика или root-доступом) или iOS (только для метода с компьютером и iTunes).
- 💻 Персональный компьютер для установки прокси-сервера и анализа пакетов данных.
- 📡 Стабильное подключение к Wi-Fi сети, к которой подключен робот-пылесос.
- 🔐 Учетная запись Mi Account, к которой привязано устройство (токен генерируется индивидуально для каждой пары аккаунт-устройство).
Важно понимать, что токен привязывается не только к серийному номеру устройства, но и к аккаунту пользователя. Если вы смените регион в приложении или войдете под другим логином, вам придется повторять процедуру заново. Убедитесь, что вы знаете свои учетные данные, так как в процессе настройки прокси может потребоваться повторная авторизация.
Метод перехвата трафика через Charles Proxy
Этот способ считается «золотым стандартом» и работает практически для всех моделей 2021 года, включая Xiaomi Vacuum Mop 2 Pro. Суть метода заключается в том, чтобы заставить ваше мобильное устройство отправлять весь интернет-трафик через компьютер, где установлен Charles Proxy. Это позволит увидеть содержимое запросов, которые обычно скрыты шифрованием SSL.
Для начала установите Charles Proxy на компьютер и запустите его. В меню Proxy → Proxy Settings запишите порт (по умолчанию 8888). Затем на компьютере и смартфоне нужно установить SSL-сертификат. На Android это делается через настройки Wi-Fi (указание прокси вручную), на iOS — через профиль конфигурации. После установки сертификата и включения прокси, весь трафик смартфона пойдет через компьютер.
☑️ Проверка перед запуском Charles Proxy
Теперь откройте приложение Mi Home на смартфоне. Вам нужно вызвать обновление статуса устройства. Потяните список устройств вниз для обновления или войдите в интерфейс робота и нажмите на кнопку обновления состояния. В этот момент в окне Charles Proxy появится множество запросов. Вам нужно найти запрос, содержащий слово device или bind в адресе, и посмотреть его содержимое в вкладке Contents.
В ответе сервера (Response) ищите поле token. Оно будет выглядеть как длинная строка из 32 символов (цифры и буквы a-f). Скопируйте его. Если вы видите много запросов, ориентируйтесь на домен api.io.mi.com или smart home. Часто токен передается именно при первоначальной загрузке списка устройств или при входе в карточку устройства.
Использование плагинов и модифицированных приложений
Если возиться с прокси и сертификатами кажется слишком сложным, можно воспользоваться готовыми решениями, созданными энтузиастами. Для пользователей Android существуют плагины, которые внедряются в процесс работы официального приложения Mi Home и выводят токен прямо на экран или сохраняют в лог. Одним из самых популярных решений является плагин для Taichi или VirtualXposed.
Этот метод не требует root-прав, если использовать виртуальное окружение. Вы устанавливаете Taichi, добавляете туда приложение Mi Home и необходимый плагин (например,"Mi Home Token Plugin"). После запуска приложения через Taichi, при подключении к роботу, плагин перехватит ответ сервера и покажет всплывающее уведомление с токеном.
⚠️ Внимание: Использование модифицированных APK-файлов или плагинов несет потенциальный риск утечки данных аккаунта. Используйте только проверенные репозитории, такие как GitHub официальных разработчиков интеграций, и не применяйте эти методы на основных аккаунтах с критически важными данными.
Для пользователей iOS ситуация сложнее из-за закрытости системы. Единственный рабочий вариант без джейлбрейка — это использование метода с резервным копированием. Вы делаете бэкап iPhone на компьютер, затем с помощью утилиты iMazing или iPhone Backup Extractor извлекаете файлы приложения Mi Home. Внутри базы данных MiHome.sqlite в таблице Device часто можно найти поле token.
Однако, в последних версиях iOS и обновленных приложениях Xiaomi этот метод может не сработать, так как данные начали шифровать или переносить в защищенное хранилище ключей. Поэтому для владельцев iPhone метод с Charles Proxy остается наиболее надежным, несмотря на свою трудоемкость.
Получение токена через ADB и системные файлы
Для продвинутых пользователей Android, имеющих доступ к ADB (Android Debug Bridge), существует прямой способ получения токена из системных файлов приложения. Этот метод требует, чтобы на телефоне была включена отладка по USB и, в некоторых случаях, root-права, хотя на старых версиях Android можно было вытаскивать данные и без них через бэкап.
Суть метода заключается в извлеченииSharedPreferences приложения Mi Home. Путь к файлу обычно выглядит так: /data/data/com.xiaomi.smarthome/shared_prefs/miio_local_device.xml или аналогичном. Внутри этого XML-файла хранятся данные о подключенных устройствах, включая их токены.
adb pull /data/data/com.xiaomi.smarthome/shared_prefs/miio_local_device.xml./
Если у вас нет root-прав, но есть возможность сделать полный бэкап приложения через ADB (команда adb backup), можно распаковать архив .ab и найти там нужный XML. Однако, начиная с Android 9 и выше, возможность создания полных бэкапов через ADB часто заблокирована производителями, что делает этот метод менее универсальным, чем перехват трафика.
Что делать, если файл пустой или не читается?
Если вы не можете прочитать файл или он пуст, это значит, что у вас нет необходимых прав доступа. В таком случае единственное решение — использовать метод с Charles Proxy на компьютере или найти устройство с более старой версией Android, где ограничения безопасности были мягче. Также можно попробовать запустить эмулятор Android на ПК (например, Nox или BlueStacks), установить туда Mi Home и применить метод ADB уже внутри эмулятора, где получить root-права гораздо проще.
Стоит отметить, что для моделей 2021 года структура файлов могла измениться. Если вы не находите токен в привычном месте, попробуйте поискать в папке files внутри директории приложения или в логах, если включено логирование отладки. Ищите строки, содержащие did (Device ID) вашего пылесоса, рядом с ними обычно находится и искомый токен.
Таблица соответствия моделей и особенностей токенов
Различные модели роботов-пылесосов, выпущенные в 2021 году под брендом Xiaomi или суббрендами (Roborock, Dreame, Viomi), могут иметь нюансы в генерации и хранении токенов. Ниже приведена таблица, помогающая идентифицировать особенности для популярных устройств.
| Модель устройства | Платформа | Особенности токена | Регион сервера |
|---|---|---|---|
| Xiaomi Vacuum Mop 2 | Mi Home | Стандартный 32-символьный hex | Европа/Россия |
| Roborock S7 | Roborock/Mi Home | Требуется привязка к Mi Account | Глобальный |
| Dreame D9 | Mi Home | Может требовать сброса Wi-Fi | Китай/Глобал |
| Viomi S9 | Viomi Home | Используется другой протокол (V2) | Зависит от версии |
Обратите внимание, что устройства на платформе Viomi Home иногда используют отличные от стандартных методы авторизации. Для них может потребоваться отдельный плагин или использование специализированных скриптов на Python, которые эмулируют вход в систему Viomi. Токен в таких случаях также часто можно добыть через сниффинг, но адрес сервера будет отличаться (например, api.viomi.com).
Если ваш пылесос был куплен в Китае (китайская версия), но вы используете его с европейским аккаунтом, могут возникнуть проблемы с отображением токена. В этом случае попробуйте временно сменить регион в приложении Mi Home на «Китай», перепривязать устройство и снова попытаться перехватить токен. После получения ключа регион можно вернуть обратно.
Решение и возможные ошибки
В процессе получения токена пользователи часто сталкиваются с типичными проблемами. Одна из самых распространенных — ошибка SSL в приложении Charles. Если вы видите красные значки или приложение пишет, что соединение не защищено, значит, вы неправильно установили сертификат. На Android 7 и выше установка пользовательских сертификатов требует дополнительных манипуляций или root-прав, так как система по умолчанию не доверяет таким сертификатам.
Еще одна частая ошибка — получение токена длиной не в 32 символа. Это сигнал о том, что вы скопировали не тот параметр. Токен Miio всегда представляет собой строку из 32 шестнадцатеричных символов. Если символов больше или меньше, или в строке есть спецсимволы, значит, это не токен. Также убедитесь, что вы копируете токен именно для того устройства, которое нужно, сверив MAC-адрес или Device ID.
- 🚫 Ошибка подключения: Если робот не отвечает на команды после ввода токена, проверьте, не сменился ли IP-адрес устройства. Для локального управления желательно закрепить IP за пылесосом в настройках роутера (DHCP Reservation).
- 🔄 Смена пароля Wi-Fi: При изменении пароля от домашней сети токен устройства может быть сброшен или стать невалидным. Потребуется повторная процедура получения.
- 🌍 Блокировка по регионам: Некоторые сервера Xiaomi блокируют частые запросы на получение токена с одного IP. Делайте паузы между попытками.
⚠️ Внимание: Если вы сбросите настройки Wi-Fi на самом роботе-пылесосе (зажав кнопки сброса), старый токен перестанет действовать. Вам придется заново привязывать устройство в приложении и заново добывать новый токен.
Интеграция и использование полученного токена
После успешного извлечения 32-символьного ключа наступает этап его практического применения. Чаще всего токен вводят в настройки интеграции Home Assistant. В конфигурационный файл configuration.yaml добавляется запись с IP-адресом устройства, токеном и моделью. Это позволяет управлять пылесосом без облака, запускать уборку по расписанию, зависящему от погоды, или получать уведомления о заполнении контейнера прямо в Telegram.
Для локального управления можно использовать и командную строку, установив утилиту miio (часть проекта python-miio). Это дает возможность отправлять команды напрямую. Например, команда для запуска уборки будет выглядеть как вызов метода vacuum.start через CLI.
miio --ip 192.168.1.50 --token ВАШ_ТОКЕН vacuum start
Использование токена открывает доступ к скрытым функциям, которые не доступны в официальном приложении. Вы можете настроить зонную уборку с точностью до координат, изменить скорость вращения щетки за пределами стандартных режимов или даже прошить устройство альтернативной прошивкой (Valetudo), полностью отключив его от серверов Xiaomi и сделав полностью локальным.
Вопросы и ответы (FAQ)
Можно ли получить токен, если я не знаю пароль от Wi-Fi, к которому подключен робот?
Нет, для первоначальной настройки и генерации токена устройство должно быть подключено к сети. Однако, если робот уже настроен, вы можете узнать токен через методы, описанные выше (ADB, бэкап), не зная пароля от Wi-Fi, но зная пароль от аккаунта Mi.
Сколько действует токен? Нужно ли его обновлять?
Токен является статическим и действует бессрочно, пока вы не выполните сброс устройства до заводских настроек или не смените аккаунт Mi, к которому оно привязано. В обычных условиях обновлять его не нужно.
Безопасно ли передавать токен сторонним сервисам?
Токен дает полный контроль над устройством в вашей локальной сети. Передавайте его только доверенным системам автоматизации (как Home Assistant), которые работают локально. Не вводите токен на подозрительных сайтах или в неизвестные приложения.
Что делать, если токен не подходит для Home Assistant?
Убедитесь, что вы скопировали его без лишних пробелов в начале или конце строки. Проверьте, что IP-адрес устройства верен и не изменился. Также убедитесь, что модель устройства выбрана правильно в настройках интеграции.