Ja mam rozwiazanie za pomoca 2 scen, jak ktos ogarnia to mozna spiac w jedna scene.
Czujka od swiatla ustawiona na wysylanie raportu przy zmianie o 20lux(parametr 40), bateria 2 lata.
Scena pierwsza wlacza swiatlo na 10 min po wykryciu ruchu, gdy wykryje ponownie ruch zaczyna odlicznie od poczatku:
--[[
%% properties
42 value
--]]
if (fibaro:countScenes() > 1) or
fibaro:getValue(42, "value") == 0
then
fibaro:debug("Scena wywolana kilkukrotnie lub czujka zmienila stan z 1 na 0")
fibaro:abort()
end
local delay = 600;
local startSource = fibaro:getSourceTriggerType();
fibaro:debug("wywolane przez ".. startSource)
if
tonumber(fibaro:getValue(42, "value")) > 0
then
fibaro:call(88, "turnOn");
fibaro:debug("Action: turnON")
end
if
( tonumber(fibaro:getValue(88, "value")) > 0 )
then
local turnOffTime = os.time() + delay
while turnOffTime > os.time() do
if tonumber(fibaro:getValue(42, "value")) > 0
then turnOffTime = os.time() + delay
end
fibaro:debug("zwłoka: "..tostring(turnOffTime - os.time()))
fibaro:sleep(30000)
end
fibaro:call(88, "turnOff");
fibaro:debug("Action: turnOFF")
end
druga scena uruchamia sie co 10 min, wlacza pierwsza scene gdy swiatlo spada ponizej 200 LUX:
--[[
%% autostart
--]]
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local lightSensor = tonumber(fibaro:getValue(44, "value"));
fibaro:debug("Brightness: "..lightSensor.."lux")
if
lightSensor > 200 and
fibaro:isSceneEnabled(50) == true
then
fibaro:debug("Swiatlo wiecej niz 200lux, scena i lampa OFF");
fibaro:setSceneEnabled(50, false);
fibaro:call(88, "turnOff");
elseif
lightSensor > 200 and
fibaro:isSceneEnabled(50) == false
then
fibaro:call(88, "turnOff")
fibaro:debug("Swiatlo wiecej niz 200lux i scena nieaktywna - Lampa OFF")
elseif
lightSensor < 200 and
fibaro:isSceneEnabled(50) == false
then
fibaro:debug("Swiatlo mniej niz 200lux, scena i lampa ON");
fibaro:setSceneEnabled(50, true);
fibaro:startScene(50);
elseif
lightSensor < 200 and
fibaro:isSceneEnabled(50) == true
then
fibaro:debug("Swiatlo mniej jak 200lux i scena aktywna - nic nie robie")
end
setTimeout(tempFunc, 600000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
end