Решил тут немного поиграться с железками «умного дома», использующими BLE (Bluetooth Low Energy).
Нашёл вот такой вот внешне симпатичный датчик температуры и влажности со встроенными часами:
Модель Xiaomi Mijia LYWSD02MMC. Дисплей на электронных чернилах (e-ink), две батарейки 2032, управление по bluetooth.
Выяснилось, что корпорашка сяоми оборзела в край (как и вообще китайские разрабы прошивок в целом), и для того, чтобы тупо поставить время, предлагается поставить их сраный апп, зарегаться в китайском облаке и согласиться на отслеживание IMEI и прочего большого списка данных с телефона. Кнопочек на устройстве нет.
Естественно, ничего подобного я делать и не собирался. =)
Для работы с такими неэтичными устройствами к счастью нашёлся годный PyPi-модуль:
https://pypi.org/project/lywsd02/
Сперва с помощью nRF-сканера или любой тулы bluetooth-мониторинга узнаём мак-адрес этих часов.
Потом делаем раз:
pip install lywsd02
Дальше прямо по этому мануалу : https://github.com/h4/lywsd02/tree/364b228922540babc3600d9e2131ff32721c5120
в питоновской консоли:
from lywsd02 import Lywsd02Client
mac = '3F:59:C8:xx:yy:zz'
client = Lywsd02Client(mac)
client.time = datetime.datetime.now()
Иногда часовой пояс стоит китайский — фиксим командой
client.tz_offset = 1
После смены часового пояса иногда бывает надо поставить время заново.
Если надо получить данные с датчиков, то выполняем ещё пару команд:
data = client.data
print(data.temperature)
print(data.humidity)
print(client.battery)
Вот теперь этим можно играться дальше. Вообще у девайса масса доступных для ковыряния по BLE точек, и я не исключаю в том числе наличие некоторых интересных недокументированных возможностей.
Да, я НАСТОЛЬКО не хочу пользоваться их всратой шпионящей «приложенькой», что мне проще на ноуте под отдельным пользователем поставить доп-пакет и в питоновской консоли чуть-чуть похакать.
P.S. подобные устройства крайне уязвимы, стыковать их с чем-то выпущенным в сеть не стоит, а от массового взлома и сетевых приколистов их спасает только крайне слабый и недальнобойный передатчик вкупе с пока ещё относительно малым интересом ко взлому таких устройств.
P.S.S. А вот роутеры Xiaomi покупать нельзя ни в коем случае, если только под них нет открытых альтернативных прошивок.