smoke_sensor_zed

Smoke Sensor Zigbee Telink TLSR8258 (E-BYTE E180-Z5812SP)

Repository smoke_sensor_zed


Описание


Железо

В проекте используется модуль от компании E-BYTE на чипе TLSR8258F512ET32 - E180-Z5812SP.

E-BYTE E180-Z5812SP

Испытывалось все на вот такой плате совместной разработки (спасибо Олегу)

TLSR8258 devkit_zi


Схема

Схема изделия.

Плата

На гребенку выведены следующие пины модуля

Ссылки на проект в easyeda

Детали, напечатанные на 3D принтере.

Прокладка для платы

Кронштейн платы

Плата zigbee подключается к заводскому модулю следующим образом -

Готовое устройство

Плата интегрированна в заводской пожарный дымовой извещатель Рубеж ИП 212-50М2.


Софт

Прошивок две. Изначально предполагалось, что микропереключатель на TAMPER будет нормально замкнутым. Но, что-то с ними проблема. И даже в лоте на Али, на котором указано, что это NC, китаец прислал NO. Потому прошивок две - одна под выключатель TAMPER NC, вторая под NO.

Нужную прошивку из репозитория нужно залить в модуль с помощью github.com/pvvx/TLSRPGM или оригинального программатора от Telink.

Telink PGM

Как сделать недорогой программатор на базе модулей TB-03 или TB-04 можно почитать тут

Используется последнее SDK zigbee от Telink’а. Проект сформирован таким образом, что его можно собрать обычным make’ом как под Windows, в оболочке Git Bash, а также под Linux’ом (я проверял на Debian 11).

Как добавить проект в Eclipse можно почитать тут. Все точно так же, только для другого проекта.

Прошивка собрана по схеме, т.е. подключается файл платы board_8258_diy.h. Еще адаптирована плата devkit_zi. Для других вариантов придется самостоятельно редактировать файл нужной платы.


Описание работы модуля

В первый старт происходит попытка подключения к сети Zigbee. Если попытка удалась, модуль переходит в штатный режим работы.

Polling

Первые 30 секунд модуль просыпается раз в 3 секунды. По истечению 30 секунд модуль засыпает на 5 минут. И такой период сна в 5 минут остается до тех пор, пока не произойдет одно из событий

  1. Обнаруживается задымление.
  2. Обнаруживается отсоединение от крепежной пластины.
  3. Нажали кнопку на плате.

При первых двух событиях модуль просыпается, отсылает отчет и опять засыпает на 5 минут. При третьем событии модуль начинает просыпаться раз в 3 секунды в течении 20 секунд. Далее период сна опять возвращается к 5 минутам.

Reporting

Модуль высылает 2 отчета для батарейки - процент заряда и напряжение. Периода отправки нет, отчет высылается по изменению. Изменение учитывает 0.1 вольт. Рабочим считается напряжение от 9.0 вольт до 7.2. Сам извещатель начиная с 7.2 вольта до 5.9 переходит в режим оповещения о разряде батареи - подает кратковременный однократный звуковой сигнал с периодом повторения от 60 до 65 секунд.

Напряжение на батарейке модуль проверяет один раз в час. Отчеты о состоянии батарейки (напряжение в мВ и остаточный ресурс в %) по изменению с шагом 0.1 вольт.

Также принудительно отчеты высылаются в течение 1 секунды, если нажать на кнопку прибора.

Сетодиодная индикация режимов модуля

Если модуль продолжительное время не моргает светодиодом (период более 5 минут), то он находится в режиме глубокого сна. Выйти из этого режима модуль может в двух случаях. Первый - если пользователь нажмет на кнопку. Второй - если сработает оригинальный извещатель на обнаружение дыма или если устройство снять с крепежной пластины.

  1. Светодиод с периодичностью от 5 секунд до 5 минут мограет одной вспышкой - модуль находится в сети, работает в штатном режиме.
  2. Светодиод с периодичностью 5 секунд моргает двумя вспышками - происходит OTA обновление прошивки.
  3. Светодиод с периодичностью от 5 секунд до 5 минут моргает тремя вспышками - модуль не в сети - не был поключен, например вставили батарейки в устройство, но zigbee сети нет или активирован запрет на подключение; или был поключен, но в данный момент какие-то проблемы с сетью. В любом случае в таком режиме модуль проработает примерно 30 минут. Если за это время он не подключится к сети или не восстановит связь, то уйдет в глубокий сон. В этом режиме, чтобы связаться с модулем, нужно его разбудить, нажав на кнопку прибора.

Zigbee Claster and Attribute

В прошивке используется 1 endpoint, который содержит следующие кластеры


Настройка

Открываем на редактирование файл configuration.yaml от zigbee2mqtt. И добавляем в конец файла

	external_converters:
		- smoke_sensor.js
	ota:
		zigbee_ota_override_index_location: local_ota_index.json

Файлы smoke_sensor.js и local_ota_index.json копируем из репозитория проекта туда же, где лежит configuration.yaml от zigbee2mqtt. Не забываем разрешить подключение новых устройств - permit_join: true. Перегружаем zigbee2mqtt. Проверяем его лог, что он запустился и нормально работает.

Далее, вставляем батарейки в устройство. Если питание было уже подано, то удерживаем кнопку на плате устройства (не на извещателе) более 2 секунд, до подтверждения сводиодом долгой вспышкой. Устройство должно подключиться к сети zigbee. Если подключение прошло удачно, то мы обнаружим наше устройство в zigbee2mqtt.

После того, как устройство подключилось к сети и zigbee2mqtt его обнаружил однократно нажать на кнопку на плате устройства (не на извещателе), для первоначального заполнения всех велечин.

После этого можно выбрать действие для кластера OnOff. Для этого нужно перейти в web-интерфейс zigbee2mqtt и зайти в раздел exposes.

Затем нажать кнопку на устройстве, чтобы оно проснулось и приняло данные.

Прямой биндинг

При срабатывании датчика, т.е. обнаружении дыма, можно послать команду OnOff на какое-то устройство (если нужно).

Для настройки прямого биндинга заходим в раздел bind устройства.

Снимаем все галочки, оствляем только на OnOff.

И жмем unbind, затем кнопку на плате (не на извещателе). Обновляем страницу, должно получиться вот так

Далее в самой нижней ячейке выбираем устройство и endpoint на нем, на который хотим организвать прямую передачу команды OnOff. Ставим галочку на OnOff (выбранное устройство должно иметь такой кластер).

Жмем bind справа и нажимаем кнопку на плате (не на извещателе). После этого обновляем страницу. Должно получиться вот так


OTA

Автоматического обновления в zigbee2mqtt для устройств, добавленных через конвертор, нет. Поэтому, если вышла новая версия, скачиваем обновленный файл прошивки для обновления OTA, например 6565-0204-13043001-smoke_sensor_zed.zigbee. Переименовываем его в просто smoke_sensor_zed.zigbee и кладем его по относительному пути zigbee2mgtt/images. Перегружаем zigbee2mqtt. Идем во вкладку OTA. И кликаем на Check for new updates Если обновление принимается, то кнопка Check for new updates станет красной с надписью Update device firmware. Ее нужно кликнуть и обновление начнет загружаться (zigbee обновляется долго, что-то в районе 20 минут).


Потребление

Долгих испытаний в реальной работе пока не проводилось. С помощью ppk2 произведены замеры потребления дополнительной платы Zigbee.

Штатный режим

Среднее потребление за 15 минут 8,7 мкА.

Модуль спит.


Home Assistant

В Home Assistant устройство будет выглядеть так.


Alisa

В Яндекс устройство будет выглядеть так.


P.S.

Устройство выполнено с максимальным соблюдением zigbee стандартов. Поэтому во многих системах он будет работать, если система поддерживает стандартные кластеры, такие как OnOff и IAS. Например z2m безо вских конверторов прекрасно определяет это устройство и поддерживает IAS полностью. Яндекс так же поддерживает IAS, но не полностью, он не видит TAMPER и разряд батареи (но процент заряда через другой кластер он прекрасно видит).


Связаться со мной можно в Telegram.

Если захотите отблагодарить автора, то это можно сделать через ЮMoney


Наверх