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

Владельцы современных устройств для уборки часто сталкиваются с необходимостью расширить функционал гаджета за пределы стандартного приложения. Особенно это актуально для энтузиастов умного дома, которые хотят связать робот-пылесос с другими системами, такими как Home Assistant или Яндекс.Умный дом. Ключевым элементом для успешной интеграции является уникальный идентификатор доступа, который часто называют токеном. Без этого цифрового ключа большинство сторонних интеграций просто не будут работать, оставляя устройство в изолированной экосистеме производителя.

Процесс получения секретного ключа может показаться сложным для неподготовленного пользователя, но на самом деле существует несколько проверенных методов. Xiaomi не скрывает эту информацию намеренно, но и не выводит её на видное место в интерфейсе, следуя политике безопасности. Вам потребуется немного терпения и, возможно, стороннее программное обеспечение, чтобы извлечь необходимые данные для дальнейшей настройки.

В этой статье мы разберем самые актуальные способы добычи токена в текущем году. Мы рассмотрим как программные методы через специальные утилиты, так и технические нюансы работы API. Внимание: все действия вы производите на свой страх и риск, хотя описанные ниже методы считаются безопасными и не требуют перепрошивки устройства.

Зачем вообще нужен токен для пылесоса

Многие пользователи задаются вопросом, почему нельзя просто ввести логин и пароль от аккаунта в стороннее приложение. Дело в том, что протокол MiIO, на котором базируется общение большинства устройств Xiaomi с сервером, использует двухфакторную схему авторизации. Приложение выступает в роли посредника, но для прямого управления локально или через альтернативные шлюзы требуется статический ключ. Именно токен подтверждает, что конкретное приложение имеет право отдавать команды конкретной модели, будь то Roborock S5 или Xiaomi Vacuum Mop 2 Pro.

Без этого ключа невозможно реализовать продвинутые сценарии автоматизации. Например, вы не сможете запустить уборку голосом через Алису, если интеграция настроена неправильно, или создать скрипт, включающий пылесос при выходе из дома по геолокации. Локальное управление также становится недоступным, что критично, если интернет-канал нестабилен. Токен выступает в роли цифрового пропуска, который связывает ваш аккаунт и физическое устройство.

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

Кроме того, наличие токена позволяет использовать альтернативные клиенты, которые могут иметь более удобный интерфейс или расширенные функции, отсутствующие в официальном приложении Mi Home. Некоторые энтузиасты даже пишут собственные скрипты на Python для управления уборкой, что требует наличия этого секретного параметра.

📊 Какой метод интеграции вы планируете использовать?
Home Assistant
Яндекс.Умный дом
Свой скрипт (Python/Node.js)
Официальное приложение

Подготовка к извлечению ключа доступа

Прежде чем приступать к техническим манипуляциям, необходимо убедиться, что ваше оборудование готово к работе. В первую очередь проверьте, что пылесос и ваш смартфон или компьютер находятся в одной локальной сети Wi-Fi. Чаще всего устройства работают на частоте 2.4 ГГц, поэтому убедитесь, что роутер раздает сигнал именно в этом диапазоне, так как многие модели пылесосов не видят сети 5 ГГц.

Вам также понадобится аккаунт Xiaomi, к которому привязано устройство. Если вы используете региональные сервера (например, Россия или Европа), процесс может отличаться от работы с китайскими серверами. Для некоторых методов потребуется установить дополнительное программное обеспечение на ПК или смартфон. Это могут быть специализированные утилиты для работы с API или эмуляторы Android.

Важно заранее узнать IP-адрес вашего пылесоса в локальной сети. Это можно сделать через настройки роутера или воспользовавшись сетевыми сканерами. Знание IP-адреса упростит процесс, если вы решите использовать командную строку или специализированные плагины. Без стабильного соединения между управляющим устройством и пылесосом извлечение токена может занять гораздо больше времени.

☑️ Чек-лист перед началом

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

Метод первый: использование плагинов для Home Assistant

Наиболее популярным способом среди владельцев умного дома является использование платформы Home Assistant. Даже если вы не планируете оставлять эту систему permanently, она предоставляет отличный инструментарий для получения токена. Вам потребуется установить интеграцию Xiaomi Mi Robot Vacuum. В процессе настройки система сама попытается вытащить токен из устройства, используя ваши учетные данные.

После добавления устройства в Home Assistant, токен часто можно найти в файлах конфигурации системы. Путь к файлу обычно выглядит как /config/.storage/core.config_entries. Открыв этот файл текстовым редактором, вы сможете найти запись, соответствующую вашему пылесосу, и скопировать значение поля token. Это один из самых надежных способов, так как он использует официальные библиотеки.

Если автоматическое добавление не сработало, можно воспользоваться инструментом miot через командную строку, если Home Assistant установлен на Linux или Raspberry Pi. Этот метод требует минимальных знаний командной строки, но дает гарантированный результат. Главное — правильно указать сервер, соответствующий вашему региону.

⚠️ Внимание: При использовании Home Assistant убедитесь, что вы не создали конфликтующих правил автоматизации, которые могут заблокировать доступ к устройству во время процесса получения токена.

Преимущество этого метода в том, что вы сразу получаете полностью рабочую интеграцию. Вам не придется искать дополнительные скрипты или разбираться с ручным вводом параметров. Система сама проверит актуальность токена и, в случае его смены (что бывает редко), попытается обновить его.

Метод второй: Python-скрипт miio-token-extractor

Для более технически продвинутых пользователей существует отличный инструмент, написанный на языке Python. Библиотека python-miio позволяет взаимодействовать с устройствами Xiaomi напрямую. Для начала вам потребуется установить сам Python и менеджер пакетов pip на ваш компьютер. После установки зависимостей вы сможете запустить скрипт для извлечения токена.

Процесс выглядит следующим образом: вы вводите свои учетные данные (логин и пароль от аккаунта Xiaomi), и скрипт обращается к серверу, получая список устройств и их токены. Это возможно благодаря тому, что при авторизации в приложении токен также передается клиенту. Скрипт эмулирует этот процесс.

pip install python-miio

miio extract-tokens --username ваш_логин --password ваш_пароль

Важно отметить, что использование скриптов сторонних разработчиков требует доверия к коду. Рекомендуется запускать такие утилиты в изолированном окружении или предварительно изучить исходный код на предмет наличия вредоносных функций. Однако, библиотека python-miio является открытой и широко используется сообществом.

Этот метод хорош тем, что он не требует установки тяжелых систем вроде Home Assistant. Вы получаете токен быстро и можете использовать его где угодно. Однако, если на вашем аккаунте включена двухфакторная авторизация, могут возникнуть сложности, так как скрипт должен уметь обрабатывать SMS-коды или push-уведомления.

Метод третий: Android-эмуляторы и сниффинг трафика

Если программные методы не работают, можно попробовать перехватить токен напрямую из сетевого трафика мобильного приложения. Для этого вам понадобится эмулятор Android, например, BlueStacks или NoxPlayer, установленный на ПК. Внутри эмулятора необходимо установить приложение Mi Home и авторизоваться.

Суть метода заключается в том, что при каждом запросе к устройству (например, при запуске уборки) приложение отправляет токен в заголовке или теле запроса. Используя инструменты для отладки сети (например, встроенный в эмулятор или сторонние снифферы), можно отследить этот запрос. Токен будет представлен в виде 32-значной hexadecimal строки.

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

Метод Сложность Нужен ПК Риск блокировки
Home Assistant Средняя Да Низкий
Python скрипт Высокая Да Средний
Сниффинг (Android) Высокая Да Низкий
Root-права (Android) Очень высокая Нет Высокий

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

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

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

Другая частая ошибка — использование устаревших версий библиотек. Протоколы Xiaomi периодически обновляются, и старые версии python-miio могут не поддерживать новые алгоритмы шифрования. Всегда обновляйте пакеты до последней версии перед запуском скриптов. Также проблемы могут возникать из-за блокировок IP-адресов со стороны серверов Xiaomi при слишком частых запросах.

Иногда токен может быть невалидным или истекшим. Хотя токены Xiaomi живут достаточно долго, в целях безопасности их срок действия может быть ограничен. Если вы получили ошибку "Invalid token" при попытке управления, процедуру извлечения придется повторить заново. Также убедитесь, что на устройстве установлена последняя версия прошивки.

⚠️ Внимание: Не пытайтесь brute-force (подобрать) токен перебором. Это технически невозможно из-за длины ключа (128 бит), а множество неудачных попыток входа приведет к временной блокировке вашего аккаунта.

Если вы используете корпоративную сеть или сложные настройки роутера, убедитесь, что не блокируются необходимые порты. Устройства Xiaomi используют специфические порты для локального управления, и их закрытие может привести к ошибке таймаута при попытке связи.

Безопасность и хранение секретных данных

После успешного извлечения токена встает вопрос о его сохранности. Токен — это фактический ключ от вашего устройства. Хранить его в открытом виде в текстовых файлах на рабочем столе небезопасно. Рекомендуется использовать менеджеры паролей или зашифрованные хранилища конфигураций, если вы внедряете устройство в систему умного дома.

Если вы используете Home Assistant, токены хранятся в зашифрованном виде, что является хорошим стандартом безопасности. Однако, если вы передаете токен в скрипты или другие приложения, убедитесь, что доступ к этим файлам ограничен только вашим пользователем. Не загружайте файлы конфигурации с токенами на публичные хостинги кода, такие как GitHub, даже в приватные репозитории без дополнительной защиты.

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

Помните, что токен дает полный доступ к управлению устройством в локальной сети, но не дает доступа к вашим личным данным аккаунта или другим устройствам, если они не используют общий ключ шифрования (что маловероятно для современных версий протокола). Тем не менее, осторожность не помешает.

Использование токена в сторонних системах

Получив заветную строку символов, вы можете интегрировать пылесос практически куда угодно. В Home Assistant это делается через YAML-конфигурацию или интерфейс пользователя, где нужно указать IP, токен и модель устройства. После этого в системе появятся сервисы для запуска уборки, возврата на базу, установки мощности всасывания и даже построения карты.

Для любителей программирования открываются широкие возможности. Используя библиотеку python-miio, можно написать скрипт, который будет анализировать карту загрязнений (если модель поддерживает) и запускать уборку только в определенных комнатах. Или, например, синхронизировать работу пылесоса с умными розетками: если пылесос начал работу, розетка с утюгом выключается.

Также токен позволяет реализовать голосовое управление через локальные сервера, такие как Rhasspy или Home Assistant Voice, без передачи данных в облако крупных корпораций. Это повышает приватность и скорость отклика системы. Вы сможете говорить: "Алиса, попроси пылесос убраться на кухне", и команда уйдет напрямую в локальную сеть.

Не забывайте, что использование токена берет на вас ответственность за стабильность работы устройства. Ошибочные скрипты могут "загнать" пылесос в угол или заставить его работать непрерывно, расходуя ресурс батареи. Всегда тестируйте новые сценарии под наблюдением.

Где именно в файлах Home Assistant искать токен?

Токен обычно находится в файле .storage/core.config_entries в папке конфигурации Home Assistant. Ищите запись с доменом "xiaomi_miio" или "xiaomi_vacuum". Внутри JSON-объекта будет поле "data", а в нем — "token". Файл может быть скрытым, включите отображение скрытых файлов в проводнике.

Можно ли получить токен, если пылесос куплен б/у и привязан к чужому аккаунту?

Нет, это невозможно. Токен привязан к аккаунту, к которому устройство было добавлено. Вам необходимо попросить предыдущего владельца отвязать устройство от своего аккаунта в приложении Mi Home, после чего вы сможете привязать его к своему и получить свой токен.

Сменится ли токен, если я перепрошиваю пылесос?

Обычная перепрошивка (обновление firmware) через официальное приложение не меняет токен. Однако полный сброс до заводских настроек (Hard Reset) и повторная привязка к аккаунту приведут к генерации нового токена. Старый ключ перестанет работать.

Работает ли этот метод для пылесосов Roborock?

Да, пылесосы Roborock (S5, S6, S7 и др.) используют тот же протокол MiIO и экосистему Xiaomi. Процесс получения токена для них абсолютно идентичен описанному в статье. Разница может быть только в модели устройства при настройке интеграции.

Что делать, если скрипт выдает ошибку "Unable to discover device"?

Эта ошибка означает, что управляющее устройство не видит пылесос в локальной сети. Проверьте, находятся ли они в одной подсети. Убедитесь, что на роутере не включена изоляцию клиентов AP (AP Isolation). Также проверьте правильность IP-адреса, который вы указываете в параметрах запуска.