Как узнать токен пылесоса Xiaomi Vacuum Mop P: 5 проверенных способов (с инструкциями)

Получение токена для Xiaomi Vacuum Mop P — необходимый шаг, если вы хотите интегрировать робот-пылесос в сторонние системы умного дома (Home Assistant, Node-RED) или использовать альтернативные приложения с расширенным функционалом. Токен — это уникальный 32-символьный ключ, который служит «паролем» для взаимодействия с устройством через API Mi Home. Без него сторонние сервисы не смогут отправлять команды пылесосу.

Проблема в том, что Xiaomi официально не предоставляет токены — их нужно извлекать самостоятельно. В этой статье мы разберём все актуальные методы: от простого копирования из Mi Home (если токен уже отображается) до сложных способов с использованием ADB и специализированных утилит. Важно: некоторые методы требуют root-прав или работы с консолью, поэтому подходите к процессу внимательно.

Если вы новичок, рекомендуем начать с первых двух способов — они не требуют технических навыков. Для опытных пользователей подробно описаны методы с MITM-прокси и декомпиляцией APK, которые дают 100% результат, но занимают больше времени.

1. Способ: Извлечение токена из приложения Mi Home (если он отображается)

Самый простой метод — проверить, не отображается ли токен прямо в Mi Home. Это работает, если:

  • 🔹 Вы используете китайскую версию приложения (не глобальную).
  • 🔹 Устройство было добавлено в аккаунт до обновления политики безопасности Xiaomi (2021 год).
  • 🔹 Пылесос подключён к аккаунту с правами разработчика (например, через Xiaomi Open Platform).

Инструкция:

  1. Откройте Mi Home и перейдите в профиль устройства Xiaomi Vacuum Mop P.
  2. Нажмите на три точки (⋮) в правом верхнем углу → О программе.
  3. Прокрутите вниз до блока Token (если он есть). Скопируйте 32-значный ключ.

Если токена нет — переходите к следующим методам. Внимание: в глобальной версии Mi Home этот раздел обычно скрыт.

📊 Какой метод извлечения токена вы пробовали раньше?
Через Mi Home
С помощью ADB
Прокси-сниффинг
Декомпиляция APK
Никакой

2. Способ: Получение токена через Mi Account (официальный метод для разработчиков)

Если вы разработчик и у вас есть доступ к Xiaomi Open Platform, можно запросить токен легально. Этот способ подходит для тестирования API, но требует:

  • 📝 Зарегистрированный аккаунт разработчика на open.home.mi.com.
  • 🔐 Подтверждённую почту и телефон (китайский номер не обязателен).
  • 💻 Навыки работы с HTTP-запросами и JSON.

Пошаговая инструкция:

  1. Авторизуйтесь на account.xiaomi.com и получите client_id и client_secret в разделе Mi Account API.
  2. Сформируйте запрос на получение токена:
    POST https://account.xiaomi.com/oauth2/token
    

    Content-Type: application/x-www-form-urlencoded

    client_id=ВАШ_CLIENT_ID

    client_secret=ВАШ_CLIENT_SECRET

    grant_type=password

    username=ВАШ_EMAIL_ИЛИ_ТЕЛЕФОН

    password=ВАШ_ПАРОЛЬ

  3. В ответе будет поле mi_token — это и есть ваш токен для API.
⚠️ Внимание: Этот токен даёт доступ ко ВСЕМ устройствам в вашем аккаунте Mi Home. Не передавайте его третьим лицам!

3. Способ: Извлечение токена через ADB (для Android)

Метод требует root-прав на Android-устройстве, но даёт 100% результат. Суть: мы получаем токен из базы данных Mi Home, где он хранится в зашифрованном виде.

Что понадобится:

  • 📱 Android-смартфон с root и установленным Mi Home.
  • 💻 Компьютер с ADB (скачать здесь).
  • 🔧 Утилита SQLite Browser для просмотра базы данных.

Инструкция:

  1. Подключите смартфон к ПК и выполните команду:
    adb shell
    

    su

    cp /data/data/com.xiaomi.smarthome/databases/mihome.db /sdcard/mihome.db

    exit

    exit

    Это скопирует базу данных Mi Home на карту памяти.

  2. Скачайте mihome.db на компьютер и откройте в SQLite Browser.
  3. Перейдите в таблицу devices и найдите строку с model = "roborock.vacuum.m1s" (или аналогичным для Vacuum Mop P).
  4. Скопируйте значение из поля token.
⚠️ Внимание: Если базы нет или она пустая, значит Mi Home хранит данные в облаке. В этом случае попробуйте метод с MITM-прокси (раздел 5).

Отладка по USB включена (Настройки → Для разработчиков)

Установлены драйверы ADB на ПК

Смартфон имеет root-права

Mi Home авторизован и пылесос добавлен в приложение-->

4. Способ: Использование утилиты MiHome-Binary-Protocol

Этот метод подходит для пользователей, у которых нет root, но есть доступ к Python. Мы будем перехватывать трафик между Mi Home и серверами Xiaomi с помощью скрипта.

Инструменты:

  • 🐍 Python 3.8+ и библиотека mitmproxy.
  • 📱 Android-смартфон с установленным сертификатом mitmproxy.
  • 🔗 Скрипт com.xiaomi_mihome (fork с поддержкой новых протоколов).

Пошагово:

  1. Установите mitmproxy:
    pip install mitmproxy
  2. Скачайте и запустите скрипт:
    git clone https://github.com/Maxmudjon/com.xiaomi_mihome.git
    

    cd com.xiaomi_mihome

    python3 mihome_binary_protocol.py

  3. На смартфоне настройте прокси на IP вашего ПК:8080 и установите сертификат mitmproxy-ca-cert.cer.
  4. Откройте Mi Home, обновите статус пылесоса — в консоли отобразится токен.

Важно: С 2023 года Xiaomi начала шифровать часть трафика. Если скрипт не работает, попробуйте использовать метод с декомпиляцией APK (раздел 6).

Почему Xiaomi скрывает токены?

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

5. Способ: Перехват токена через MITM-прокси (продвинутый)

Этот метод требует навыков работы с сетью и SSL/TLS. Мы будем перехватывать трафик между Mi Home и серверами Xiaomi, чтобы извлечь токен из ответа API.

Необходимое ПО:

  • 🌐 Fiddler или Charles Proxy (для перехвата трафика).
  • 📱 Android-смартфон с установленным корневым сертификатом прокси.
  • 🔍 Знание структуры HTTP-запросов.

Инструкция:

  1. Настройте прокси на ПК и перенаправьте трафик со смартфона.
  2. В Fiddler включите расшифровку HTTPS (Decrypt HTTPS traffic).
  3. Откройте Mi Home и обновите статус пылесоса.
  4. Найдите запрос к api.io.mi.com с путьём /app/genToken или /home/device/list.
  5. В ответе будет поле "token": "..." — это и есть нужный ключ.
Метод Сложность Требуется root Работает в 2026
Извлечение из Mi Home ❌ Нет ⚠️ Частично
Mi Account API ⭐⭐ ❌ Нет ✅ Да
ADB + SQLite ⭐⭐⭐ ✅ Да ✅ Да
MiHome-Binary-Protocol ⭐⭐⭐⭐ ❌ Нет ⚠️ Зависит от версии
MITM-прокси ⭐⭐⭐⭐⭐ ❌ Нет ✅ Да

6. Способ: Декомпиляция APK Mi Home (для опытных)

Если ни один из методов не сработал, остаётся реверс-инжиниринг приложения Mi Home. Этот способ требует знаний Java/Smali и работы с JADX или Apktool.

Краткая инструкция:

  1. Скачайте APK Mi Home (например, с APKPure).
  2. Декомпилируйте его с помощью JADX:
    jadx-gui mihome.apk
  3. Найдите класс, отвечающий за авторизацию (обычно в пакете com.xiaomi.smarthome).
  4. Ищите методы с названиями getToken, fetchDeviceToken или аналогичными.
  5. Проанализируйте логику генерации токена и воспроизведите её в своём коде.
⚠️ Внимание: Декомпиляция может нарушать лицензионное соглашение Xiaomi. Используйте этот метод только для личных целей!

Частые ошибки и их решения

При извлечении токена пользователи сталкиваются с типичными проблемами:

  • 🔴 Ошибка 401 Unauthorized при запросе к API → Проверьте client_secret и регион аккаунта.
  • 🔴 В базе mihome.db нет таблицы devices → Обновите Mi Home или используйте MITM-прокси.
  • 🔴 Токен состоит из одних нулей (0000...) → Это заглушка. Попробуйте другой метод.
  • 🔴 Прокси не перехватывает трафик → Убедитесь, что на смартфоне установлен сертификат прокси.

Если вы получаете токен, но он не работает в Home Assistant, проверьте:

  • 📌 Совместимость модели (Vacuum Mop P должен поддерживать протокол miio).
  • 📌 Регион сервера (китайские устройства требуют аккаунт с регионом cn).
  • 📌 Актуальность токена (некоторые ключи действуют ограниченное время).

FAQ: Ответы на популярные вопросы

❓ Можно ли получить токен без root и прокси?

Да, но только если:

  • 🔹 У вас китайская версия Mi Home и токен отображается в профиле устройства.
  • 🔹 Вы разработчик с доступом к Xiaomi Open Platform.

Во всех остальных случаях потребуется хотя бы один из продвинутых методов.

❓ Почему токен перестал работать после обновления Mi Home?

Xiaomi периодически обновляет протоколы безопасности. Если токен перестал работать:

  1. Проверьте, не сбросились ли настройки пылесоса (иногда помогает переподключение к Wi-Fi).
  2. Получите новый токен одним из описанных методов.
  3. Обновите интеграцию в Home Assistant (например, используйте компонент xiaomi_miio последней версии).
❓ Можно ли использовать один токен для нескольких пылесосов?

Нет. Токен привязан к конкретному устройству (по его DID — уникальному идентификатору). Если у вас несколько Xiaomi Vacuum Mop P, для каждого нужен свой ключ.

❓ Безопасно ли делиться токеном с третьими лицами?

Абсолютно не безопасно. Токен даёт полный контроль над устройством:

  • 🔴 Злоумышленник может управлять пылесосом (включать/выключать, менять настройки).
  • 🔴 В некоторых случаях — получить доступ к другим устройствам в вашем аккаунте Mi Home.
  • 🔴 Xiaomi может заблокировать аккаунт за подозрительную активность.

Если вам нужна помощь с настройкой — предоставляйте токен только проверенным сервисам (например, официальным интеграциям Home Assistant).

❓ Как проверить, работает ли токен?

Отправьте тестовый запрос к API пылесоса. Пример на Python:

import requests

DID = "YOUR_DEVICE_ID" # Найдите в Mi Home или через ADB

TOKEN = "YOUR_TOKEN"

IP = "192.168.x.x" # Локальный IP пылесоса

url = f"http://{IP}/miio/info"

headers = {"X-Xiaomi-Propertys": '["miIO.info"]'}

response = requests.get(url, headers=headers, cookies={"userId": DID, "serviceToken": TOKEN})

print(response.json())

Если ответ содержит данные о устройстве (модель, прошивка) — токен действует.