Denna använder jag för min källare.
** UPPDATERING **
Upptäckte att när ny rörelse sker eller dörr öppnades så triggades en till instans av samma scen vilket medförde att lampa tändes och släcktes med bägge instanserna. Så tillbaka till ritbordet och då blev det så här istället med hjälp utav robmac på fibaro's forum.
Denna kräver 2st scener för att få bukt med flera instanser av samma scen.
Scen1 (Huvud scen)
Code: Select all
--[[
%% properties
130 value
98 value
%% globals
--]]
--[[
PIR/DoorSensor Timer
original by jompa68
Modified by jompa68, robmac
HISTORY:
1.0.0 original 2013-11-21
1.0.1 major improvments, fixes and comments 2013-11-29
TO USE:
If PIR or door sensor activates by movement or open doors lights will turn of
fo XX minutes, if movement or reopen doors within clockTimer it will kill running
scenes and start a new instance of same scene and clockTimer will start from 0
Needs to have a resetScene defined in your HC2 system (option to have cancelScene also)
--]]
local sceneId = 88 --ID på scen, används för att kolla antal instanser som körs
--local cancelSceneId = 136 --ID of the cancel scen,
local resetSceneId = 138 --ID of the reset scen,
local varValue = fibaro:getGlobalValue("TimeOfDay") --variabel, för att kolla om skymning
local triggerValue = fibaro:getValue(130, "value") --PIR sensor
local triggerDoor = fibaro:getValue(98, "value") -- Dörrr sensor
local lights = 134 --LampID
local clockTimer = 5 --Minuter som lampan ska vara tänd
if (fibaro:countScenes(sceneId) > 1) then
if (triggerDoor == "1" or triggerValue == "1" and varValue == "Morgon") or (triggerDoor == "1" or triggerValue == "1" and varValue == "Skymning") then
fibaro:debug("Sensor triggad igen, startar om timer")
fibaro:startScene(resetSceneId); -- avsluta den sovande instansen
-- xxxxxxxxxx NOT IN USE xxxxxxxxxxx
--elseif (triggerDoor == "0" and triggerValue == "0") then
-- not sure if you want this but trun off and cancel running scene
--fibaro:debug("Door closed!")
--fibaro:call(lights, "turnOff")
--fibaro:startScene(cancelSceneId);
-- xxxxxxxxxx NOT IN USE xxxxxxxxx
end
--
fibaro:abort()
elseif varValue == "Morgon" or varValue == "Skymning" then
if triggerDoor == "1" or triggerValue == "1" then
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
fibaro:call(lights, "turnOn")
fibaro:debug(" -|- Sensor aktiverad: clockTimer = " .. clockTimer.."min")
fibaro:sleep(60 * 1000 * clockTimer) -- Håller lampan tänd i xx minuter
fibaro:call(lights, "turnOff")
fibaro:debug(" -|- Inget triggat, släcker lampor")
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
end
end
Code: Select all
--[[
%% properties
%% globals
--]]
local sceneControlID = 88 --ScenID för Scen1
while (fibaro:countScenes(sceneControlID) > 0) do
fibaro:killScenes(sceneControlID); -- Avslutar den sovande scenen!
fibaro:debug("Kill: "..sceneControlID )
end;
--restart the main scene
fibaro:startScene(sceneControlID);
fibaro:debug("Startar om scen: "..sceneControlID)