Po lekturze i uwagach przerobiłem kod i działa. Nie powoduje przekroczenia instancji. Dzięki za pomoc.
Niektóre linijki mogą być zbędne bo sobie testowałem. Jutro zoptymalizuje.
--[[
%% properties
964 armed
%% events
%% globals
--]]
local czas = os.time()
fibaro:debug("sceneInstance: "..fibaro:countScenes())
fibaro:debug("SCENE START --------------------------")
fibaro:debug("sceneInstance: "..fibaro:countScenes())
if fibaro:countScenes() > 1 then
fibaro:debug("SCENE ABORT --------------------------")
fibaro:abort()
fibaro:killScenes(45)
end
fibaro:debug("Start")
if tonumber(fibaro:getValue(964, "armed")) > 0 then
while true do
if os.time() - czas > 60 then
fibaro:debug("Upłynął czas")
fibaro:call(964, "setArmed", 0)
break
end
if ( tonumber(fibaro:getValue(965, "armed")) > 0 ) and ( tonumber(fibaro:getValue(967, "armed")) > 0 ) and ( tonumber(fibaro:getValue(966, "armed")) > 0 ) and ( tonumber(fibaro:getValue(968, "armed")) > 0 ) and ( tonumber(fibaro:getValue(969, "armed")) > 0 ) and ( tonumber(fibaro:getValue(988, "armed")) > 0 ) and ( tonumber(fibaro:getValue(989, "armed")) > 0 ) then
fibaro:call(58, "sendDefinedPushNotification", "94");
fibaro:call(46, "sendDefinedPushNotification", "94");
break
end
end
end
if tonumber(fibaro:getValue(964, "armed")) == 0 then
while true do
if os.time() - czas > 60 then
fibaro:debug("Upłynął czas")
break
end
if ( tonumber(fibaro:getValue(965, "armed")) == 0 ) and ( tonumber(fibaro:getValue(967, "armed")) == 0 ) and ( tonumber(fibaro:getValue(966, "armed")) == 0 ) and ( tonumber(fibaro:getValue(968, "armed")) == 0 ) and ( tonumber(fibaro:getValue(969, "armed")) == 0 ) and ( tonumber(fibaro:getValue(988, "armed")) == 0 ) and ( tonumber(fibaro:getValue(989, "armed")) == 0 ) then
fibaro:call(58, "sendDefinedPushNotification", "95");
fibaro:call(46, "sendDefinedPushNotification", "95");
break
end
end
end
fibaro:debug("Koniec")