Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2023, 23:05   #1
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Xiaomi air purifier работа без облака

Долго мучался, не хочу заводить аккаунт в китайском облаке. Наверное нужно куда-то на github написать, например в home assistant, но мне времени не хватает правильно сформулировать.Пока изложу сумбур тут, чтоб не забыть.
Итак, у меня версия Pro. Начинаем со сброса зажав обе кнопки на 10 сек.
потом включаем, устройство создает свою сеть wi-fi.
Я подключился к ней с openwrt-роутера, сбив все маршруты (роутер посчитал, что фильтр - это новый gateway), поправил настройки, нашел новую сеть, попинговал air purifier:
Код:
64 bytes from 192.168.13.1: seq=1 ttl=255 time=3.537 ms
Дальше в консоли творим заклинание:
Код:
user@OpenWrt:~# echo -ne '\x21\x31\x00\x20\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' |nc -u 192.168.13.1 54321 > ./asnwer
user@OpenWrt:~#hexdump -s 16 -e '"token: " 16/1 "%02x" "\n"' ./asnwer
token: c6...mysecrettoken...f2b
Это все гуглится в интернетах, а дальше ступор, как его подключить к основной wi-fi сети?
У меня в Openwrt установлен debootstrap с HomeAssistant, поэтому есть python с кучей библиотек, почитав api python-miio родилось следующее:
Код:
homeassistant@OpenWrt:/$ cd /srv/homeassistant
homeassistant@OpenWrt:/$ source bin/activate
(homeassistant) homeassistant@OpenWrt:/srv/homeassistant$ python
>>> import miio
>>> puri=miio.device.Device('192.168.13.1','c6...mysecrettoken...f2b')
>>> puri.configure_wifi('SSID','password')
'ok'
>>> exit()
Девайс запиликал и появился в dhcp.leases.
На сегодня этого хватит.

Нашел забавное пока мучался


https://dontvacuum.me/talks/DEFCON26...IoT-Xiaomi.pdf
интересный документ, посвященный сетевой безопасности умных устройств.


И перепрошивка esp32 внутри похожего устройства
https://www.flamingo-tech.nl/2021/05...-3-esp32-dump/
[свернуть]


P.S. Пока искал в чем проблема, нашел и описание того что я делал выше. https://www.vanwerkhoven.org/blog/20...mi-smart-plug/

Последний раз редактировалось Tohin; 15.12.2023 в 22:19. Причина: Синтаксис
Tohin вне форума   Ответить с цитированием
Старый 13.12.2023, 10:55   #2
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

Странное. После подключения к основной Wi-Fi сети на полученный токен идет ругань:
miio.exceptions.DeviceException: Got checksum error which indicates use of an invalid token. Please check your token!

Новый токен, без сброса к заводским настройкам не приходит:
Код:
# echo -ne '\x21\x31\x00\x20\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' |nc -u 192.168.1.206 54321 > ./asnwer

# hexdump -s 16 -e '"token: " 16/1 "%02x" "\n"' ./asnwer                                                                      
token: 00000000000000000000000000000000
Печаль какая-то.

UPD:
Попробовал еще через node.js . После сброса девайс находится, токен определяется, но
miio configure id-or-address --ssid network-ssid --passwd network-password
отрабатывает впустую, очиститель не переподключается на основную сеть. Сменив сеть через питон уже нельзя подключится со старым токеном и новый токен не определяется.

Пробовал запустить miio discover в момент смены сети - бесполезно, нет срабатываний

UPD2:
Почитал вот тут и расстроился:
-Does the token change after pairing the device?
-Yes, the token gets changed during provisioning <...> Unfortunately the device does not report the token back, and there is no known way to request it afterwards either.

Странно, если устройство меняет токен при переподключении к другой сети Wi-Fi, то менять оно его должно по строго определенному алгоритму, либо получать новый от приложения при изменении Wi-Fi, иначе китайский сервер не сможет идентифицировать устройство. Опять же, при включении устройство должно сообщать о себе и в этом сообщении должен быть токен.

Последний раз редактировалось Tohin; 13.12.2023 в 14:29.
Tohin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика