Lights and Motion scene

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Updated 20150226
-- SCENE SCENARIO
-- You wake up and need to go up to bathroom during the night
-- Sensor is triggered in bathroom, lights will only dim to 10%
-- and turnOff after "endTimer" has stop.
-- Its saturday night and you have freinds at home. Your "TimeOfDay"
-- variable have already been set to "Night". Now you dont want to
-- light up the bathroom to only 10%. So if any of the "lights2Check"
-- is on, it will set dim value to 100% and turnOff after "endTimer"
-- has stop.
-- If sensor is triggered again during the "endTimer" period,
-- the "endTimer" period will start over.

Code: Select all

--[[
%% autostart
%% properties
221 value
%% globals
--]]

-- REFERENCE
-- forum.fibaro.com, lua.org, domotique-fibaro.fr,www.gronahus.se 
-- Thanks to Richo, stevenvd, Steven for good LUA functions code.

-- SCENE SCENARIO
-- You wake up and need to go up to bathroom during the night
-- Sensor is triggered in bathroom, lights will only dim to 10%
-- and turnOff after "endTimer" has stop.
-- Its saturday night and you have freinds at home. Your "TimeOfDay"
-- variable have already been set to "Night". Now you dont want to
-- light up the bathroom to only 10%. So if any of the "lights2Check" 
-- is on, it will set dim value to 100% and turnOff after "endTimer" 
-- has stop.
-- If sensor is triggered again during the "endTimer" period, 
-- the "endTimer" period will start over.



-- FEATURES
-- Improvements
-- 0.0.4 - Change in checkLights function. from == "1" to ~= "0"


-------------------- USER SETTINGS -----------------------
lights2Check = {339,341};	-- If any of those lights is ON then set dimmer value to 100%
lights = {343};				-- LightId
sensor = 221				-- SensorId
nightdimValue = "10"  		-- Dimmer value to set during night
endTimer = 30 				-- How long to keep lights on, in seconds
varName = "TimeOfDay" 		-- Variable name
varNightvalue = "Natt"  	-- 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);

User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Denna måste prövas. Tackar för bidraget.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Kan varmt rekommendera denna, funkar superbra, den ersatte rafal.m:s autolight.
Tackar Jompa
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
KristianO
Medlem
Posts: 461
Joined: 10 Mar 2014, 09:50
10

Har en rörelsesensor i badrummet och undrar om denna scen kan hjälpa mig.

Har 2 lampor i badrummet, en dimbar i taket och en spegellampa.

Tanken är att om jag är i badrummet under dagtid/kväll så tänds båda lamporna till 100% resp "ON".

Under natttid så tänds bara taket till 20%.

Har kollat på lights Automation enligt nedan men får det inte att funka.
http://forum.fibaro.com/index.php?showtopic=13809

Gillar iden att ha en timer per enhet.
Henrikel
Proffsmedlem
Posts: 687
Joined: 12 Dec 2013, 00:24
10
Location: Växjö
Contact:

viewtopic.php?f=21&t=5043

Den kan nog lösa det. Lägg in variabel dag och natt

KristianO wrote:Har en rörelsesensor i badrummet och undrar om denna scen kan hjälpa mig.

Har 2 lampor i badrummet, en dimbar i taket och en spegellampa.

Tanken är att om jag är i badrummet under dagtid/kväll så tänds båda lamporna till 100% resp "ON".

Under natttid så tänds bara taket till 20%.

Har kollat på lights Automation enligt nedan men får det inte att funka.
http://forum.fibaro.com/index.php?showtopic=13809

Gillar iden att ha en timer per enhet.
Installations Elektriker
https://www.facebook.com/ramnasael
Installerar och säljer Z-wave lösningar
KristianO
Medlem
Posts: 461
Joined: 10 Mar 2014, 09:50
10

Testade ett hopkok av lite och hoppas få till en timer när rörelse upphör. Då man inte alltid "hoppar" runt i badrummet. Något feltänk?

Code: Select all

--[[                             
%% properties
100 value 
%% globals
--]]
local sensorId = 100
local lightId1 = 34 
local lightId2 = 113
local hour = tonumber(os.date("%H")) --This will get the current hour of the day 
local czas = os.time()
local time = 300

if fibaro:countScenes() > 1 or tonumber(fibaro:getValue(sensorId, "value")) == 0 then 
  fibaro:abort()
end

 if ( tonumber(fibaro:getValue(lightId2, "value")) == 0  and
        tonumber(fibaro:getValue(lightId1, "value")) == 0 ) then
    
        if (hour<=6 or hour>=22) then 
          fibaro:call(lightId1, 'setValue', '30')
        else
          fibaro:call(lightId2, 'turnOn')
          fibaro:call(lightId1, 'setValue', '100')
        end
 end

    while true do
        if os.time() - czas > time then --change to set time without movement after light will turn off
          fibaro:call(lightId2, "turnOff");
          fibaro:call(lightId1, 'setValue', '0')
          fibaro:abort() 
          break
        end

		if tonumber(fibaro:getValue(sensorId, "value")) > 0 then
    		czas = os.time()
            fibaro:debug(czas)
     	end
 
     fibaro:sleep(500)
   
     end
Henrikel
Proffsmedlem
Posts: 687
Joined: 12 Dec 2013, 00:24
10
Location: Växjö
Contact:

om du har fibaros motion sensor så kan du enkelt ställa tiden i dess inställningar.
Installations Elektriker
https://www.facebook.com/ramnasael
Installerar och säljer Z-wave lösningar
SirMaggot
Medlem
Posts: 441
Joined: 18 Aug 2013, 10:36
10

Tack för en bra scen.

Om man låter lampan tändas av en rörelsesensor på väg in och släcker med knappen på väg ut,
måste inte timern gå klart då innan lampan tänds av rörelse igen?
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Timern stannar vid manuell avstängning


Skickat från min iPhone med Tapatalk
SirMaggot
Medlem
Posts: 441
Joined: 18 Aug 2013, 10:36
10

jompa68 wrote:Timern stannar vid manuell avstängning
Vackert :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Skulle vara fint att få in "Aborted by user" i loggen när man släcker manuellt :)
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
The Cat
Medlem
Posts: 48
Joined: 10 Jan 2014, 12:56
10
Location: Bästkusten

Behöver hjälp med detta då jag verkligen är en nybörjare på detta.

Har kopierat koden till min HC2.
Ändrat ID på min Fibaro Dimmer 2.
Ändrat ID på min Fibaro Motion Sensor.

Då jag kör scenen manuellt fungerar perfekt, men när jag utlöser sensorn blinkar den bara till utan att tända lampan.
Har jag missat något eller är jag bara trögtänkt?

Tack så länge...
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Har du bockat i aktiv scen? Om ja pröva detta.
Vänta i ca 5 minuter innan du rör dig framför sensorn efter att du haft sista rörelsen framför sensorn sen prövar du igen. Kan vara någon parameter du behöver fixa på sensorn.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
The Cat
Medlem
Posts: 48
Joined: 10 Jan 2014, 12:56
10
Location: Bästkusten

sonnyboy wrote:Har du bockat i aktiv scen? Om ja pröva detta.
Vänta i ca 5 minuter innan du rör dig framför sensorn efter att du haft sista rörelsen framför sensorn sen prövar du igen. Kan vara någon parameter du behöver fixa på sensorn.
Jodå. Aktiv scen ibockad. Har provat alla möjliga varianter. 30 sekunder. 3 minuter. 15 minuter. Samma resultat. Parametrarna i min sensor är alla på default. Inte ändrat någonting där.

Mycket frustrerande.
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Starta om hc:n och pröva
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
The Cat
Medlem
Posts: 48
Joined: 10 Jan 2014, 12:56
10
Location: Bästkusten

sonnyboy wrote:Starta om hc:n och pröva
Provade det med samma resultat.

Provade även att göra en enkel blockscen och då tänds lampan.

Image
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Ser nu att du har en dimmer 2, den kanske ska hnteras på ett annat sätt, pröva att ändra till 99 istället för 100 på rad 92,

Code: Select all

fibaro:call(lightItems, "setValue", "99")
Maxvärdet på en dimmer var 99 när jag körde Razberry, annars så är mina tips slut
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
The Cat
Medlem
Posts: 48
Joined: 10 Jan 2014, 12:56
10
Location: Bästkusten

sonnyboy wrote:Ser nu att du har en dimmer 2, den kanske ska hnteras på ett annat sätt, pröva att ändra till 99 istället för 100 på rad 92,

Code: Select all

fibaro:call(lightItems, "setValue", "99")
Maxvärdet på en dimmer var 99 när jag körde Razberry, annars så är mina tips slut
Jag tackar för all din hjälp, men tyvärr hjälpte det inte. Bara att gilla läget och leta andra script.
SirMaggot
Medlem
Posts: 441
Joined: 18 Aug 2013, 10:36
10

User avatar
Bamsefar
Z-Wave Kung
Posts: 1230
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Kanske är det något som är annorlunda med Fibaro Dimmer 2 firmware - det är garanterat inte samma som i Fibaro Dimmer 1, dvs den versionen som koden antagligen är skriven för?
Testar Home Assistant på Raspberry Pi4B - nice :mrgreen:
Post Reply