Блог

Индикация содержания CO2 в воздухе на светодиодной RGB ленте

В своей статье я рассказал как я добавил датчик углекислого газа MH-Z19b в контроллер H801. Пришило время вывести цветовую индикацию содержания СО2 в воздухе на светодиодную RGB ленту. Для управления устройствами умного дома я использую систему управления умным домом Domoticz

Что ж, приступим к реализации. Для написания скриптов я использую язык DzVents - удобный, простой и эффективный язык. На самом деле скрипт достаточно прост:

return { on = { devices = { 'Bedroom CO2' } }, data = { Bedroom_warning_level = { initial = 0 } }, execute = function(domoticz) if (domoticz.devices('Bedroom CO2').quality == 'Bad') then domoticz.notify('Система безопасности', 'Содержание углекислого газа в спальне критическое, необходимо срочно проветрить помещение.', domoticz.PRIORITY_HIGH) end if (domoticz.devices('Bed Light').state ~= 'Off') then if (domoticz.devices('Bedroom CO2').co2 > 900 and domoticz.devices('Bedroom CO2').co2 < 1000) then local G = domoticz.round(255-(((domoticz.devices('Bedroom CO2').co2-900)/100)*256), 0) domoticz.devices('Bed Light').setRGB(255,G,0) domoticz.data.Bedroom_warning_level = 1 end if domoticz.devices('Bedroom CO2').co2 >= 1000 then domoticz.devices('Bed Light').setRGB(255,0,0) domoticz.data.Bedroom_warning_level = 1 end if (domoticz.devices('Bedroom CO2').co2 <= 900 and domoticz.data.Bedroom_warning_level == 1) then domoticz.devices('Bed Light').setRGB(0,0,255) domoticz.data.initialize('Bedroom_warning_level') end end end }

Нам достаточно масштабировать интенсивность сигнала зеленого цвета в зависимости от концентрации CO2 в доме. Скрипт активируется каждый раз, когда в Domoticz приходят данные содержания СО2 с датчика. Далее происходит проверка включена ли подсветка (она у меня задействована только в вечерних сценах) и если содержание СО2 менее 900 ppm, то цвет меняется на базовый (у меня это синяя подсветка), если содержание СО2 от 900 ppm до 1000 ppm, цвет постепенно меняется от желтого к красному. После открытия окна, цвет постепенно возвращается к желтому, а затем к базовому (синему). 

0

Вернуться назад
Вернуться назад