Stupid House

Xiaomi miio получение токена для доступа к устройству


miio - проприетарный шифрованный сетевой протокол для взаимодействия Wi-Fi устройств компании Xiaomi и ее суббрендов с приложением Mi Home в локальной сети. Для интеграции устройств с альтернативными системами автоматизации в подавляющем большинстве случаев необходим token для доступа к устройству. Что бы получить token устройство должно быть привязано к учетной записи Xiaomi в приложении Mi Home.

 

Универсальный способ #1 - Xiaomi cloud token extractor

Самый простой и быстрый способ получения token'а на данный момент для всех устройств компании Xiaomi использование утилиты Xiaomi cloud token extractor. В случае OS Windows это утилита, в случае использования Unix/Linux это скрипт, написанный на Python. Проект выложен на GitHub.

Для Ubuntu и Raspberry Pi установка Pyton3 и необходимых компонентов будет выглядеть так:

$ sudo apt-get install python3 python3-pip
$ pip3 install pycryptodome pybase64 requests

Скачиваем скрипт:

$ wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/raw/master/token_extractor.py

Запуск скрипта:

$ python3 token_extractor.py

Для Windows скачиваем утилиту с GitHub: https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/releases/latest/download/token_extractor.exe и запускаем ее.

При запуске утилита/скрипт попросит авторизоваться учетной записью Xiaomi. Необходимы:

  • E-mail или User ID Xiaomi
  • Пароль от учетной записи
  • Выбрать страну привязки устройств, можно оставить пустым, и программа проверит для всех перечисленных стран

Результат:

$ python3 token_extractor.py
Username (email or user ID):
my_xiaomi_mail_or_user_id
Password:
my_xiaomi_password
Country (one of: ru, us, tw, sg, cn, de) Leave empty to check all available:

Logging in...
Logged in.

Devices found for country "cn":
   ---------
   NAME:  Xiaomi Mi Gateway v.2
   ID:    XXXXXXXX
   IP:    192.168.XXX.XXX
   TOKEN: 1234567890abcdef1234567890abcdef
   MODEL: lumi.gateway.v3
   ---------
   NAME:  Mi IR Remote control
   ID:    XXXXXXXXX
   IP:    192.168.XXX.XXX
   TOKEN: 1234567890abcdef1234567890abcdef
   MODEL: chuangmi.remote.v2
   ---------
   NAME:  Miji Robot Vacuum Cleaner 1C
   ID:    XXXXXXXXX
   IP:    192.168.XXX.XXX
   TOKEN: 1234567890abcdef1234567890abcdef
   MODEL: dreame.vacuum.mc1808

Огромным плюсом этого метода является то, что помимо подключенных Wi-Fi устройств, утилита показывает подключенные Bluetooth устройства, подключенные к шлюзам ZigBee устройства, созданные пульты для Mi IR Remote control.

---------
NAME:  Xiaomi Mijia BLE Temperature and Humidity Sensor
ID:    blt.3.ubsv8hlXXXXX
IP:    XXX.XXX.XXX.XXX
TOKEN: 1234567890abcdef123456789
MODEL: cleargrass.sensor_ht.dk1
---------
NAME:  Aqara Smart Wall Socket
ID:    lumi.158d000XXXXXXX
IP:
TOKEN:
MODEL: lumi.ctrl_86plug.aq1

Это удобно использовать для определения ID ZigBee устройств.

 

Универсальный способ #2 - модифицированный Mi Home от vevs для Android

Mi Home от vevs - модифицированный Mi Home с переводом действий, условий и статусов (русский и английский языки), подробнее в блоге автора.

  • Удаляем оригинальный Mi Home
  • Скачиваем и устанавливаем последнюю версию Mi Home от vevs для Android
  • Запускаем установленное приложение Mi Home
  • Авторизуемся в приложении Mi Home
  • Открываем плагин необходимого устройства
  • Настройки -> Дополнительные настройки -> Информация о сети
  • В самом низу поле «Токен»

miio получение token mihome vevs

 

Универсальный способ #3 - Mi Home v5.4.49 для Android

Способ достаточно старый, но все еще действенный. Mi Home версии v5.4.49 для Android ведет логи взаимодействия с устройствами, логи хранятся в папке /Smarthome/logs в виде текстовых файлов. Порядок действий следующий:

  • Скачиваем и устанавливаем Mi Home v5.4.49 для Android. Если есть второе устройство, то лучше все операции делать на нем, иначе придется удалить текущую версию Mi Home
  • Запускаем установленное приложение Mi Home
  • Авторизуемся в приложении Mi Home
  • Для надежности открываем необходимое устройство в Mi Home
  • В менеджере файлов переходим в папку /Smarthome/logs
  • Открываем текстовый log файл
  • Просматриваем содержимое log файла, ищем по слову token

В папке может быть несколько текстовых файлов, просматриваем их все или удаляем всё содержимое папки и запускаем Mi Home v5.4.49 заново.

Результат просмотра log файла:

  • Для Xiaomi Mi Gateway v.2 - {"did":"XXXXXXXX","token":"1234567890abcdef1234567890abcdef","longitude":"XX.XXXXXXX","latitude":"XX.XXXXXXX","name":"Xiaomi Mi Gateway v.2",
  • Для Mi IR Remote control - {"did":"XXXXXXXXX","token":"1234567890abcdef1234567890abcdef","longitude":"XX.XXXXXXXX","latitude":"XX.XXXXXXXX","name":"Mi IR Remote control"

Для моего пылесоса Mijia Robot Vacuum Cleaner 1C токен тоже есть в лог файле, но в плагин управления попасть нельзя т.к. не поддерживается версией приложения. Но это не важно, главное результат получить token.

 

Список устройств и методы с помощью которых мне удалось получить токен.

Xiaomi Mi Gateway 2 (DGNWG02LM)

получить token для xiaomi mi gateway 2

Токен можно получить с помощью методов #1, #2 и #3 описанных выше.

Получить токен для региона Китай можно в программе Mi Home любой версии, пока писал статью на версии Mi Home v5.9.19 обновился плагин для шлюза, из которого похоже вырезали доступ к режиму разработчика. Но в версии Mi Home v.5.8.40 плагин шлюза версии v.2.77.1, для включения режима разработчика и получения сведений он нам сгодится.

  • Скачиваем и устанавливаем Mi Home v5.8.40 для Android. Если есть второе устройство, то лучше все операции делать на нем, иначе придется удалить текущую версию Mi Home
  • Запускаем установленное приложение Mi Home
  • Авторизуемся в приложении Mi Home
  • Открываем плагин шлюза Xiaomi Mi Gateway 2
  • Нажимаем три точки в правом верхнем углу
  • Сведения -> Информация о шлюзе, если пункты меню «Протокол связи локальной сети» и «Информация о шлюзе» отсутствуют, то пять раз нажимаем на пункт Версия плагина: 2.XX.X пока не появятся указанные пункты меню.
xiaomi gateway lan access mi home

Рис. 1

xiaomi gateway developer mode mi home

Рис. 2

xiaomi gateway home assistant

Рис. 3

xiaomi gateway информация о шлюзе

Рис. 4

xiaomi gateway информация о шлюзе token

Рис. 5

 

Xiaomi Mijia Universal Remote control (MJYKQ01CM)

получить token для xiaomi mijia unversal remote control

Токен можно получить с помощью методов #1, #2 и #3 описанных выше.

Вытащить токен из устройства можно с помощью паяльника и USB2TTL устройства. Для этого отклеиваем нижнюю резиновую противоскользящую вставку, под ней будет четыре болта, откручиваем их. Припаиваем провода к техническим контактам (GND0, TX0, RX0), подключаем шайбу к USB2TTL по схеме:

ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!

 

USB-to-TTL Mi IR Remote Control
GND GND0
RX TX0
TX RX0

 

mi ir remote get token

Подключаем USB2TTL к компьютеру, открываем программу PuTTY, выбираем тип подключения Serial, выставляем COM порт на котором подключен адаптер UART, скорость подключения 115200.

xiaomi ir remote control putty seral port connect

В меню Session -> Logging выставляем вести лог всего что выводится и указываем путь для файла лога. Нажимаем кнопку Open.

putty logging xiaomi ir universal remote control

Подаем штатное питание на устройство, через несколько секунд в PuTTy начнет отображаться информация. Т.к. информация отображается достаточно быстро, то лучше воспользоваться поиском в логе по слову token.

 

Xiaomi Mijia Bedside Lamp (MJCTD01YL)

mijia bedside lamp token

Из трех альтернативных систем автоматизации, опробованных мной, токен для доступа к лампе требует только OpenHAB. Токен можно получить с помощью методов #1, #2 и #3 описанных выше.

 

Xiaomi Mijia 1C Sweeping Vacuum Cleaner (STYTJ01ZHM)

mijia vacuum cleaner 1c token

Токен можно получить с помощью методов #1 и #3 описанных выше. Метод #2 тоже рабочий, но я не проверял, в Mi Home v5.9.19 от vevs я не нашел где отображается токен, поэтому рекомендовать его не могу. UPD: В версии Mi Home 6.1.701 от vevs метод #2 рабочий!

Tags:
Автор: muxa, 15.12.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии