В преддверии Нового Года заставили меня повесить гирлянду на окно. Но у нас же дом умный поэтому захотелось мне автоматизировать ее включение с помощью розетки Xiaomi Mi Smart Socket ZigBee к которой у меня был подключен обогреватель на период "отопление еще не включили".
Сначала я просто отключил все сценарии, которые включали и выключали эту розетку в зависимости от значения температуры в комнате, потом я перетащил ее к окну и воткнул в нее гирлянду. За пару минут я сварганил два сценария на dzVents в domoticz.
На закате включить розетку:
return {
active = true, -- скрипт активен
on = {
timer = {'at sunset'}, -- каждый день на закате
},
logging = {
level = domoticz.LOG_ERROR -- пишем в log только ошибки
},
-- когда таймер выстрелил, выполним секцию execute:
execute = function(domoticz)
domoticz.devices('Розетка Обогреватель').switchOn()
domoticz.log ('Розетка Обогреватель On')
end
}
На рассвете выключить розетку:
return {
active = true, -- скрипт активен
on = {
timer = {'at sunrise'}, -- каждый день на восходе солнца
},
logging = {
level = domoticz.LOG_ERROR -- пишем в log только ошибки
},
-- когда таймер выстрелил, выполним секцию execute:
execute = function(domoticz)
domoticz.devices('Розетка Обогреватель').switchOff()
domoticz.log ('Розетка Обогреватель Off')
end
}
Не удивляйтесь, что устройство обзывается 'Розетка Обогреватель' - она имеет такое имя в Domoticz. К тому же Новый Год закончится и наступит весна с ее периодом "отопление отключили, а погода еще дубак" и розетка снова станет выполнять роль умного обогревателя, как и последние два года до этого.
Порадовавшись первому включению гирлянды я подумал, что как то не сильно умная она получилась, и решил запилить включение по датчику освещенности. В наличии у меня имеется целых три датчика Xiaomi Flower Monitor прикрученных к Domoticz с помощью python скрипта miflora.py.
Проанализировав график освещенности за последнюю неделю, я выбрал границу включения/выключения в 100 Lux.
А так как последние несколько месяцев эти датчики постоянно подглючивают - иногда по нескольку часов не отдают данные, а иногда работают корректно и каждый час обновляют значения, то я решил использовать все три датчика сразу.
Плюс в скрипт добавил отсылку себе письма со значениями освещенности.
Получится вот такой скрипт:
-- Включение розетки Xiaomi Mi Smart Socket ZigBee по показаниям освещенности датчиков цветов
return {
active = true, -- скрипт активен
on = {
timer = {'Every 30 minutes'}
},
logging = {
level = domoticz.LOG_ERROR -- пишем в log только ошибки
},
-- выполним секцию execute:
execute = function(domoticz)
-- сформируем текст сообщения
local message = 'Ficus = '..domoticz.devices('Ficus - солнце').lux..
' lux<br>Красный = '..domoticz.devices('Красный - солнце').lux..
' lux<br>Белый = '..domoticz.devices('Белый - солнце').lux..' lux'
if (domoticz.devices('Ficus - солнце').lux < 100 or
domoticz.devices('Красный - солнце').lux < 100 or
domoticz.devices('Белый - солнце').lux < 100) then
domoticz.devices('Розетка Обогреватель').switchOn()
domoticz.log ('Розетка Обогреватель On')
domoticz.email('Розетка Обогреватель On',
'Розетка Обогреватель On <br>'..message,
'mi@mail.com')
elseif (domoticz.devices('Ficus - солнце').lux > 100 or
domoticz.devices('Красный - солнце').lux > 100 or
domoticz.devices('Белый - солнце').lux > 100) then
domoticz.devices('Розетка Обогреватель').switchOff()
domoticz.log ('Розетка Обогреватель Off')
domoticz.email('Розетка Обогреватель Off',
'Розетка Обогреватель Off <br>'..message,
'mi@mail.com')
end
end
}
"Так стало намного лучше" - подумал я и пошел спать
С утра естественно все кажется по другому...
Во-первых, уведомления на почту лучше отключить. Два письма в час - это много.
Во-вторых, лучше добавить пользовательскую переменную "Розетка Обогреватель включена", при первом включении менять ее и при последующих проверках не включать уже включенную розетку и не слать письмо, а при выключении розетки опять менять ее на противоположное состояние и опять не выключать розетку при каждом срабатывании таймера.