[BLOG] Fibaro Home Center 2 – LUA-scen för att tända/släcka

I denna kategori diskuteras inlägg på blog.m.nu

[BLOG] Fibaro Home Center 2 – LUA-scen för att tända/släcka

Inläggav supportM » 21 okt 2014, 20:11

Detta inlägg kommer från ett blogginlägg. För att läsa originalinlägget, klicka här »

Vi har tidigare gått igenom ett avancerat luascript som använder flera olika rörelsesensorer och timervariabler för att på ett intelligent sätt styra belysningen i våra lokaler. Det skriptet är antagligen mer avancerat än vad de flesta behöver, så här kommer den enkla varianten.

Scriptet nedan triggas av en rörelsesnsor eller en dörrsensor och använder den globala variabeln timer, och den globala variabeln night. Här kan du läsa mer om variabler, och här kan du läsa mer om hur du skapar en scen som sätter variabeln night.

Scriptet bör vara mycket lättare att förstå och modifiera än den avancerade varianten.
--[[
%% properties
47 value
43 value
%% globals
--]]

--43 is the id of the PIR that is located outside near the door.
--47 is the door sensor that detects if the door is opened or not.

--Scene purpose
-- IF PIR detects movement or door is opened then turn on lamp keep it on for 3 minutes -- but only do so if global variable "night" is true..
-- If new movement detected during the 3 minute period reset the timer to 3 minutes


local sceneId = 16 --ID of this scene, used to detect number of instances run
local timerEndTime = 180 --Seconds to keep the lamp turned on after PIR detects movement
local timer = "timer" --Name of global variabel to control the timer
local timerValue = fibaro:getGlobalValue(timer) --Current value of global variabel for timer
local triggerValue = fibaro:getValue(43, "value") --Get PIR value that activated this scene
local triggerValue2 = fibaro:getValue(47, "value") --Get Door sensor value that activated this scene
local lights = 42 --light to be controlled by this scene


fibaro:debug("start, timer = " .. timerValue .. " lights = " .. fibaro:getValue(lights, "value") .. " ,triggerValue = " .. triggerValue .. ",".. triggerValue2..", night = " .. fibaro:getGlobalValue("night")) --debug
if ( fibaro:getValue(lights, "value") == "0" and triggerValue + triggerValue2 > 0 and tonumber(fibaro:getGlobalValue("night")) > 0) then --if the lights is off, one (or both) of the trigger values is true and the night variable is true...
fibaro:call(lights, "turnOn") --Turn lights on
fibaro:setGlobal(timer, timerEndTime) --Set global variabel for timer
while (fibaro:getGlobalValue(timer) ~= "0") do --loop until timer is 0
timerValue = tonumber(fibaro:getGlobalValue(timer)) --Get current value of global variabel timer
fibaro:setGlobal(timer, timerValue-1) --Decrease global variabel for timer with 1 second
fibaro:debug("Loop - timer = " .. fibaro:getGlobalValue(timer)) --debug
fibaro:sleep(1000) --Wait 1 second
end
fibaro:call(lights, "turnOff") --Turn lights off
elseif fibaro:countScenes(sceneId) > 1 then --if scene is already running , reset the timer to 3 minutes
fibaro:setGlobal(timer, timerEndTime) --set global variabel for timer to 2 minutes
fibaro:debug("New instance, totalt = " .. fibaro:countScenes(sceneId)) --debug
end
Som vanligt svarar vi gärna på frågor!
Användarvisningsbild
supportM
Moderator
 
Inlägg: 255
Blev medlem: 20 aug 2014, 10:27
Ort: Linköping

Re: [BLOG] Fibaro Home Center 2 – LUA-scen för att tända/slä

Inläggav Mellizor » 25 dec 2015, 23:59

Går det att använda detta script med lite modifikation i en vera edge? Jag har noll koll på lua.
Mellizor
Wannabe
 
Inlägg: 3
Blev medlem: 14 mar 2015, 22:01
Ort: Skövde


Återgå till Diskussionstrådar blog.m.nu

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst