Badrum - hur man kan göra om man är bekväm :-)

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Hallå,
Fick ett PM wrote:Gå in i badrummet och lampan tänds till ca 30%. Så länge man är i badrummet ska rörelse reggas och inte släcka lampan. Vill man ha mer ljus och dimmrar upp med knappen ska detta läge hålla sig. Sen tänkte jag med variabler ha lägen den ska dimmras till om det är dag eller natt.
Frågan var om det går att göra, och det går utmärkt, i alla fall i LUA.

Det finns såklart ett flertal lösningar, men i detta fallet antar jag att det är en Fibaro dimmerpuck som sitter kopplad till lampan. Vidare antar jag att den rörelse sensor (PIR) som finns, har hand om själva timerfunktionen - dvs hur lång tid lampan skall vara tänd. Observera att en rörelse sensor normalt har två värden: Rörelse (=1) eller Inte Rörelse (=0), så om man har rörelse sensorn som trigger till en scen, så kommer scenen triggas vid ändring till båda lägena, alltså först när man har rörelse, och sedan en gång till när man inte haft någon rörelse under den tidsperiod som man ställt in i rörelse sensorn. Jag kan göra detta onödigt komplexet såklart med en massa variabler och "saker" - men jag försökte eftersträva en så enkel lösning som möjligt.

OBS! EnhetsID = 95 --> Min rörelse sensor, och EnhetsID = 9 --> min taklampa som styrs av fibaros dimmerpuck.

Code: Select all

--[[
%% properties
95 value 
%% globals
--]]

-- Tillåt så att bara EN instans, den första, av scenen körs...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(95, "value")) > 0 ) then
	if ( tonumber(fibaro:getValue(9, "value")) == 0 ) then
    	if ( fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
	   		fibaro:call(9, "setValue", "20")
      	else
	   		fibaro:call(9, "setValue", "30")
      	end
	end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(95, "value")) == 0 ) then
   	fibaro:call(9, "setValue", "0")
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Tänk så enkelt det kan vara om man kunde LUA ;)
Denna ska så klart in på badrummet, har en oöppnad puck liggandes.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Henrikel
Proffsmedlem
Posts: 687
Joined: 12 Dec 2013, 00:24
10
Location: Växjö
Contact:

Funkar klockrent. båda badrummen samt hall kör jag detta på nu.
Installations Elektriker
https://www.facebook.com/ramnasael
Installerar och säljer Z-wave lösningar
larron
Ny medlem
Posts: 24
Joined: 15 Oct 2013, 21:41
11
Location: Halmstad
Contact:

Hej Bamsefar och tack för bra scen. Lysande att kunna köra med två globala variabler för olika styrkor på belysningen. Saknat detta i scenen som jag använder fn

http://forum.fibaro.com/viewtopic.php?t ... s&start=30

Men...skulle vilja lägga in en timerfunktion så att jag kan ställa in hur länge belysningen ska vara på (eftersom PIRén inte registrerar rörelse genom duschdörren). Eller är det bäst att styra det i inställningarna för PIR?

Skulle också vilja lägga in så att lampan dimrar ut från inställt värde när rörelse upphört och släcks därefter.

Har du lust att hjälpa till med detta? Inte riktigt där ännu med LUA kunskaperna ;-)
Fibaro Home Center 2 with door/window sensors and motion sensors, also some D-Link 932L cams. LUA-Newbie...
Henrikel
Proffsmedlem
Posts: 687
Joined: 12 Dec 2013, 00:24
10
Location: Växjö
Contact:

Om du har en fibaro motion sensor ändrar du tiden under parameter 6, du anger antal s den ska vara tänd, sen dimmas den ner till 0. Tänk på att väcka enheten med 3 klick så den får de nya värdena direkt.
Installations Elektriker
https://www.facebook.com/ramnasael
Installerar och säljer Z-wave lösningar
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Testade denna scen och funkar perfekt

men jag skulle vilja att lampan fortsätter att vara på om man har tryckt på knappen
som det är nu så släcks den efter inställd tid på ir´n :roll: :roll:

--[[
%% properties
148 value
%% globals
--]]

-- Avsluta tidigare scener som körs, så att bara den senaste är aktiv...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(148, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(79, "value")) == 0 ) then
if ( fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
fibaro:call(79, "setValue", "20")
else
fibaro:call(79, "setValue", "30")
end
end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(148, "value")) == 0 ) then
fibaro:call(79, "setValue", "0")
end
Fibaro fantastic
Aktuell HC2 Version: 4.520
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Zorro: Det är inte riktigt lika lätt som det kanske låter. Det beror på flera saker, och jag behöver vet lite mera helt enkelt. Som om rörelsesensorn startar, och då tänds det, om någon sedan rör vid strömbrytare så skall släckning alltså inte ske? Eller hur menar du? För då kommer frågan bli, rätt snart, hur man bestämmer att någon tryckt på strömbrytaren. Det kanske man kan fånga på något sätt, men jag har inte tänkt på det tidigare... Så exakt hur tänker du?
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
larron
Ny medlem
Posts: 24
Joined: 15 Oct 2013, 21:41
11
Location: Halmstad
Contact:

Hej. Försökte att komplettera scenen med ytterligare ett "setValue" i syfte att få en viss styrka på lamporna skymning och kväll, ytterligare en lägre styrka på natten och annan styrka övrig tid - funkar dock inte.

Kan du bistå Bamsefar? Skulle uppskattas.
Kod och felmeddelande enligt nedan:
--[[
%% autostart
%% properties
152 value
%% globals
--]]

-- Avsluta tidigare scener som körs, så att bara den senaste är aktiv...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(152, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(24, "value")) == 0 ) then
if ( fibaro:getGlobalValue("TimeOfDay") == "Skymning" ) or
( fibaro:getGlobalValue("TimeOfDay") == "Kvall" ) then
fibaro:call(23, "setValue", "40")
or ( fibaro:getGlobalValue("TimeOfDay") == "Natt" ) then
fibaro:call(23, "setValue", "20")
else
fibaro:call(23, "setValue", "75")
end
end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(152, "value")) == 0 ) then
fibaro:call(24, "setValue", "0")
end

ERROR
[ERROR] 19:13:19: line 18: unexpected symbol near 'or'
Fibaro Home Center 2 with door/window sensors and motion sensors, also some D-Link 932L cams. LUA-Newbie...
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Jag tänkte så här:
När jag går in i rummet så tänds belysningen och körs enl. din scen och och lampan tänds till tex 30% som jag själv
ställt in i scenen.
Men om jag tycker att det är för mörkt eller ljust så trycker jag på strömbrytaren och kör upp eller ned till önskad nivå
och då ska inte tiden släcka lampan utan det får jag göra själv med brytaren.
Och om jag inte rör brytaren så går tiden ut som jag ställt i scenen och lampan slocknar. :mrgreen: :mrgreen:

Låter ju inte så oerhört svårt och få till tycker jag som inte kan ett skit än om lua kodning :oops: :oops: :lol: :lol:
Fibaro fantastic
Aktuell HC2 Version: 4.520
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

larron wrote:Hej. Försökte att komplettera scenen med ytterligare ett "setValue" i syfte att få en viss styrka på lamporna skymning och kväll, ytterligare en lägre styrka på natten och annan styrka övrig tid - funkar dock inte.

Kan du bistå Bamsefar? Skulle uppskattas.
Kod och felmeddelande enligt nedan:

Koden borttagen....

[ERROR] 19:13:19: line 18: unexpected symbol near 'or'
I grund och botten gillar jag när ni försöker, alla försök är bra försök - annars lär man sig inte (dvs det är bra (?) att springa in i väggen?).

Det som blir tankevurpa är när du gör "OR" - som felmeddelande bevisligen hänger ut. Det är inte riktigt så man skriver helt enkelt. Jag föreslår något i denna stil, där jag bytt OR till ELSEIF, och ändrat på en parantes (jag har dock inte provkört koden, så reservation för felhack mitt i natten):

Code: Select all

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

-- Bara första instansen får köras...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(152, "value")) > 0 ) then
	if ( tonumber(fibaro:getValue(24, "value")) == 0 ) then
		if ( fibaro:getGlobalValue("TimeOfDay") == "Skymning" or
		     fibaro:getGlobalValue("TimeOfDay") == "Kvall" ) then
			fibaro:call(23, "setValue", "40")
		elseif ( fibaro:getGlobalValue("TimeOfDay") == "Natt" ) then
			fibaro:call(23, "setValue", "20")
		else
			fibaro:call(23, "setValue", "75")
		end
	end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(152, "value")) == 0 ) then
	fibaro:call(24, "setValue", "0")
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

zorro: Det enda du då behöver är att komplettera scenen med en test som jämför dimmerns inställda värde med det värde som ställs in när rörelse sensorn slår på, om värdet inte överensstämmer, så "antar" (ur antagande föds strul) man att någon rört vid strömbrytaren och då skall vi alltså inte släcka... Kanske något i denna stil (inte heller testat, bara fritt skrivet i "luften"):

Code: Select all

--[[
%% properties
95 value
%% globals
--]]

-- Tillåt så att bara EN instans, den första, av scenen körs...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(95, "value")) > 0 ) then
	if ( tonumber(fibaro:getValue(9, "value")) == 0 ) then
		if ( fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
			fibaro:call(9, "setValue", "20")
		else
			fibaro:call(9, "setValue", "30")
		end
	end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(95, "value")) == 0 ) then
	if ( ( tonumber(fibaro:getValue(9, "value")) == 30 and fibaro:getGlobalValue("Dagsljus") ~= "Mörkt" ) or
	     ( tonumber(fibaro:getValue(9, "value")) == 20 and fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) ) then
		fibaro:call(9, "setValue", "0")
	end
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

När jag testade din scen så fick jag detta rakt upp i ansiktet :lol: :lol:

[ERROR] 09:21:05: line 25: ')' expected (to close '(' at line 24) near 'then'


--[[
%% properties
148 value
%% globals
--]]

-- Tillåt så att bara EN instans, den första, av scenen körs...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30% alternativt behåll redan
-- existerande dimmer nivå
if ( tonumber(fibaro:getValue(148, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(79, "value")) == 0 ) then
if ( fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
fibaro:call(79, "setValue", "20")
else
fibaro:call(79, "setValue", "30")
end
end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(148, "value")) == 0 ) then
if ( ( tonumber(fibaro:getValue(79, "value")) == 30 and fibaro:getGlobalValue("Dagsljus") ~= "Mörkt" ) or
( tonumber(fibaro:getValue(79, "value")) == 20 and fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
fibaro:call(79, "setValue", "0")
end
end
Fibaro fantastic
Aktuell HC2 Version: 4.520
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Hittade detta

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(148, "value")) == 0 ) then
if ( ( tonumber(fibaro:getValue(79, "value")) == 30 and fibaro:getGlobalValue("Dagsljus") ~= "Mörkt" ) or


och ändrade till

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(148, "value")) == 0 ) then
if ( tonumber(fibaro:getValue(79, "value")) == 30 and fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) or

så nu får jag inget error när jag kör scenen men om jag inte rör knappen så slocknar inte lampan efter inställd tid
Fibaro fantastic
Aktuell HC2 Version: 4.520
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Zorro om du ändrar tillbaka testet till ~= så kommer det nog att fungera.
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Ok testar :oops: :oops:
Fibaro fantastic
Aktuell HC2 Version: 4.520
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Lysande Bamsefar funkar perfekt :oops: :oops:

Om jag nu bara skulle vilja köra denna scen endast när det är mörkt
alltså lampan ska inte lysa när det är ljust förutom om man trycker på strömbrytaren förstås
hur se scenen ut då. :mrgreen: :mrgreen:
Fibaro fantastic
Aktuell HC2 Version: 4.520
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Jag vet inte om detta lirar som du tänkt, snabbhack som vanligt (med andra ord, reservation för att jag hackat fel):

Code: Select all

--[[
%% properties
95 value
%% globals
--]]

-- Tillåt så att bara EN instans, den första, av scenen körs...
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 30%, enbart när det är Mörkt
if ( tonumber(fibaro:getValue(95, "value")) > 0 ) then
	if ( tonumber(fibaro:getValue(9, "value")) == 0 and
	     fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
		fibaro:call(9, "setValue", "20")
	end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(95, "value")) == 0 and
     tonumber(fibaro:getValue(9, "value")) == 20 and
     fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
	fibaro:call(9, "setValue", "0")
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Tack
Det verkar funka lampan tändes ej just nu men det är ju ljust :mrgreen: :mrgreen:
får se till kvällen vad som händer
återkommer med resultatet :mrgreen:
Tack för all hjälp så här långt Bamsefar
Fibaro fantastic
Aktuell HC2 Version: 4.520
larron
Ny medlem
Posts: 24
Joined: 15 Oct 2013, 21:41
11
Location: Halmstad
Contact:

Tack Bamsefar - uppskattar verkligen att du stöttar när man kör fast. Kul som f*n att läsa sig detta men också rejält jobbigt när man kör fast.

Återstår nu att få fart på schemaläggaren som ballade ur när 4.031 installerades. Samtliga belysningsscenen hänger på ToD funktionen så smått jobbigt fn och WA minskar för varje dygn ;-)
Fibaro Home Center 2 with door/window sensors and motion sensors, also some D-Link 932L cams. LUA-Newbie...
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Hej igen nu är det mörkt här men lampan tänds inte
Vad är det som triggar Mörkt resp Ljust i scenen
jag har ju en variabel som heter Dagljus men hur triggas den :oops: :oops:

--[[
%% properties
148 value
%% globals
--]]

-- Tillåt så att bara EN instans, den första, av scenen körs...
--Lampan ska endast lysa när det är mörkt
if ( fibaro:countScenes() > 1 ) then fibaro:abort() end

-- Triggning vid rörelse, tänd lampa till 40%, enbart när det är Mörkt
if ( tonumber(fibaro:getValue(148, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(79, "value")) == 0 and
fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
fibaro:call(79, "setValue", "40")
end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(148, "value")) == 0 and
tonumber(fibaro:getValue(79, "value")) == 40 and
fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
fibaro:call(79, "setValue", "0")
end
Fibaro fantastic
Aktuell HC2 Version: 4.520
Post Reply