--[[ %% properties 366 value 170 value 371 value %% globals --]] -- Lösche doppelte Szene(n) if (fibaro:countScenes()>3) then fibaro:abort(); else -- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein) local scene = 128 -- ID dieser Szene local motion1 = 170 -- ID des Bewegungssensors OG local motion2 = 371 -- ID des Bewegungssensors EG local switch = 366 -- ID des Relay Switches -- SCHALTE LICHT EIN & AUS if (tonumber(fibaro:getValue(373, "value")) < 10 ) then if (tonumber(fibaro:getValue(motion1, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 or (tonumber(fibaro:getValue(motion2, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 then fibaro:call(switch, "turnOn"); fibaro:debug("Schalte Licht ein"); end end -- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird if (tonumber(fibaro:getValue(switch, "value"))) > 0 then local starttimer = 600; local timer = (starttimer); fibaro:debug("Starte Timer"); repeat fibaro:sleep(1000); -- Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 10 Sekunden, um ein -- versehentliches (erneutes) Aktivieren der Szene zu verhindern if (tonumber(fibaro:getValue(switch, "value"))) < 1 then timer=1; fibaro:call(switch, "turnOff"); fibaro:sleep(10000); break end timer=timer-1; -- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit if (tonumber(fibaro:getValue(motion1, "value"))) > 0 or (tonumber(fibaro:getValue(motion2, "value"))) > 0 then timer=starttimer; fibaro:debug("Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)"); end until (timer<1) -- Schalte Licht aus, wenn Timer vollständig abgelaufen ist fibaro:call(switch, "turnOff"); fibaro:debug("Timer abgelaufen/Schalte Licht aus"); fibaro:killScenes(scene); end end