jenski wrote: ↑Thursday 31 December 2020 12:12
I am messing around with zwave smoke detectors and I'm trying to catch false triggers. I don't know why but every once in a while these devices
Something to play with?
Code: Select all
local scriptVar = 'delayed Alarm'
return
{
on =
{
devices =
{
'rookmelder*', 'Carbon*',
},
customEvents = {
scriptVar,
}
},
logging =
{
level = domoticz.LOG_DEBUG,
marker = scriptVar,
},
execute = function(dz, item)
local delay = 20 -- default (can be overided in messages table)
local mail = '[email protected]' -- default (can be overided in messages table)
local messages =
{
['rookmelder 1.2 - keuken'] = { delay = 30, subject = 'brand alarm keuken', message = 'het alarm (voor brandmelding in de keuken) gaat af' },
['rookmelder 2.2 - zolder'] = { subject = 'brand alarm zolder', message = 'het alarm (voor de brandmelding op zolder) gaat af'},
['rookmelder 3.2 - schuur'] = { subject = 'brand alarm schuur', message = 'het alarm (voor de brandmelding in de schuur) gaat af', mail = '[email protected]' },
['Carbon Monoxide'] = { delay = 1, subject = 'CO alarm zolder', message = 'het alarm (voor een CO melding op zolder) gaat af' },
}
if item.isDevice then
if item.active then
local t = messages[item.name]
local delay = t.delay or delay
local mail = t.mail or mail
dz.email(t.subject, t.message .. ' over ' .. delay .. ' seconden.', mail )
dz.log( t.message .. ' over ' .. delay .. ' seconden.', dz.LOG_FORCE )
dz.emitEvent(scriptVar, { device = { name = item.name, idx = item.idx, at = { dDate = dz.time.dDate, rawTime = dz.time.rawTime }}} ).afterSec(delay)
end
else
local dv = item.json.device
local sensor = dz.devices(dv.idx)
local alarm = dz.devices('Alarmsituatie')
if sensor.lastUpdate.dDate == dv.at.dDate then -->> no new updates to alarm
local t = messages[dv.name]
local mail = t.mail or mail
dz.email(t.subject, t.message .. '. De melding is actief sinds ' .. dv.at.rawTime, mail )
dz.log('Alarm ' .. t.message .. '. De melding is actief sinds ' .. dv.at.rawTime, dz.LOG_DEBUG )
alarm.switchOn()
else
dz.log('Alarm ' .. dv.name .. ' has been updated between since ' .. dv.at.rawTime, dz.LOG_DEBUG ) -- >> no further action
end
end
end
}
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>>
dzVents wiki