Почему токен и IP-адрес робота-пылесоса Xiaomi так важны
Роботы-пылесосы Xiaomi (серии Mi Robot Vacuum, Viomi, Dreame) работают через облако компании, но для расширенного управления — интеграции с Home Assistant, Node-RED или сторонними приложениями вроде Valetudo — требуется локальный токен и IP-адрес устройства. Без них вы не сможете:
— Управлять пылесосом без интернета (например, через локальную сеть).
— Настраивать автоматизации по расписанию без зависимости от серверов Xiaomi.
— Использовать альтернативные прошивки или кастомные скрипты для расширенных функций (зонирование, виртуальные стены, ручные команды).
Производитель не афиширует эти данные, но их можно получить легально — без взлома или нарушения лицензионного соглашения. Далее разберём все актуальные способы для разных моделей и операционных систем.
Способ 1: Получение токена через Mi Home (официальное приложение)
Самый простой метод — извлечь токен из трафика официального приложения Mi Home. Он работает на Android (требуется root или MITM-прокси) и iOS (только с джейлбрейком или через компьютер).
Для Android (без root)
Если у вас нет прав суперпользователя, используйте HTTP-анализатор трафика:
- Установите приложение
Packet CaptureилиHTTP Toolkitиз Google Play. - Запустите захват трафика и откройте Mi Home.
- Перейдите в настройки робота-пылесоса и дождитесь синхронизации данных.
- В логах найдите запрос к домену
api.io.mi.com— токен будет в параметре"ssecurity".
Внимание! Токен в трафике передаётся в открытом виде, но его можно использовать только для локального управления (через LAN). Для облачного API потребуется дополнительная авторизация.
Для iOS (с компьютером)
На iPhone без джейлбрейка токен можно перехватить через MITM-прокси:
- 🖥️ Установите
Charles ProxyилиFiddlerна ПК/Mac. - 📱 Настройте на iPhone прокси-сервер (в
Настройки → Wi-Fi → Настроить прокси). - 🔍 Запустите захват трафика и откройте Mi Home, дождитесь обновления статуса пылесоса.
- 🔑 В логах ищите JSON с полем
"token"— это и есть нужный ключ.
Способ 2: Извлечение токена из резервной копии Mi Home
Этот метод работает на Android и не требует root-прав, но нужна резервная копия настроек Mi Home. Алгоритм:
- Откройте Mi Home, перейдите в
Профиль → Настройки → Резервное копирование. - Создайте архив и сохраните его на устройство (файл будет с расширением
.mi). - Скачайте утилиту
mihome-decrypt(Python) и распакуйте архив:
python mihome-decrypt.py -d backup.mi
В полученном файле devices.json найдите раздел с вашим пылесосом — там будут поля "token" и "localIP" (IP-адрес в локальной сети).
Предупреждение: Резервные копии Mi Home шифруются привязанным к аккаунту ключом. Если вы изменили пароль после создания бэкапа, расшифровка может не сработать.
Убедиться, что бэкап создан после последнего добавления пылесоса в Mi Home|
Скачать свежую версию Python (3.8+)|
Проверить, что файл backup.mi не повреждён (размер > 100 КБ)|
Отключить двухфакторную аутентификацию в аккаунте Xiaomi (может блокировать доступ)
-->
Способ 3: Использование скриптов для Windows/Linux/Mac
Для пользователей, предпочитающих работать на ПК, есть готовые решения:
| Метод | ОС | Требования | Ссылка |
|---|---|---|---|
mirobo.py |
Windows/Linux/Mac | Python 3.6+, python-miio |
GitHub |
TokenExtractor |
Windows | .NET Framework 4.5 | GitHub |
Home Assistant (интеграция) |
Любая | Установленный Home Assistant | Документация |
Пример работы с mirobo.py:
pip install python-miio
mirobo discover
mirobo info --ip 192.168.1.100 --token YOUR_TOKEN_HERE
Внимание! Если пылесос подключён к сети 5 ГГц, некоторые скрипты могут не обнаружить его. Переключитесь на 2.4 ГГц или укажите IP-адрес вручную.
Что делать, если скрипт не находит пылесос?
1. Проверьте, что устройство и компьютер в одной сети.
2. Отключите брандмауэр/антивирус — они могут блокировать UDP-пакеты.
3. Используйте команду arp -a (Windows) или nmap -sn 192.168.1.0/24 (Linux/Mac) для поиска IP-адреса пылесоса вручную.
4. Убедитесь, что в Mi Home пылесос не спит (нажмите "Пробудить" в приложении).
Способ 4: Ручное получение IP-адреса пылесоса
Токен — это половина дела. Для локального управления также нужен IP-адрес устройства в вашей сети. Есть 4 способа его узнать:
- 📱 Через Mi Home:
Настройки устройства → Общие → Сеть(не для всех моделей). - 🖥️ Через роутер: зайдите в веб-интерфейс (обычно
192.168.1.1) и найдите устройство по имени roborock или miio. - 🐧 Через терминал (Linux/Mac):
ping roborock-vacuum.localилиavahi-browse -r _miio._udp. - 🔍 Через сканер сети: приложения
Fing(мобильное) илиAdvanced IP Scanner(ПК).
IP-адрес пылесоса может меняться при перезагрузке роутера, если у вас не настроена привязка по MAC. Чтобы закрепить адрес:
- Найдите MAC-адрес пылесоса в настройках роутера.
- В панели администратора роутера добавьте статическую аренду DHCP для этого MAC.
Способ 5: Альтернативные методы (для продвинутых пользователей)
Если стандартные способы не сработали, попробуйте:
1. Через ADB (Android)
Если у вас есть root-доступ, можно извлечь токен из базы данных Mi Home:
adb shell
su
cd /data/data/com.xiaomi.smarthome/databases
sqlite3 mihome.db
SELECT token FROM devices WHERE model LIKE '%roborock%';
2. Через iTunes Backup (iOS)
На iPhone токен хранится в резервной копии iTunes. Используйте утилиту iMazing или iExplorer, чтобы извлечь файл mihome.sqlite из бэкапа.
3. Через облако Xiaomi (не рекомендуется)
Некоторые сервисы предлагают "вытащить" токен через аккаунт Xiaomi, но это нарушает политику конфиденциальности и может привести к блокировке устройства. Мы не рекомендуем этот метод.
Как проверить работоспособность токена и IP
Перед использованием токена в сторонних системах (например, Home Assistant) проверьте его валидность:
- Установите
python-miio:
pip install python-miio
- Выполните команду для проверки соединения:
mirobo info --ip 192.168.1.100 --token YOUR_TOKEN_HERE
Если команда вернёт данные о пылесосе (заряд батареи, статус, модель), токен и IP корректны. Ошибки вида DeviceException: Invalid token означают, что:
- 🔄 Токен устарел (переподключите пылесос в Mi Home и получите новый).
- 🌐 IP-адрес изменился (найдите актуальный через роутер).
- 🔒 Устройство привязано к другому региону (проверьте сервер в Mi Home).
Частые ошибки и их решения
При работе с токенами и IP-адресами пользователи сталкиваются с типичными проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
DeviceException: Unable to discover the device |
Пылесос не в сети или блокируется роутером | Проверьте подключение к Wi-Fi, отключите фаервол на роутере |
Invalid token |
Токен неверный или устарел | Получите новый токен (см. Способ 1 или 2) |
| Пылесос не отвечает на команды | IP-адрес изменился | Закрепите IP через DHCP или найдите новый |
Not a roborock vacuum |
Неверная модель в скрипте | Укажите правильный --model (например, roborock.vacuum.a1) |
Внимание! Если вы используете Home Assistant, убедитесь, что в конфигурации указан правильный device_id. Его можно найти в Mi Home (в адресной строке при открытии устройства) или через команду:
mirobo info --ip YOUR_IP --token YOUR_TOKEN | grep "Device ID"
FAQ: Ответы на популярные вопросы
Можно ли использовать один токен для нескольких пылесосов?
Нет, каждый робот-пылесос Xiaomi имеет уникальный токен. Он привязан к конкретному устройству и аккаунту Mi Home. Если у вас несколько пылесосов, для каждого нужно получать токен отдельно.
Что будет, если токен попадет в чужие руки?
Токен позволяет управлять пылесосом только в локальной сети. Злоумышленник не сможет удалённо подключиться к вашему устройству без доступа к вашему Wi-Fi. Однако теоретически он может:
- 🔄 Запускать/останавливать уборку.
- 📍 Получать карту помещения (если модель поддерживает сохранение карт).
- 🔋 Просматривать статус батареи и датчиков.
Чтобы отозвать токен, удалите пылесос из Mi Home и добавьте его заново.
Работает ли этот метод для пылесосов Dreame и Viomi?
Да, но с оговорками:
- Dreame: используйте приложение
Dreamehomeи перехватывайте трафик кapi.dreame.home. - Viomi: токен извлекается аналогично Xiaomi, но модель в скриптах указывайте как
viomi.vacuum.v6(или вашу версию).
Для Viomi V2/V3 может потребоваться дополнительная авторизация через miot-spec.
Как часто нужно обновлять токен?
Токен не имеет срока годности и действует до тех пор, пока:
- 🔄 Вы не удалили пылесос из Mi Home.
- 🔒 Не изменили пароль от аккаунта Xiaomi.
- 📱 Не сбросили настройки телефона (если токен извлекался из бэкапа).
Если токен перестал работать, достаточно переподключить пылесос в приложении — новый ключ сгенерируется автоматически.
Можно ли управлять пылесосом без токена?
Да, но с ограничениями:
- ✅ Через Mi Home (полный функционал, но зависит от облака).
- ✅ Через физические кнопки на корпусе (старт/стоп, возвращение на базу).
- ❌ Невозможно интегрировать с Home Assistant, Node-RED или использовать кастомные прошивки.
Для локального API токен обязателен.