Bei meiner Szene mit der Sonosbox gibt es keine Aussetzer und je nachdem wie lange der Bewegungssensor bis zur nächsten Bewegungsmeldung eingestellt ist bleibt die Sonosbox an:
--[[
%% properties
79 value
%% globals
%% events
--]]
local sensors = {79}
local delay = 0
local debug = false
function actionsMotion()
fibaro:call(66, "pressButton", "8");
fibaro:call(66, "pressButton", "22");
fibaro:debug('Führe Aktionen bei Bewegungserkennung aus')
end
function actionsNoMotion()
fibaro:call(66, "pressButton", "6");
fibaro:debug('Führe Aktionen nach Ende Bewegung aus')
end
local instances = tonumber(fibaro:countScenes());
function getSensorStatus()
for i,n in ipairs(sensors) do
if (tonumber(fibaro:getValue(n, "value")) > 0) then
return 1;
end
end
return 0;
end
function getLastBreach()
local breach = 0;
for i,n in ipairs(sensors) do
local nBreach = tonumber(fibaro:getValue(n, "lastBreached"));
if(nBreach > breach) then
breach = nBreach;
end
end
return breach;
end
function checkMotion()
lastBreached = getLastBreach();
time = os.time();
if (debug) then fibaro:debug("Zuletzt ausgelöst: Vor "..(time-lastBreached).." Sekunden"); end
if (getSensorStatus() == 1) then
return true;
end
if ((time-lastBreached)>=delay) then
return false;
end
return true;
end
local lastBreached = getLastBreach()
if (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1) then
if (instances > 1) then fibaro:abort(); end
fibaro:debug('Bewegung im Raum erkannt - Starte Timer')
actionsMotion()
while (checkMotion()) do
fibaro:sleep(5000);
end
if (debug) then fibaro:debug("Keine Bewegung mehr erkannt."); end
actionsNoMotion()
end
Ich habe nur ein Problem, ich hätte gerne die Box in der Nacht nicht eingeschaltet, wenn ich den Raum betrete, wie müßte ich da meinen Code ändern?
Gruß Salve