Also:
Die Arming Szene, die prüft ob noch etwas offen ist und ggf. via Sonos eine Sprachausgabe absendet:
--[[
%% properties
%% globals
rfid_alarm
alarm
Sirene
--]]
local startSource = fibaro:getSourceTrigger();
if (
( fibaro:getGlobalValue("rfid_alarm") == "On" )
)
then
fibaro:debug('Überprüfe Sensoren')
if (tonumber(fibaro:getValue(154, 'value')) == 1) then
local sensorname = fibaro:getName(154)
local sensorroom = fibaro:getRoomNameByDeviceID(154)
fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
fibaro:setGlobal("SONOS_MUSIC", "192.168.178.36/Fibaro/schlafzimmerfenstergeoeffnet.mp3");
fibaro:call(134, "setSlider", "6", "40");
fibaro:call(134, "pressButton", "2");
fibaro:call(135, "setSlider", "6", "40");
fibaro:call(135, "pressButton", "2");
fibaro:call(138, "setSlider", "6", "40");
fibaro:call(138, "pressButton", "2");
end
if (tonumber(fibaro:getValue(54, 'value')) == 1) then
local sensorname = fibaro:getName(54)
local sensorroom = fibaro:getRoomNameByDeviceID(54)
fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
fibaro:setGlobal("SONOS_MUSIC", "192.168.178.36/Fibaro/terrassentuergeoeffnet.mp3");
fibaro:call(134, "setSlider", "6", "40");
fibaro:call(134, "pressButton", "2");
fibaro:call(135, "setSlider", "6", "40");
fibaro:call(135, "pressButton", "2");
fibaro:call(138, "setSlider", "6", "40");
fibaro:call(138, "pressButton", "2");
end
if (tonumber(fibaro:getValue(54, 'value')) == 0 and
tonumber(fibaro:getValue(154, 'value')) == 0) then
fibaro:debug('Alle Sensoren sicher - Alarm aktiviert')
fibaro:setGlobal("SONOS_MUSIC", "192.168.178.36/Fibaro/arming.mp3");
fibaro:call(134, "setSlider", "6", "40");
fibaro:call(134, "pressButton", "2");
fibaro:call(135, "setSlider", "6", "40");
fibaro:call(135, "pressButton", "2");
fibaro:call(138, "setSlider", "6", "40");
fibaro:call(138, "pressButton", "2");
----Variable ALARM AN setzen----
fibaro:setGlobal('alarm', 'an')
else
if (tonumber(fibaro:getValue(54, 'value')) == 1 or
tonumber(fibaro:getValue(154, 'value')) == 1) then
fibaro:setGlobal('alarm', 'aus')
fibaro:setGlobal('rfid_alarm', 'Off')
fibaro:setGlobal('Sirene', 'aus')
fibaro:debug('Sensoren nicht sicher - deaktiviere Alarm')
end
end
end
Danach greift die Alarm Szene, die wartete ob zwei Sensoren triggern und dann die Variable für die “Party”-Szene setzt/ den Alarm startet:
--[[
%% properties
81 value
65 value
54 value
122 value
152 value
154 value
106 value
--]]
if (fibaro:getGlobalValue("alarm") == 'an' ) then -- nur ausführen wenn Alarmanlage scharf ist
local trigger = fibaro:getSourceTrigger()
local ID = tonumber(trigger['deviceID'])
local lastAlarm = tonumber(fibaro:getGlobalValue("Last_Alarm"))
fibaro:debug("Device: " ..ID)
if (tonumber(fibaro:getValue(ID, "value")) > 0 )then
fibaro:debug("open")
if os.time() - lastAlarm >60 then
fibaro:setGlobal("Last_Alarm",os.time())
fibaro:debug((os.time() - lastAlarm) .."s - update Zeit")
else
fibaro:setGlobal("Last_Alarm",os.time())
fibaro:debug((os.time() - lastAlarm) .."s - Alarm ausgelöst!!!!!")
fibaro:sleep(120000)
fibaro:setGlobal('Sirene', 'an')
end
end
end
Da muss jetzt irgendwo die Auslöseverzögerung rein, damit ich nach öffnen der Haustür und betreten des Flurs keinen Alarm auslöse (in diesem Bereich befinden sich zwei Sensoren, womit die Bedingung 2 Sensoren innerhalb der Zeit X erfüllt ist).
Danke für deine Hilfe