Как стать автором
Обновить

Xiaomi Mi Thermometer 2 не только Bluetooth, но и ZigBee

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров85K
Xiaomi LYWSD03MMC с прошивкой Zigbee
Xiaomi LYWSD03MMC с прошивкой Zigbee

TL;DR: Да, можно программно изменить датчик для работы в сети Zigbee, достаточно по воздуху перезаписать прошивку

Многим пользователям умного дома известен квадратный датчик температуры и влажности от Xiaomi LYWSD03MMC. Его очевидные плюсы — это LCD экран, подключение к системе умного дома MiHome и конечно же цена. Его без преувеличения можно назвать если не самым, то точно одним из самых дешевых "умных" датчиков, которые имеют интерфесы для подключения к умному дому. В данном случае это популярный bluetooth, который позволяет подключиться к датчику со смартфона и увидеть показания. Поэтому он завоевал своё место в сердцах строителей умных домов как дешевое и надёжное беспроводное решение.

Однако, датчик помимо своих достоинств не был лишён и недостатков. Нерегулярные отправки данных в эфир, требование ключа для расшифровки, а также сложности в подключении к открытым системам управления умным домом, таким как HomeAssistant, OpenHab, и т.д. Возможно эти причины привели к созданию пользовательской прошивки https://github.com/atc1441/ATC_MiThermometer/, и затем её доработаной версии https://github.com/pvvx/ATC_MiThermometer/ которая существенно расширяла исходные возможности, такие как отправка нешифрованных пакетов в сеть, что позволяло подключать датчик без дополнительных усилий, настройка регулярности отправки данных в эфир, различные другие регулировки. Это ещё больше повысило популярность данного датчика.

Но у bluetooth на сегодняшний день есть достаточно неприятные ограничения в использовании в открытых системах умного дома. Датчики и управляемые устройства даже в рамках протокола bluetooth целиком ограничены экосистемой отдельного производителя. Если вы купили шлюз Xiaomi, вы не сможете подключить к нему датчики Tuya. Чайник Redmond не будет работать ни с чем, кроме своего родного шлюза. Или же как вариант использовать вместо шлюза смартфон с десятком приложений - по одному на каждый бренд - и ни о какой интеграции в единую систему речи уже не может идти. (Тут я могу порекламировать мою утилиту ble2mqtt для работы с некоторыми устройствами разных производителей, в т.ч. требующих подключения, и управлением по MQTT. Но в нём список поддерживаемых устройств ограничен и каждое новое устройство - это новое изобретение вендора). Частично эта проблема решается отдельными интеграциями для каждого отдельного бренда в Home Assistant, но ситуация далека от идеала.

Тут на помощь может прийти сеть ZigBee, которая стандартизует не только физический уровень взаимодействия, но и работу всей сети целиком. А также стандартизует атрибуты устройств так, что датчик протечки любого производителя на уровне сети выглядит одинаково. (Тут надо сделать замечание, что ряд производителей отступает от этого правила, но это всё ещё не мешает держать и управлять всеми zigbee устройствами в одной сети с помощью централизованного механизма). Для управления сетью обычно используется отличный проект zigbee2mqtt или же встроенные в умный дом системы управления. Например, в Home Assistant есть возможность использовать как встроенный компонент Zigbee Home Automation , так и выше упомянутый zigbee2mqtt или HOMEd Zigbee с помощью компонента MQTT.

Датчик в интерфейсе zigbee2mqtt
Датчик в интерфейсе zigbee2mqtt

Как же подружить bluetooth датчик из заголовка статьи с зигби сетью? Оказалось, что производитель чипов Telink предоставляет для своих изделий SDK под ряд популярных протоколов. Bluetooth, Bluetooth Mesh, Telink Mesh (не слишком популярный), а также Zigbee. Это значит, что микроконтроллер поддерживает работу с ZigBee, осталось только его научить. Сказано-сделано. Результатом проведённой работы стал репозиторий https://github.com/devbis/z03mmc/ где лежит исходный код, бинарные сборки в релизах, а также инструкция по прошивке. Поддерживается как конвертация по воздуху используя наработки проекта atc1441/pvvx, так и с помощью проводов и UART-USB адаптера, также с помощью скрипта из вышеупомянутых проектов. Дополнительно, в репозитории лежит конвертор для подключения устройства в zigbee2mqtt. За счёт полного соблюдения стандартов, в ZHA он залетит без дополнительных усилий.

Геркон, припаянный к датчику температуры
Геркон, припаянный к датчику температуры

Что в итоге? Мы получаем возможно самый дешевый зигби датчик на рынке, да и ещё с экраном в придачу, который отвечает всем стандартам сети ZigBee. Помимо этого за счёт открытости прошивки и исследованности платы, открывается простор для аппаратных доработок датчика. Например, уже есть варианты для блютус прошивки, где используется геркон, что с программной доработкой позволит сделать датчик открытия, или протечки. Или наоборот, управлять контактом реле (с дополнительным питанием).

А что если попробовал, но прошивка не понравилась? Всегда существует возможность отката на любую другую прошивку припаявшись проводами к тестпоинтам, используя утилиту TLSR825xComFlasher.py. Можно прошивать как оригинальную прошивку, так и любую пользовательскую.

Что дальше? Я планирую добавить регулировку отображения в Фаренгейтах. Также аналогичные микроконтроллеры стоят в некоторых других датчиках, что возможно сподвигнет кого-то доделать прошивку для работы с другими устройствами со схожим функционалом.

Ссылки:

Теги:
Хабы:
Всего голосов 91: ↑91 и ↓0+91
Комментарии154

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн