Following on from posts elsewhere about my issue I am convinced the problem lies with the block/lua conversion. However as a newbie I do not know enough to decipher the flow of the code.
Primarily I need to understand how this scene is triggered when %%autostart is not used. I get that a manual start will set things going by the first 4 lines but how does the scene trigger otherwise?
If someone could add some comments to the offending code below for me it would be most useful!
local startSource = fibaro:getSourceTrigger();
if(startSource["type"] == "other") then
fibaro:call(64, "turnOff");
fibaro:call(66, "turnOff");
else
if (( tonumber(fibaro:getValue(172, "value")) == 0 )) then
setTimeout(function()
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(172, "value");
if (( tonumber(fibaro:getValue(172, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 200) then
delayedCheck0 = true;
end
local startSource = fibaro:getSourceTrigger();
if (
( delayedCheck0 == true )
or
startSource["type"] == "other"
)
then
fibaro:call(64, "turnOff");
fibaro:call(66, "turnOff");
end
end, 200000)
end
end
Question
15green 0
Hi All
Following on from posts elsewhere about my issue I am convinced the problem lies with the block/lua conversion. However as a newbie I do not know enough to decipher the flow of the code.
Primarily I need to understand how this scene is triggered when %%autostart is not used. I get that a manual start will set things going by the first 4 lines but how does the scene trigger otherwise?
If someone could add some comments to the offending code below for me it would be most useful!
--[[
%% properties
172 value
%% weather
%% events
%% globals
--]]
local startSource = fibaro:getSourceTrigger();
if(startSource["type"] == "other") then
fibaro:call(64, "turnOff");
fibaro:call(66, "turnOff");
else
if (( tonumber(fibaro:getValue(172, "value")) == 0 )) then
setTimeout(function()
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(172, "value");
if (( tonumber(fibaro:getValue(172, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 200) then
delayedCheck0 = true;
end
local startSource = fibaro:getSourceTrigger();
if (
( delayedCheck0 == true )
or
startSource["type"] == "other"
)
then
fibaro:call(64, "turnOff");
fibaro:call(66, "turnOff");
end
end, 200000)
end
end
Link to post
Share on other sites
9 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.