Försöker lära mej LUA genom "trial and error" och med hjälp av trådar på detta forum.
I sovrummet har jag en scene (ID 46) som triggar från rörelsesensor (ID63) om värdet från ljusmätaren (ID65) är mindre än 3 lux och ställer dimmern (ID78) på 9% i 5 minuter.
--[[
%% properties
63 value
65 value
%% weather
%% events
%% globals
Cleaning
--]]
local startSource = fibaro:getSourceTrigger();
if
( tonumber(fibaro:getValue(63, "value")) > 0
and tonumber(fibaro:getValue(65, "value")) < 3
and fibaro:getGlobalValue("Cleaning") == "False" )
then
fibaro:call(78, "setValue", "9");
setTimeout(function() fibaro:call(78, "turnOff");
end
Vid t.ex. städning vill jag att dubbelklick ska ställa belysningen på 100% och hållas tills jag stänger av med enkelklick. Gjorde därför scene ID 48 med följande kod:
--[[
%% properties
%% 78, "sceneActivation"
%% globals
--]]
local startSource = fibaro:getSourceTrigger()
local sa = tonumber(fibaro:getValue(78, "sceneActivation"))
if (sa == 14) then fibaro:killScenes(46); fibaro:setGlobal('Cleaning','True'); fibaro:call(78, "setValue", "100") end
if (sa == 16) then fibaro:setGlobal('Cleaning','False') end
Dubbelklick funktionen i själva dimmern ger ju 100% ljus men eftersom rörelsesensorn har triggat 9% så återgår dimmern till 9% efter 5 minuter om någon rör sej i rummet, annars stänger den helt.
För att lösa detta tänkte jag att en global variabel kanske kunde fungera. Dubbelklick ändrar nog variabeln till "Cleaning: true" men dimmern triggas inte.
Vad gör jag för fel?
Trigger från dubbelklick Fibaro FGD212
Hittade denna tråd som behandlar samma ämne i forumet: viewtopic.php?f=21&t=5043
Inte riktigt detsamma men jag kan nog leva med det. En annan sak om jag kan övertyga min sambo!
Jag har dimmern i sovrummet på 9%, triggad från rörelsesensorn. Eftersom rörelsesensorn har inbyggd ljusmätare använder jag den funktionen istället för variabeln Dagsljus.
Nackdelen med denna scen är att då man är i rummet och lamporna är triggade på 9% så måste man först hålla in knappen för att dimma ner en aning för att sedan trycka igen och hålla tills full ljusnivå är nådd.
Försökte med dubbelklick-funktionen i dimmern men scenen triggar genast ljusnivån tillbaka till 9%.
Så här blev min kod:
--[[
%% properties
63 value
65 value
78 value
%% events
%% globals
--]]
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end
-- Triggning vid rörelse, tänd lampa till 9%, enbart när ID65 <1 LUX
if ( tonumber(fibaro:getValue(63, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(78, "value")) == 0 ) and
tonumber(fibaro:getValue(65, "value")) < 1
then fibaro:call(78, "setValue", "9")
end
end
-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(63, "value")) == 0 ) and
tonumber(fibaro:getValue(78, "value")) == 9 and
tonumber(fibaro:getValue(65, "value")) < 1
then fibaro:call(78, "setValue", "0")
end
Inte riktigt detsamma men jag kan nog leva med det. En annan sak om jag kan övertyga min sambo!
Jag har dimmern i sovrummet på 9%, triggad från rörelsesensorn. Eftersom rörelsesensorn har inbyggd ljusmätare använder jag den funktionen istället för variabeln Dagsljus.
Nackdelen med denna scen är att då man är i rummet och lamporna är triggade på 9% så måste man först hålla in knappen för att dimma ner en aning för att sedan trycka igen och hålla tills full ljusnivå är nådd.
Försökte med dubbelklick-funktionen i dimmern men scenen triggar genast ljusnivån tillbaka till 9%.
Så här blev min kod:
--[[
%% properties
63 value
65 value
78 value
%% events
%% globals
--]]
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end
-- Triggning vid rörelse, tänd lampa till 9%, enbart när ID65 <1 LUX
if ( tonumber(fibaro:getValue(63, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(78, "value")) == 0 ) and
tonumber(fibaro:getValue(65, "value")) < 1
then fibaro:call(78, "setValue", "9")
end
end
-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(63, "value")) == 0 ) and
tonumber(fibaro:getValue(78, "value")) == 9 and
tonumber(fibaro:getValue(65, "value")) < 1
then fibaro:call(78, "setValue", "0")
end
Ingen som kommenterat men jag har studerat vidare och hittat en lösning, tror jag, som gör att dubbelklick-funktionen i dimmern fungerar:
--[[
%% properties
63 value
65 value
78 value
78 sceneActivation
%% events
%% globals
--]]
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end
-- Triggning vid rörelse, tänd lampa till 9%, enbart när ID65 <1 LUX
-- ID63 = rörelsesensor, ID65 = ljussensor, ID78 = dimmer
if ( tonumber(fibaro:getValue(63, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(78, "value")) == 0 ) and
tonumber(fibaro:getValue(65, "value")) < 10
then fibaro:call(78, "setValue", "10")
elseif ( tonumber(fibaro:getValue(78, "sceneActivation")) == 14)
then fibaro:call(78, "setValue", "90")
end
end
-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(63, "value")) == 0 ) and
tonumber(fibaro:getValue(78, "value")) == 10
then fibaro:call(78, "setValue", "0")
end
--[[
%% properties
63 value
65 value
78 value
78 sceneActivation
%% events
%% globals
--]]
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end
-- Triggning vid rörelse, tänd lampa till 9%, enbart när ID65 <1 LUX
-- ID63 = rörelsesensor, ID65 = ljussensor, ID78 = dimmer
if ( tonumber(fibaro:getValue(63, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(78, "value")) == 0 ) and
tonumber(fibaro:getValue(65, "value")) < 10
then fibaro:call(78, "setValue", "10")
elseif ( tonumber(fibaro:getValue(78, "sceneActivation")) == 14)
then fibaro:call(78, "setValue", "90")
end
end
-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(63, "value")) == 0 ) and
tonumber(fibaro:getValue(78, "value")) == 10
then fibaro:call(78, "setValue", "0")
end