Repository air_quality_monitor_zrd
- Устройство представлят из себя домашний бытовой монитор (далее просто
Монитор) со встроенными датчиками качества воздуха и климата, показания которых выводятся на экранepaper4.2" и передаются в сетьZigbee. Мониторвыводит следующие показания внутренних датчиков:- углекислого газа
CO2, - летучих органичесикх веществ
VOC, - температуры,
- влажности,
- атмосферного давления,
- освещенности.
- углекислого газа
Мониторимеет возможность отображать показания температуры, влажности и заряда батареи с внешнего датчика напрямую, минуя координатор (прямой биндинг).Мониторимеет возможность управлять внешним устройством (реле/вентилятор) напрямую, минуя координатор (прямой биндинг) на основании показаний датчиков CO2 и VOC, посылая команды On-Off.Мониторможет отображать данные в горизонтальном или вертикальном положении, а также менять режим вывода - черное на белом или белое на черном.- Настраиваемые параметры сохраняет в энергонезависимой памяти модуля
ZTU. - Взаимодейстивие с "умными домами" через
zigbee2mqtt. - Первоначальная настройка происходит через web-интерфейс
zigbee2mqtt. - Подключиться к сети или покинуть сеть
Zigbee- удерживать кнопку более 5 секунд (светодиод должен погаснуть и начать моргать красным цветом). Время присоединения к сети - полторы минуты (или пока моргает светодиод). - При одиночном нажатии кнопки
Мониторвысылает отчет по всем показаниям. Мониторпитается от источника постоянного тока напряжением 5 вольт через разъемUSB Type-Cи является роутером.
- В
Монитореустановлены следующие датчики и модули:SCD40- высокоточный цифровой датчик углекислого газа (CO2).SGP40- цифровой датчик летучих органических соединений (VOC) отSensirion.BME280- комбинированный цифровой датчик влажности, давления и температуры фирмыBosch Sensortec.BH1750- цифровой датчик освещённости.DS3231- часы реального времени (допускается установкаDS1307).WS2812B- адресные светодиоды, которые помогают визуально по цвету определить качество воздуха.ZTU- модульZigbeeот фирмыTuya, выполенный на чипеTLSR8258F1KET32фирмыTelink.WeAct 4.2"- epaper экран отWeAct Studio.
Последнюю прошивку/air_quality_monitor_zrd_Vx.x.xx.bin нужно залить в модуль с помощью github.com/pvvx/TLSRPGM или оригинального программатора от Telink.
Как сделать недорогой программатор на базе модулей TB-03 или TB-04 можно почитать тут
Проект сформирован таким образом, что его можно собрать обычным make'ом как под Windows, в оболочке Git Bash, а также под Linux'ом.
Как добавить проект в Eclipse можно почитать тут. Все точно так же, только для другого проекта.
При первом старте, если устройство не в сети, выводится заставка, в которой сообщается, что нужно сделать для подключения к сети. Также там можно увидеть название Монитора, логотип автора и номер версии прошивки. Время вывода заставки составляет 5 секунд. Если Монитор уже в сети, то заставка не выводится.
Описание экрана
Параметры на экране выводятся независимо от того, в сети устройство или нет. За исключением внешнего датчика. Обновление экрана происходит каждые 10 секунд.
- Дата, день недели и время.
- Иконка сети
Zigbee. Выводится, когда устройство присоеденино к сети, иначе иконка отсутсвует. - Значение VOC в index points от 0 до 500.
- Значение CO2 в PPM от 400 до 2000.
- Температура внутреннего датчика.
- Влажность внутреннего датчика.
- Влажность внешнего датчика.
- Температура внешнего датчика.
- Заряд батареи внешнего датчика.
- LQI - уровень сигнала в единицах от 0 до 255.
- Давление в гектопаскалях.
- Давление в мм ртутного столба.
- Освещение в LUX от 0 до 65535.
- Уровень сигнала в виде пиктограммы, вычисляется из LQI.
Сопряжение
Для сопряжения Монитора нужно нажать и удерживать нажатой кнопку более 5 секунд. Отпускать можно, когда светодиод погаснет и начнет мерцать красным светом. Время на сопряжение - полторы минуты (или пока мерцает светодиод). По истечению полутора минут Монитор перестает пытаться подключиться к сети.
Если сопряжение прошло успешно, светодиод сообщит об этом, поморгав зеленым цветом три раза. Также на экране в позиции 2 появится иконка сети Zigbee.
Дата и часы
В Мониторе используются часы реального времени. Периодически, если Монитор сопряжен, он запрашивает время у координатора и синхронизируется с полученным временем.
CO2
Показания, снимаемые с датчика SCD40, выводятся в PPM. Диапазон от 400 до 2000. Для более корректного вычисления содержания углекислого газа в датчик SCD40 каждый раз, перед измерением, передается значение атмосферного давления с датчика BME280. При желании датчик SCD40 может быть откалиброван принудительно или сброшен на заводские настройки. По умолчанию включена автоматическая калибровка.
VOC
Показания передаются в Index Points. Датчик SGP40 выдает некое RAW значение. Измерения происходят с периодом в 10 секунд. И это значение передается в специальную библиотеку, которую предоставляет изготовитель этого датчика. В этой библиотеке и вычисляется Index Points. Его диапазон от 0 до 500.
Климатические показания внутреннего датчика
Климатические показания, снимаемые с датчика BME280 - это температура, относительная влажность и атмосферное давление. Температурный диапазон измерения от -45 до +85 °С, влажности от 0 до 100% и давления от 300 до 1100 hPa. На экране значение температуры можно выводить в Цельсиях или в Фаренгейтах. Также на экране давление дублируется в мм ртутного столба.
Освещенность
Показания с датчика BH1750 передаются в люксах. Диапазон измерения от 1 до 65535 lx.
Вспомогательные индикации
Иконка сети Zigbee (на фото позиция 2) - выводится только, если Монитор сопряжен с сетью.
Уровень сигнала в LQI (на фото позиция 10) - уровень сигнала в цифровом диапазоне от 0 до 255.
Иконка Уровень сигнала (на фото позиция 14) - уровень сигнала от 0 до 5 (закрашиваются в черный цвет столбики на иконке). Вычисляется из LQI.
Климатические показания внешнего датчика
В Мониторе предусмотрена возможность выводить температуру, влажность и заряд батареи с внешнего датчика. К сожалению не все датчики умеют передавать свои показания на другое устройство в сети, отличное от координатора. Для получения показаний с внешнего датчика нужно настроить на нем прямой биндинг на Монитор. Для этого нужно в web-интерфейсе zigbee2mqtt зайти в этот датчик, перейти во вкладку Bind, выбрать кластер 1, выбрать Монитор и отметить передачу нужных параметров - температуру, влажность и батарейку. И после этого нажать Bind. Если по какой-то причине вывод показаний с внешнего датчика станет не нужным, то в этой же вкладке нужно нажать Unbind. К сожалению сам Монитор не умеет отслеживать, если от него отписались. Поэтому во вкладке Exposes самого Монитора сделана настройка - Clear Bind - если нужно очистить информацию о внешнем датчике. Это нужно сделать, если вы хотите поменять внешний длатчик на другой. Или подождать пару часов - если в течение 2-х часов внешний датчик ничего не присылает, то информация о нем автоматически стирается и данные с экрана очищаются.
Световая индикация
Тут все просто. Цвет меняется в зависимости от показаний CO2 и VOC.
- Зеленый - хорошо (
CO2400 ... 600 иVOC0 ... 100) - Желтый - приемлемо (
CO2601 ... 900 иVOC101 ... 250) - Пурпурный - плохо (
CO2901 ... 1200 иVOC251 ... 400) - Красный - очень плохо (
CO21201 ... 2000 иVOC401 ... 500)
Уровень интенсивности свечения можно регулировать от 0 (выключено) до 255 (максимальное свечение).
Еще индикатор будет мерцать красным цветом - при попытке сопряжения и зеленым - когда сопряжение произошло.
Вкладка Exposes
CO2- выводит текущее значениеCO2.Voc index- выводит текущее значениеVOC.Temperature- выводит текущее значение внутреннего датчика температуры.Humidity- выводит текущее значение внутреннего датчика влажности.Pressure- выводит текущее значение внутреннего датчика давления.Illuminance- выводит текущее значение освещенности.Display rotate- как выводить информацию, в горизонтальной или вертикальной плоскости.Display inversion- как выводить информацию, черное на белом или белое на черном.Temperature display mode- показывать на экране градусы температуры с Цельсиях или в Фаренгейтах.Temperature offset- подстроить датчик температуры, если по каким-то причинам он показывает неверную температуру. Диапазон настроек от -5 до +5 °С с шагом 0,1. По умолчанию значение подстройки датчика температуры выставлено в 0.Read interval- как часто будут опрашиваться внутренние датчики. Диапазон опроса от 5 до 600 секунд. По умолчанию 10 секунд. Это не относится к датчику VOCSGP40, его опрос осуществляется по таймеру каждые 10 секунд. Связано с библиотекой вычисленияIndex Pointsот производителя датчика.Enabling co2 control- включение и отключение управления внешним устройством по показаниямCO2. Также эта настройка активирует звук.Low co2- нижний порогCO2, если значение становится ниже этого порога, внешнее устройство выключается.High co2- верхний порогCO2, если значение становится больше этого порога, внешнее устройство включается. Также, при прохождении порога, Монитор сообщает об этом звуковым сигналом.Enabling voc control- включение и отключение управления внешним устройством по показаниямVOC. Также эта настройка активирует звук.Low voc- нижний порогVOC, если значение становится ниже этого порога, внешнее устройство выключается.High voc- верхний порогVOC, если значение становится больше этого порога, внешнее устройство включается. Также, при прохождении порога, Монитор сообщает об этом звуковым сигналом.Switch actions- какая команда отправляется для включения и выключения внешнего устройства. Если выставлено вon, то для включения внешнего устройства посылается командаOn, а для выключенияOff. Если выставлено вoff, то для включения внешнего устройства посылается командаOff, а для выключенияOn.Brightness- регулировка яркости светодиодной индикации. От 0 до 255. При 0 - светодиоды остаются выключены. 255 - соответсвует максимальной яркости.Enabling sound- глобальное включение и выключение звука.Frc co2 correction- выводит значение поправки дляCO2, если была выполнена принудительная калибровка. Значение может быть как положительным, так и отрицательным.Features sensors- специфические настройкиМонитора, которые выведены в отдельную группу.CO2 forced calibration- принудительная ручная калибровка датчикаCO2. Нужно вынести устройство на свежий воздух минут на 15 и потом подать команду калибровки. Датчик примет зачение, измеренное при калибровке за "эталон" и выставит поправку, которую можно увидеть вFrc co2 correction.CO2 factory reset- сброс датчикаCO2к заводским настройкам. Значение ручной калибровки, если таковая была сделана, тоже сбрасываются.Bind reset- очистит таблицу биндинга внешнего датчика температуры/влажности.
Вкладка Bind
Настройка прямого биндинга на исполнительное устройство - реле/вентилятор и т.п., которое будет включаться и выключаться, если включен Enabling co2 control и/или Enabling voc control и выставлены соответствующие пороги. Нужно только учесть, что если минимальный порог выставлен слишком низким, то внешнее устройство никогда не выключится. Для настройки, нужно выбрать эндпоинт в Source endpoint, где на Мониторе находится кластер On-Off - это 1, далее выбрать внешнее устройство в Destination и кластер на внешнем устройстве в Destination endpoint, отметить галочкой OnOff и нажать на Bind справа. Если управление станет не нужным или нужно будет изменить внешнее устройство, нужно нажать Unbind.
Вкладка Reporting
Настройка репортинга.
Репортинг кастомных атрибутов лучше не трогать. Их можно сразу отличить по имени - attr6, attr7 и т.д.
Репортинг основных параметров - CO2, VOC, Temperature, Humidity, Pressure и Illuminance можно настроить в соответствии с вашими желаниями.
Настройки с помощью кнопки на Мониторе
- Нажать один раз - происходит отправка отчетов по всем параметрам в сеть
Zigbee. - Нажать быстро два раза - экран меняет ориентацию на 90 градусов.
- Нажать быстро три раза - экран меняет вывод с
черного на беломнабелое на черноми наоборот. - Нажать быстро четыре раза - изменит вывод температуры с Цельсия на Фаренгейты и наоборот.
- Нажать быстро пять раз - перезагрузить Монитор.
Каждое нажатие кнопки сопровождается промаргиванием световой индикации красным цветом.
Связаться со мной можно в Telegram.
Если захотите отблагодарить автора, то это можно сделать через ЮMoney
- 1.0.01
- Начало.
- 1.0.02
- Добавлен параметр
LifeTime- время наработкиМониторав часах. - Добавлена возможность перезагрузки
Мониторапо кнопке.
- Добавлен параметр
- 1.0.03
- Измененая последовательность запуска тасков опроса датчиков. Уменьшена очередь.
- Устранена проблема с репортингом.
- 1.0.04
- Добавлена сигнализация звуком по нарастающей при его включении и по ниспадающей при его выключении.
- Немного измена процедура
factory reset.