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.
Как же подружить bluetooth датчик из заголовка статьи с зигби сетью? Оказалось, что производитель чипов Telink предоставляет для своих изделий SDK под ряд популярных протоколов. Bluetooth, Bluetooth Mesh, Telink Mesh (не слишком популярный), а также Zigbee. Это значит, что микроконтроллер поддерживает работу с ZigBee, осталось только его научить. Сказано-сделано. Результатом проведённой работы стал репозиторий https://github.com/devbis/z03mmc/ где лежит исходный код, бинарные сборки в релизах, а также инструкция по прошивке. Поддерживается как конвертация по воздуху используя наработки проекта atc1441/pvvx, так и с помощью проводов и UART-USB адаптера, также с помощью скрипта из вышеупомянутых проектов. Дополнительно, в репозитории лежит конвертор для подключения устройства в zigbee2mqtt. За счёт полного соблюдения стандартов, в ZHA он залетит без дополнительных усилий.
Что в итоге? Мы получаем возможно самый дешевый зигби датчик на рынке, да и ещё с экраном в придачу, который отвечает всем стандартам сети ZigBee. Помимо этого за счёт открытости прошивки и исследованности платы, открывается простор для аппаратных доработок датчика. Например, уже есть варианты для блютус прошивки, где используется геркон, что с программной доработкой позволит сделать датчик открытия, или протечки. Или наоборот, управлять контактом реле (с дополнительным питанием).
А что если попробовал, но прошивка не понравилась? Всегда существует возможность отката на любую другую прошивку припаявшись проводами к тестпоинтам, используя утилиту TLSR825xComFlasher.py. Можно прошивать как оригинальную прошивку, так и любую пользовательскую.
Что дальше? Я планирую добавить регулировку отображения в Фаренгейтах. Также аналогичные микроконтроллеры стоят в некоторых других датчиках, что возможно сподвигнет кого-то доделать прошивку для работы с другими устройствами со схожим функционалом.
Ссылки:
-
Пользовательская прошивка для работы с Bluetooth
-
Телеграм чат разработчиков прошивок для устройств зигби
Автор: Ivan Belokobylskiy