Продолжаем писать скрипт уведомления от Domoticz на email. Зачем это нужно и описание пользовательских переменных есть в предыдущей теме. Но я пожалуй все равно напомню - у нас есть пользовательская переменная FlagLongTimeNotAtHome , которая может принимать два значения - "1" когда дома долго никого нет (например мы все уехали в отпуск) и "0" когда система работает в обычном режиме - когда дома каждый день кто-нибудь присутствует.
В этот раз нам нужно получать данные со всех датчиков? которые есть в системе Domoticz и их значения отправить в теле письма. Реализовать это на блоках не получится, и придется воспользоваться более продвинутым языком программирования, а точнее dzVents.
В качестве триггера я задам время рассвета, т.о. когда время системы сравняется со временем рассвета, скрипт отработает и отправит нам письмо. Я постарался описать все в комментариях скрипта поэтому особо добавить и нечего. Комментарии отделены двумя дефисами. Если что-то непонятно - спрашивайте.
-- Ежедневное уведомление о том, что Дом живой
-- в теле письма показания всех датчиков
return {
active = true, -- скрипт активен
on = {
timer = {'at sunrise'}, -- каждый день на восходе солнца
--timer = {'at sunset'}, -- каждый день на закате
--timer = {'at 05:47'}, -- каждый день в 05:47
},
logging = {
level = domoticz.LOG_ERROR -- пишем в log только ошибки
},
-- когда таймер выстрелил, выполним секцию execute:
execute = function(domoticz)
-- проверим флаг:
if (domoticz.variables('FlagLongTimeNotAtHome').value == 1) then
local th_room = domoticz.devices(222) --222 idx T&H Комната Temp + Humidity
local th_street = domoticz.devices(215) --215 idx T&H Улица Temp + Humidity
local th_bathroom = domoticz.devices(124) --124 idx T&H Ванная Temp + Humidity
local th_kitchen = domoticz.devices(123) --123 idx T&H Кухня Temp + Humidity
local wld_bathroom = domoticz.devices(169) --169 idx Water Leak Detector Ванная
local wld_kitchen = domoticz.devices(120) -120 idx Water Leak Detector Кухня
local splug_tv = domoticz.devices(69) --69 idx Розетка TV
local splug_term = domoticz.devices(82) --82 idx Розетка Term
local splug_nas = domoticz.devices(83) --83 idx Розетка NAS
local ficus_humidity = domoticz.devices(131) --131 idx Ficus benjamina - влажность почвы
local ficus_fertilizer = domoticz.devices(130) --130 idx Ficus benjamina - удобрение
local chopi_humidity = domoticz.devices(161) --161 idx Spathiphyllum Chopin - влажность почвы
local chopi_fertilizer = domoticz.devices(160) --160 idx Spathiphyllum Chopin - удобрение
local andre_humidity = domoticz.devices(226) --226 idx Anthurium andraeanum - влажность почвы
local andre_fertilizer = domoticz.devices(229) --229 idx Anthurium andraeanum - удобрение
local contact_door = domoticz.devices(91) --91 idx Магнитный датчик двери
local contact_room = domoticz.devices(93) --93 idx Магнитный датчик ОкноКомната
local contact_kitchen = domoticz.devices(92) --92 idx Магнитный датчик ОкноКухня
local motion_room = domoticz.devices(74) --74 idx Датчик движеня комната
local motion_kitchen = domoticz.devices(81) --81 idx Датчик движеня кухня
local time = os.date('%X') -- время в формате 00:00:00
local date = os.date('%d.%m.%Y') -- дата в формате dd.mm.yyyy
local mess0 = 'Home time is '..time..' day is '..date
local mess1 = '<br>Улица: '..domoticz.utils.round(th_street.temperature,1)..'° '..th_street.humidity..'% <br>Комната: '..domoticz.utils.round(th_room.temperature,1)..'° '..th_room.humidity..'% <br>Кухня: '..domoticz.utils.round(th_kitchen.temperature,1)..'° '..th_kitchen.humidity..'% <br>Ванная: '..domoticz.utils.round(th_bathroom.temperature,1)..'° '..th_bathroom.humidity..'% '
local mess2 = '<br>Датчики протечки<br> Кухня '..wld_kitchen.state..'<br> Ванная '..wld_bathroom.state
local mess3 = '<br>Розетки<br> TV '..splug_tv.state..'<br> Term '..splug_term.state..'<br> NAS '..splug_nas.state
local mess4 = '<br>Цветы<br> Ficus '..ficus_humidity.rawData[1]..'% '..ficus_fertilizer.rawData[1]..'μS/cm<br>Белый '..chopi_humidity.rawData[1]..'% '..chopi_fertilizer.rawData[1]..'μS/cm<br>Красный '..andre_humidity.rawData[1]..'% '..andre_fertilizer.rawData[1]..'μS/cm'
local mess5 = '<br>Магнитные датчики<br>Дверь '..contact_door.state..'<br>Ок.комната '..contact_room.state..'<br>Ок.кухня '..contact_kitchen.state
local mess6 = '<br>Датчики движения<br>Комната '..motion_room.lastUpdate.rawDate..' '..motion_room.lastUpdate.rawTime..'<br>Кухня '..motion_kitchen.lastUpdate.rawDate..' '..motion_kitchen.lastUpdate.rawTime
local mess_end = '<br><br>Доклад окончен!'
local line = '<br>-------------------------------------'
local messall = mess0..line..mess1..line..mess2..line..mess3..line..mess4..line..mess5..line..mess6..line..mess_end
-- отправим сообщение
domoticz.email('I still alive',
messall,
'mi@mail.com')
end
end
}
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Чтобы Вам были доступны все функции Вам необходимо либо зарегистрироваться, либо зайти на сайт под своим именем.
Однако при реализации столкнулся с проблемой. Данный код работает с dzVents Version: 2.4.0, а у меня стоял dzVents Version: 2.3.0. В результате округление значений с датчиков температуры не работало и выдавало ошибку в коде.
Группа: Журналисты
Регистрация: 25.08.2008
Статус:
Рапорты о состоянии системы очень удобны.