Witam, Was w nowym roku
pytanko, czy możecie mi pomóc w modyfikacji sceny
by jej wyłączenie włącznikiem skutkowało wyłączeniem odliczania, że naruszenie FGMS ją uruchomi
--[[
%% properties
164 value
70 value
%% globals
--]]
-----------------------------------------------------------------------------
fibaro:debug("SCENE START --------------------------")
fibaro:debug("sceneInstance: "..fibaro:countScenes())
if fibaro:countScenes() > 1 then
fibaro:debug("SCENE ABORT --------------------------")
fibaro:abort()
end
-----------------------------------------------------------------------------
local sensorID = 164
local lightID = 70
local lumenID = 166
local delay = 300
local lumen = 30
local timeStart = '07:00'
local timeStop = '20:00'
-- Functions ---------------------------------------------------------------
-- funkcja zamienia czas w formacie tekstowym "HH:MM" lub os.date("*t") na liczbę minut od północy
function toMinutes(czasHHMM)
local a
if type(czasHHMM) == "string" then
a = tonumber(string.sub(czasHHMM, 1, 2)) * 60 + tonumber(string.sub(czasHHMM, 4, 5))
else
a = tonumber(czasHHMM.hour) * 60 + tonumber(czasHHMM.min)
end
return a
end
------------------------------------------------------------------------------
local minStart = toMinutes(timeStart)
local minStop = toMinutes(timeStop)
local minNow = toMinutes(os.date("*t"))
local sensorMoved = (tonumber(fibaro:getValue(sensorID, "value")) > 0)
local isLightOn = (tonumber(fibaro:getValue(lightID, "value")) > 0)
fibaro:debug("isLightOn: "..tostring(isLightOn))
fibaro:debug("sensorMoved: "..tostring(sensorMoved))
------------------------------------------------------------------------------
local isTime
if (minStop >= minStart)
then
if (minNow >= minStart) and (minNow <= minStop)
then isTime = true else isTime = false
end
elseif (minStop <= minStart)
then
if (minNow <= minStart) and (minNow >= minStop)
then isTime = false else isTime = true
end
end
fibaro:debug("isTime: "..tostring(isTime))
------------------------------------------------------------------------------
local isDark
if tonumber(fibaro:getValue(lumenID, "value")) < lumen
then
isDark = true
else
isDark = false
end
fibaro:debug("isDark: "..tostring(isDark))
-- zapalanie światła --------------------------------------------------------
if sensorMoved and isDark and isTime
then fibaro:call(lightID, "turnOn")
fibaro:debug("Action: turnOn")
end
-- gaszenie światła ---------------------------------------------------------
if isLightOn then
local turnOffTime = os.time() + delay
while turnOffTime > os.time() do
if tonumber(fibaro:getValue(sensorID, "value")) > 0
then turnOffTime = os.time() + delay
end
fibaro:debug("zwłoka: "..tostring(turnOffTime - os.time()))
fibaro:sleep(5000)
end
fibaro:call(lightID, "turnOff")
fibaro:debug("Action: turnOff")
end
-- koniec --------------------------------------------------------------------
fibaro:debug("SCENE STOP")