Hallo zusammen. Folgende Konstellation: Ich habe einen Standard Bewegungsmelder BJ Wächter 70 an einen Fibaro Dimmer an den Eingang S2 angeschlossen. Der BW schaltet bei Bewegung den Eingang S2 für 1min auf die Phase. Der Dimmer ist auf Taster konfiguriert , da an S1 eine Wechselschaltung hängt (mit Taster). Die SceneActivation ist aktiv. Das ganze funktioniert auch grundsätzlich. Wird eine Bewegung erkannt, triggert meine Scene im Homecenter 2. In der Scene selbst triggere ich auf das Hold Event. Dort werden dann verschieden Lampen eingeschaltet und nach einer Verzögerungszeit wieder ausgeschaltet. Hier ist aber jetzt das Problem - wurde in der Zeit in der die Szene noch läuft erneut eine Bewegung erkannt, passiert nichts. Das heißt man steht manchmal im Dunkeln:(. Kann man den Schaltzustand von S2 innerhalb der Szene abfragen? Dann könnte man am Ende der Szene nochmal prüfen ob S2 noch/wieder aktiv ist und die Verzögerungszeit erneut ablaufen lassen.
Das ist meiner jetzige Code
--[[
%% properties
74 sceneActivation
%% globals
--]]
-----------------------------------------
-- SCENE ACTIVATED BY DIMMER SWITCH --
-----------------------------------------
-- Making sure that only one instance of the scene is running.
if (fibaro:countScenes() > 1) then
fibaro:abort();
end
-- setup some local variables
local startSource = fibaro:getSourceTrigger();
local id= 74;
function GetEinschalten()
local month = tonumber(os.date('%m'))
local tabm = { [1] = "1800", [2] = "1800", [3] ="1900", [4] = "1900", [5] = "2030", [6] = "2130",
[7] = "2145", [8] = "2100", [9] ="2000", [10] = "1900", [11] = "1800", [12] = "1800" }
return tonumber(tabm[month])
end
-- MAIN CODE ---------------------------------------------------------
if (tonumber(fibaro:getValue(id, "sceneActivation"))==26) then
fibaro:debug("26");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==24) then
fibaro:debug("24");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==25) then
fibaro:debug("25");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==22) then --hold
fibaro:debug(string.format(os.date("%d.%m.%Y")))
fibaro:debug("Bewegungsmelder aktiv");
fibaro:call(2,"sendEmail","Ausloesung BWM Garage","Bewegungsmelder Garage aktiv")
if (tonumber(os.date("%H%M")) >= GetEinschalten() or tonumber(os.date("%H%M")) <= 0700) then
fibaro:debug("Beleuchtung einschalten");
fibaro:call(140, "turnOn")
fibaro:call(141, "turnOn")
fibaro:call(142, "turnOn")
fibaro:call(143, "turnOn")
fibaro:call(69, "turnOn")
fibaro:sleep(math.random(5000, 15000)) ; --5 bis 15 Sek. warten
fibaro:call(74, "turnOn")
fibaro:sleep(120*1000)
fibaro:debug("Beleuchtung ausschalten");
fibaro:call(140, "turnOff")
fibaro:call(141, "turnOff")
fibaro:call(142, "turnOff")
fibaro:call(143, "turnOff")
fibaro:call(69, "turnOff")
fibaro:sleep(math.random(5000, 15000)) ; --5 bis 15 Sek. warten
fibaro:call(74, "turnOff")
end
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==23) then --release
fibaro:debug("Bewegungsmelder inaktiv");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==20) then
fibaro:debug("20");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==21) then
fibaro:debug("21");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==24) then
fibaro:debug("24");
end
if (tonumber(fibaro:getValue(id, "sceneActivation"))==25) then
fibaro:debug("25");
end
Diesen Code möchte ich einbauen wenn S2 noch aktiv
repeat
fibaro:sleep(1000);
timer = timer-1
– Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if ??? then
timer=starttimer;
end
until (timer<1)
Ich hoffe es hat einer eine Idee