Роботы-пылесосы Xiaomi и Roborock хранят карты помещений в облачном сервисе Mi Home, что позволяет управлять уборкой удалённо. Однако многие пользователи сталкиваются с необходимостью экспортировать эти карты для анализа, резервного копирования или переноса на другое устройство. Официальных инструментов для этого нет, но существуют обходные пути — от легальных API-запросов до сторонних утилит вроде Xiaomi Cloud Map Extractor.
В этой статье разберём, как работают такие инструменты, какие риски связаны с неофициальным доступом к данным Xiaomi, и предоставим пошаговые инструкции для популярных моделей пылесосов. Особое внимание уделим вопросам безопасности — неправильные действия могут привести к блокировке аккаунта или потере доступа к картам.
Что такое Xiaomi Cloud Map Extractor и зачем он нужен
Термин Xiaomi Cloud Map Extractor обозначает набор инструментов (скрипты, программы, API-запросы), которые позволяют извлечь данные картографирования из облака Mi Home. Эти данные включают:
- 🗺️ Растровые карты — изображение помещения с разметкой стен, мебели и зон уборки.
- 📊 JSON-данные — координаты объектов, маршруты уборки, истории перемещений.
- 🔄 Мультикарты — сохранённые конфигурации для нескольких этажей (для моделей с поддержкой
multi_floor_map).
Основные причины для извлечения карт:
- 🔄 Перенос настроек на новый пылесос (например, при замене Roborock S7 на S8 Pro Ultra).
- 📱 Резервное копирование перед сбросом устройства или перепрошивкой.
- 🔍 Анализ эффективности уборки (например, поиск "мёртвых зон").
- 🛠️ Интеграция с системами умного дома (Home Assistant, Node-RED).
Важно понимать, что Xiaomi не предоставляет официального API для экспорта карт. Все существующие решения используют обратную разработку протоколов или уязвимости в авторизации. Это означает, что:
⚠️ Внимание: Использование неофициальных инструментов может нарушать политику конфиденциальности Xiaomi. В крайних случаях аккаунт могут временно заблокировать за "подозрительную активность".
- Перенос на новое устройство
- Резервное копирование
- Интеграция с Home Assistant
- Анализ уборки
- Другое
Как устроено хранение карт в облаке Mi Home
Карты роботов-пылесосов Xiaomi/Roborock хранятся в облаке по следующему принципу:
- Локальное кэширование: Пылесос отправляет данные на серверы Mi Home в зашифрованном виде (протокол
MIOT). - Облачная обработка: Серверы преобразуют сырые данные в растровые изображения и JSON-структуры.
- Синхронизация с приложением: Приложение Mi Home загружает карты по запросу пользователя.
Ключевые технические детали:
| Параметр | Описание | Пример значения |
|---|---|---|
map_id |
Уникальный идентификатор карты | 1234567890abcdef |
room_id |
ID комнаты (если разметка выполнена) | living_room_1 |
token |
Токен устройства для API-запросов | 64-char-hex-string |
did |
Идентификатор устройства | 123456789 |
Для извлечения карт необходимо:
- Получить
tokenиdidвашего пылесоса (см. раздел ниже). - Отправить авторизованный запрос на сервер Mi Home (например,
https://api.io.mi.com/app/home/device_list). - Распаковать ответ, содержащий ссылки на карты в формате
.pngили.json.
Как Xiaomi обнаруживает неофициальные запросы?
Серверы анализируют User-Agent, частоту запросов и геолокацию. Например, если запрос идёт не из официального приложения (User-Agent не совпадает с MiHome/6.0.100), система может заблокировать токен.
Пошаговая инструкция: как получить token и did пылесоса
Без token и did извлечение карт невозможно. Эти данные можно получить несколькими способами:
Способ 1: Через приложение Mi Home (Android)
Для этого потребуется:
- 📱 Смартфон на Android с root-правами или возможностью перехвата трафика.
- 🛠️ Утилита Packet Capture или Fiddler.
- 🔍 Приложение Mi Home с привязанным пылесосом.
Инструкция:
- Установите Packet Capture и настройте перехват HTTPS (установите сертификат).
- Запустите захват трафика и откройте Mi Home.
- Перейдите на страницу управления пылесосом и дождитесь загрузки карты.
- В логах найдите запрос к
api.io.mi.comс параметромdid. - Скопируйте значения
token(из заголовкаx-xiaomi-protocal-flag-client) иdid.
☑️ Подготовка к перехвату токена
Способ 2: Через скрипт Python (для продвинутых)
Если у вас есть опыт работы с Python, можно использовать библиотеку python-miio:
from miio import ChunmiVacuum
# Подключение к пылесосу (замените на свои данные)
vacuum = ChunmiVacuum(ip="192.168.1.100", token="YOUR_TOKEN_HERE")
# Получение информации об устройстве
print(vacuum.info())
print("Device ID:", vacuum.id) # Это ваш did
Для получения token без root-прав можно использовать утилиту Mi Home Token Extractor (доступна на GitHub).
⚠️ Внимание: Не делитесь своимtokenиdidс третьими лицами! Эти данные дают полный контроль над вашим пылесосом, включая возможность запуска уборки или изменения настроек.
Инструменты для извлечения карт: обзор решений
Существует несколько способов экспорта карт из облака Xiaomi. Рассмотрим самые надёжные:
1. Xiaomi Cloud Tokens Extractor (браузерное расширение)
Расширение для Chrome/Firefox, которое автоматизирует извлечение token и did:
- ✅ Не требует root-прав.
- ✅ Работает с большинством моделей (Roborock S5/S6/S7, Xiaomi Vacuum G1).
- ❌ Может не работать после обновлений Mi Home.
Ссылка на репозиторий: GitHub.
2. Valetudo (альтернативная прошивка)
Valetudo — это открытая прошивка для роботов-пылесосов, которая позволяет управлять устройством без облака Xiaomi. Преимущества:
- 🔒 Полный контроль над данными (карты хранятся локально).
- 📤 Встроенный экспорт карт в формате
.svgили.png. - ⚠️ Требует разблокировки загрузчика и прошивки через
ADB.
Поддерживаемые модели: Roborock S5/S6/S7, Xiaomi Vacuum 1S.
3. Home Assistant с интеграцией Xiaomi Miio
Если вы используете Home Assistant, можно настроить автоматический экспорт карт:
- Установите интеграцию
Xiaomi Miio. - Добавьте в конфиг
configuration.yaml:
vacuum:
- platform: xiaomi_miio
host: 192.168.1.100
token: YOUR_TOKEN_HERE
map_path: /config/vacuum_maps
Карты будут сохраняться в указанную папку в формате .png.
Если после обновления Mi Home перестал работать Xiaomi Cloud Tokens Extractor, попробуйте очистить кэш приложения или использовать версию Mi Home 5.6.42 (стабильная для извлечения токенов).
Риски и ограничения при извлечении карт
Несмотря на удобство, неофициальные методы сопряжены с рисками:
| Риск | Последствия | Как минимизировать |
|---|---|---|
| Блокировка аккаунта | Временная приостановка доступа к Mi Home (от 24 часов до недели). | Не отправляйте более 10 запросов в минуту. |
| Потеря карт | При некорректном экспорте облако может сбросить сохранённые данные. | Создайте резервную копию через Valetudo перед экспериментами. |
| Утечка токена | Злоумышленники могут управлять вашим пылесосом. | Храните токен в зашифрованном виде (например, в KeePass). |
Дополнительные ограничения:
- 🚫 Новые модели (Roborock S8 Pro Ultra, Xiaomi Vacuum X20) могут использовать усиленное шифрование, которое пока не поддерживается сторонними инструментами.
- 🔄 Мультикарты (несколько этажей) извлекаются не всегда корректно — возможны наложения слоёв.
- 📡 Для работы большинства скриптов требуется стабильное подключение к серверам Xiaomi (в Китае доступ может быть ограничен).
Если ваша модель пылесоса выпущена после 2023 года, проверьте совместимость инструментов на форумах (например, Valetudo Cloud). Новые устройства часто требуют обновлённых методов извлечения.
Альтернативные методы: если облако недоступно
Если доступ к облаку Mi Home заблокирован (например, из-за геоограничений) или вы не хотите рисковать аккаунтом, можно попробовать локальные методы:
1. Извлечение карт через ADB (для Android)
Если пылесос подключён к телефону через Mi Home, карты могут кэшироваться в папке:
/data/data/com.xiaomi.smarthome/files/map/
Чтобы получить доступ:
- Подключите телефон к ПК и запустите
adb shell. - Выполните команду:
adb pull /data/data/com.xiaomi.smarthome/files/map/ ./vacuum_maps
⚠️ Требуются root-права.
2. Использование SDK от Roborock
Roborock предоставляет ограниченный SDK для разработчиков. С его помощью можно легально получать:
- 📏 Данные о комнатах (площадь, тип покрытия).
- 📍 Координаты зон уборки.
- ❌ Но не растровые карты (только векторные данные).
3. Ручной обмер помещения
Если цифровые методы недоступны, можно восстановить карту вручную:
- Сфотографируйте план помещения (например, через Google Maps).
- Нанесите разметку в Sweet Home 3D или Floorplanner.
- Экспортируйте в формат
.svgи загрузите в пылесос через Valetudo.
FAQ: Частые вопросы по извлечению карт
Можно ли извлечь карты без root-прав на телефоне?
Да, но с ограничениями:
- Используйте Xiaomi Cloud Tokens Extractor (браузерное расширение).
- Для Home Assistant root не нужен — достаточно токена устройства.
- Если пылесос поддерживает Valetudo, прошейте его без облака.
Однако для перехвата трафика (token/did) на нерутованном телефоне потребуется MITM-прокси (например, Fiddler с сертификатом).
Почему после извлечения карта отображается некорректно?
Частые причины:
- 🔄 Карта сохранена в мультиэтажном режиме — попробуйте экспортировать каждый этаж отдельно.
- 📏 Разрешение изображения искажено — проверьте параметры
scaleиpixel_ratioв JSON-данных. - 🔒 Сервер вернул устаревшую версию карты — обновите данные в приложении Mi Home.
Для диагностики откройте JSON-файл карты и проверьте поля "frames" и "segments".
Как перенести карту с Roborock S5 на S7?
Порядок действий:
- Экспортируйте карту с S5 через Valetudo или Home Assistant (формат
.svg). - Подключите S7 к Valetudo и загрузите карту через веб-интерфейс (
Map Management → Upload). - При необходимости откорректируйте зоны уборки вручную.
⚠️ Убедитесь, что масштаб карт совпадает (проверьте реальные размеры комнат).
Законно ли использовать Xiaomi Cloud Map Extractor?
Юридический статус неоднозначен:
- ✅ Вы имеете право на личное использование данных своего устройства.
- ⚠️ Нарушаются условия обслуживания Xiaomi (раздел 5.3 о "несанкционированном доступе").
- ❌ Запрещено распространять токены или карты третьим лицам.
В большинстве стран использование таких инструментов не преследуется, если не наносит ущерб компании.
Можно ли автоматизировать экспорт карт?
Да, с помощью:
- 🤖 Home Assistant +
Python-скриптс планировщиком (cron). - 📥 Valetudo + модуль
map_saver(сохраняет карты при каждом обновлении). - 🌐 Облачных сервисов вроде IFTTT (ограниченная функциональность).
Пример скрипта для автоматического экспорта:
#!/bin/bash
# Экспорт карты раз в день (требуется miio-cli)
miio --ip 192.168.1.100 --token YOUR_TOKEN vacuum map > /maps/$(date +%Y-%m-%d).json