Men har samtidigt sjukt långt kvar inser jag.
Vad gör commando "for i = 1" i nedan kod t.ex?
Jag försöker få till en "nattljus scen" och tänkte att jag moddar Jompas toalettljus scen lite grann.
Men får som sagt inte till det.
I orginalscenen så tänds alltid ljus vid rörelse. Vid Natt till 5% och vid dag eller om xx ID lampor är på till 100%.
Det jag försöker få till är att scenen skall trigga och dimma xxID till en låg % under natten. Men om variabel "TimeOfDay" är Day så skall den inte trigga alls. Likaså om "ToD" är Night men xxID är på.
Jag har fått till så att scenen inte triggas när jag inte vill att den skall trigga, eller rättare sagt, inga lampor sätts på. Däremot går timern igång och efter utsatt timer tid så släcks lamporna.
Huvudtanken med scenen är att om nån av ungarna går upp på natten så sitter en PIR utanför deras rum som triggas. Då sätts lite ledljus på i xx sekunder innan de släcks igen.
Under dagen eller om vi andra är vakna skall den inte trigga alls.
Detta är koden i sitt orginalutförande (alla mina försök till modifiering kommer troligtvis krångla till det.)
EnhetsID:na är de jag vill ha samt scene scenario är uppdaterat.
Code: Select all
--[[
%% properties
188 value
%% globals
--]]
-- SCENE SCENARIO
-- Kids wake up and need to go up to bathroom or come downstairs
-- during the night.
-- PIR sensor is triggered in hallway upstairs, lights will only dim to 10%
-- and turnOff after "endTimer"
-- If sensor is triggered again during the "endTimer" period,
-- the "endTimer" period will start over
-- Exception, "TimeOfDay" variable is set to Night but some are still
-- awake and up.
-- Then you don’t want to trigger the designated lights to change state. So if
-- any of the "lights2Check" is on, it will ignore to trigger the scene.
-- During the day scene will not trigger at all.
-------------------- USER SETTINGS -----------------------
lights2Check = {67}; -- If any of those lights is ON then scene will not trigger
lights = {47,53,100,114}; -- LightId of lights to dim to 10% when scene triggered
sensor = 188 -- SensorId
nightdimValue = "10" -- Dimmer value to set during night
endTimer = 60 -- How long to keep lights on, in seconds
varName = "TimeOfDay" -- Variable name
varNightvalue = "Night" -- varName predefined value
debug = true -- set debug to true or false
-----------------------------------------------------------
------------- DO NOT CHANGE LINES BELOW -------------------
startSource = fibaro:getSourceTrigger();
version = "0.0.3"
-- Give debug a fancy color
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
end
-- Kill new instance of this scene
if (fibaro:countScenes() > 1) then
Debug( "red", "Abort, count scene = "..fibaro:countScenes());
fibaro:abort();
end
-- Scene was triggered, function
SceneTriggered = function()
checkLights();
turnLightOn();
startTimer();
end
-- Timer, function
startTimer = function ()
if debug then
Debug( "green", "Timer started");
end
local counter = endTimer
while(counter > 0)
do
counter = counter - 1
fibaro:sleep(1000)
if
tonumber(fibaro:getValue(sensor, "value")) > 0 then
counter = endTimer;
end
end
if debug then
Debug( "green", "Timer stopped");
end
for i = 1,#lights do
lightItems = lights[i];
fibaro:call(lightItems, "turnOff");
end
end
-- TurnOn lights, functions
turnLightOn = function()
for i = 1,#lights do
lightItems = lights[i];
if fibaro:getGlobal(varName) == varNightvalue and lightsOff then
Debug( "grey", "Night time, dim to 10%");
fibaro:call(lightItems, "setValue", nightdimValue)
else
fibaro:call(lightItems, "setValue", "100")
Debug( "grey", "Not night or other lights is ON");
--end
end
end
end
checkLights = function()
Debug( "grey", "Check if lights is ON");
for i = 1,#lights2Check do
lightItems = lights2Check[i];
status = fibaro:getValue(lightItems, "value")
if status ~= "0" then lightsOff = false break
else lightsOff = true end
end
end
------------------ START OF SCENE ----------------------
if ( startSource["type"] == "other" ) then
SceneTriggered();
elseif ( startSource["type"] == "property" ) then
SceneTriggered();
end
Debug( "orange", "Lights & Motion Scene - LUA Scripting by Jonny Larsson 2015" );
Debug( "orange", "Version: "..version);