Xiaomi miio получение токена для доступа к устройству
miio - проприетарный шифрованный сетевой протокол для взаимодействия Wi-Fi устройств компании Xiaomi и ее суббрендов с приложением Mi Home в локальной сети. Для интеграции устройств с альтернативными системами автоматизации в подавляющем большинстве случаев необходим token для доступа к устройству. Что бы получить token устройство должно быть привязано к учетной записи Xiaomi в приложении Mi Home.
- Универсальный способ #1 - Xiaomi cloud token extractor
- Универсальный способ #2 - модифицированный Mi Home от vevs для Android
- Универсальный способ #3 - Mi Home v5.4.49 для Android
- Xiaomi Mi Gateway 2 (DGNWG02LM)
- Xiaomi Mijia Universal Remote control (MJYKQ01CM)
- Xiaomi Mijia Bedside Lamp (MJCTD01YL)
- Xiaomi Mijia 1C Sweeping Vacuum Cleaner (STYTJ01ZHM)
- Скачать
Универсальный способ #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): <strong>my_xiaomi_mail_or_user_id</strong> Password: <strong>my_xiaomi_password</strong> 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
- Открываем плагин необходимого устройства
- Настройки -> Дополнительные настройки -> Информация о сети
- В самом низу поле «Токен»
Универсальный способ #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)
Токен можно получить с помощью методов #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
пока не появятся указанные пункты меню.
Рис. 1
Рис. 2
Рис. 3
Рис. 4
Рис. 5
Xiaomi Mijia Universal Remote control (MJYKQ01CM)
Токен можно получить с помощью методов #1, #2 и #3 описанных выше.
Вытащить токен из устройства можно с помощью паяльника и USB2TTL устройства. Для этого отклеиваем нижнюю резиновую противоскользящую вставку, под ней будет четыре болта, откручиваем их. Припаиваем провода к техническим контактам (GND0, TX0, RX0), подключаем шайбу к USB2TTL по схеме:
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
USB-to-TTL | Mi IR Remote Control |
---|---|
GND | GND0 |
RX | TX0 |
TX | RX0 |
Подключаем USB2TTL к компьютеру, открываем программу PuTTY, выбираем тип подключения Serial
, выставляем COM
порт на котором подключен адаптер UART, скорость подключения 115200
.
В меню Session -> Logging
выставляем вести лог всего что выводится и указываем путь для файла лога. Нажимаем кнопку Open
.
Подаем штатное питание на устройство, через несколько секунд в PuTTy начнет отображаться информация. Т.к. информация отображается достаточно быстро, то лучше воспользоваться поиском в логе по слову token.
Xiaomi Mijia Bedside Lamp (MJCTD01YL)
Из трех альтернативных систем автоматизации, опробованных мной, токен для доступа к лампе требует только OpenHAB. Токен можно получить с помощью методов #1, #2 и #3 описанных выше.
Xiaomi Mijia 1C Sweeping Vacuum Cleaner (STYTJ01ZHM)
Токен можно получить с помощью методов #1 и #3 описанных выше. Метод #2 тоже рабочий, но я не проверял, в . UPD: В версии Mi Home 6.1.701 от vevs метод #2 рабочий!Mi Home v5.9.19 от vevs
я не нашел где отображается токен, поэтому рекомендовать его не могу
Файлы для скачивания
Mi Home v5.8.40 - Формирование ссылки...
Mi Home v5.4.49 - Формирование ссылки...