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

zorro: Är det möjligen så att du inte har någon scen som styr den globala variabeln "Dagsljus"? Jag använder följande scen, som förvisso har ett extra läge (Skymning...) och använder ytterligare några globala variabler:

Code: Select all

--[[
%% autostart
%% properties
104 value
116 value
%% globals
--]]

-- Bara en aktiv instans av denna scen...
if (fibaro:countScenes() > 1) then fibaro:abort() end

-- 104 - Ljussensor vardagsrum
-- 116 - Ljussensor arbetsrum

local Dusk_LUX = tonumber(fibaro:getGlobalValue("LUX_Dusk"))
local Dark_LUX = tonumber(fibaro:getGlobalValue("LUX_Dark"))

-- Grundprincip: 
-- 	Om mörkare än Dark_LUX så är det mörkt
-- 	Om ljusare än Dusk_LUX så är det ljust
-- 	Om mörkare än Dusk_LUX, men ljusare än Dark_LUX, så är det skymning - dvs mitt imellan mörkt och ljust

if	(
	tonumber(fibaro:getValue(104, "value")) < Dark_LUX and
	tonumber(fibaro:getValue(116, "value")) < Dark_LUX
	)
then
	if ( fibaro:getGlobalValue("Dagsljus") ~= "Mörkt" )
	then
		fibaro:setGlobal("Dagsljus", "Mörkt")
		fibaro:debug("Nu vart det Mörkt!")
		fibaro:debug("Vardagsrum :"..fibaro:getValue(104, "value"))
		fibaro:debug("Arbetsrum  :"..fibaro:getValue(116, "value"))
	end
elseif	(
	tonumber(fibaro:getValue(104, "value")) > Dusk_LUX and
	tonumber(fibaro:getValue(116, "value")) > Dusk_LUX
	)
then
	if ( fibaro:getGlobalValue("Dagsljus") ~= "Ljust" )
	then
		fibaro:setGlobal("Dagsljus", "Ljust")
		fibaro:debug("Nu vart det Ljust!")
		fibaro:debug("Vardagsrum :"..fibaro:getValue(104, "value"))
		fibaro:debug("Arbetsrum  :"..fibaro:getValue(116, "value"))
	end
elseif	( fibaro:getGlobalValue("Dagsljus") ~= "Skymning" )
then
	fibaro:setGlobal("Dagsljus", "Skymning")
	fibaro:debug("Nu vart det Skymning!")
	fibaro:debug("Vardagsrum :"..fibaro:getValue(104, "value"))
	fibaro:debug("Arbetsrum  :"..fibaro:getValue(116, "value"))
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

Nja jag har nog ingen scen som talar om om det är ljust eller mörkt :?: :?:
ska försöka "bena" ut det imorron. :oops: :oops:
Fibaro fantastic
Aktuell HC2 Version: 4.520
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Med risk att bli idiotförklarad så har jag försökt lite med scener för att försöka få igång min lampa
Variabelpanel.jpg
Variabelpanel.jpg (37.8 KiB) Viewed 50694 times
och 2 st scener
Dagljus på.jpg
Dagljus på.jpg (69.64 KiB) Viewed 50694 times
Dagljus av.jpg
Dagljus av.jpg (65.48 KiB) Viewed 50694 times

Kan detta funka med Bamsefars toalettscen tro :oops: :oops:
Fibaro fantastic
Aktuell HC2 Version: 4.520
andarv
Medlem
Posts: 82
Joined: 15 Feb 2014, 00:17
10

Uppdaterat, nu svarade jag lite förfort, du kanske inte vill ha en lux scen som sätter variabeln???
Isåfall skall du nog bara kontrollera namnet på variabeln, stora/små bokstäver osv sen borde det fungera.

Jag har inte följt konversationen i sin helhet.
Men spontant, du har skapat en globalvariabel (men på bilden ser den ut att heta fel? borde vara Dagsljus inte Dagljus men jag kan ha fel) Den skall ha två värden Mörkt och Ljust (beroende på vad det står i din toalettscen).
Sen räcker det med en scen för att styra Globalavariabeln, tror du kan använda den som finns nedan (korrektur läs den så att jag har fyllt i dina världen variabeln rätt) och uppdatera med rätt idn.

Code: Select all

--[[
 %% properties
 xxx value
 %% globals
 --]]

 --xxx = Lux toalett

 local trigger = fibaro:getSourceTrigger()
 local triggeredDeviceId = trigger["deviceID"] --ID of device that were triggered
 local triggerPropertyName = trigger["propertyName"] --What attribute/property changed
 local triggerPropertyValue = tonumber(fibaro:getValue(triggeredDeviceId,triggerPropertyName))

 local lightOutside = fibaro:getGlobalValue("Dagsljus") --Hämta värde på; global variabel 
 local luxBrightBoundary = 50 --Under detta värde anser vi det vara mörkt

 if ((triggerPropertyValue < luxBrightBoundary) and (lightOutside ~= "Mörkt"))
   then --Sätter att det är mörkt ute
   fibaro:setGlobal("Dagsljus", "Mörkt")
   fibaro:debug("Mörkt")
 elseif ((triggerPropertyValue >= luxBrightBoundary) and (lightOutside ~= "Ljust"))
   then --Sätter att det är ljust ute
   fibaro:setGlobal("Dagsljus", "Ljust")
   fibaro:debug("Ljust")
 end
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Hej och tack
ok stavfel inte lätt när man är dyslektiker :mrgreen: :mrgreen:
nej jag vill inte ha lux styrning utan vill använda solens upp/nedgång
Fibaro fantastic
Aktuell HC2 Version: 4.520
andarv
Medlem
Posts: 82
Joined: 15 Feb 2014, 00:17
10

Då får vi hoppas att den fungerar nu.
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Nej tyvärr funkar inte lampan tänds inte :?: :?:
Fibaro fantastic
Aktuell HC2 Version: 4.520
andarv
Medlem
Posts: 82
Joined: 15 Feb 2014, 00:17
10

Ok.
Några frågor:

Har variabeln satts till Mörkt?

Om det har fungerat tidigare, vilket det verkar som baserat på eran kommunikation så borde felet ligga någonstans bland variablerna.
Och när jag tittar på din bild av skapade variabler så borde det vara enligt följande
Global variabel, namn "Dagsljus" värde 1 "Ljust" värde 2 "Mörkt" (spelar eg ingen roll vilket som är 1 resp 2).

Bamsefar En fråga av ren nyfikenhet.
du har skrivit koden som:
if ( tonumber(fibaro:getValue(148, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(79, "value")) == 0 and
fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then

Jag har skrivit all min kod som:
if(
tonumber(fibaro:getValue(148, "value")) > 0 and
tonumber(fibaro:getValue(79, "value")) == 0 and
fibaro:getGlobalValue("Dagsljus") == "Mörkt" )

Finns det någon estetisk eller praktisk anledning till att du väljer att särskilja "triggern" från de övriga argumenten?
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

andarv wrote: Bamsefar En fråga av ren nyfikenhet.
du har skrivit koden som:

Code: Select all

if ( tonumber(fibaro:getValue(148, "value")) > 0 ) then
 if ( tonumber(fibaro:getValue(79, "value")) == 0 and
 fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) then
Jag har skrivit all min kod som:

Code: Select all

if(
   tonumber(fibaro:getValue(148, "value")) > 0 and
   tonumber(fibaro:getValue(79, "value")) == 0 and
   fibaro:getGlobalValue("Dagsljus") == "Mörkt" ) 
Finns det någon estetisk eller praktisk anledning till att du väljer att särskilja "triggern" från de övriga argumenten?
Japp - det är stor skillnad :-) Faktiskt.

I mitt fall, så krävs det att 148 alltid är större än 0, men först då kommer man in i nästa if struktur. Det kanske inte spelar någon roll i just denna scen, MEN det kan väl göra det om man gör en ELSE i den inre (senare) if strukturen. Jag separerar alltid nivåerna åt, och i detta fallet är det så eftersom min egna kod (som stod som exempel för ovanstående) har just en ELSE sats, men den ELSE satsen skall bara utföras om 148>0 och inte om hela if strukturen kombineras ihop som i ditt exempel.

Så nja inte exakt i detta exempel, men väl i verkligheten i min egna variant av samma scen.
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 - om du använder mitt kodexempel så har du döpt variabeln fel, precis som andarv nämner. Dina blockscener ser iofs rätt ut - men som sagt, variabelnamnet?
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

jag har ändrat namnen enl. följande
variabelpanel3.jpg
variabelpanel3.jpg (37.05 KiB) Viewed 50526 times
scenen jag använder är:
--[[
%% 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
andarv
Medlem
Posts: 82
Joined: 15 Feb 2014, 00:17
10

Och vad står variabeln i nu?

Du kan "snabba" på processen genom att markera den variabeln du vill skall vara aktiv och därefter spara, då kan du välja Mörkt för att därefter testa ljusscenen genom att gå in i din förhoppningsvis belysta toalett.
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Jag testade och köra en RUN på denna scen
då funkade allt perfekt
antagligen så har jag strulat till det själv dels med felstavning+att jag troligen kört scenen för Dagsljus=Ljust manuellt
men det är vad jag tror är orsaken.
Som sagt just nu så fungerar det som jag vill
Jag vill oxå tacka alla inblandade för suverän hjälp :mrgreen: :mrgreen:
återkommer imorron när det blir ljust så får vi se om lampan förblir släckt då
Nu drar jag och jobbar
God natt alla LUA experter :D :D
dagsljus av2.jpg
dagsljus av2.jpg (76.52 KiB) Viewed 50442 times
Fibaro fantastic
Aktuell HC2 Version: 4.520
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Uppdatering
FUNKAR PERFEKT :lol: :lol:
Fibaro fantastic
Aktuell HC2 Version: 4.520
sam
Ny medlem
Posts: 15
Joined: 16 Oct 2014, 22:39
10

Det är exakt det här som jag är ute efter till mitt dressingroom. Ljuset tänds till en viss nivå dagtid och en betydligt mer dimmas nivå nattetid. Larron - fick du ordning på din scen? Skulle gärna ta del av hela scriptet.
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:
--[[
%% 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'
larron
Ny medlem
Posts: 24
Joined: 15 Oct 2013, 21:41
11
Location: Halmstad
Contact:

Hej Sam.
Fick bra ordning på det och rullar på prima enligt nedan. Hälsningar Larron
--[[
%% autostart
%% properties
165 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 75% morgon, skymning eller kväll eller 5% på natten alternativt behåll redan existerande dimmer nivå
if ( tonumber(fibaro:getValue(165, "value")) > 0 ) then
if ( tonumber(fibaro:getValue(23, "value")) == 0 ) then
if ( fibaro:getGlobalValue("TimeOfDay") == "Morgon" or fibaro:getGlobalValue("TimeOfDay") == "Skymning" or fibaro:getGlobalValue("TimeOfDay") == "Kvall" ) then
fibaro:call(23, "setValue", "75")
elseif ( fibaro:getGlobalValue("TimeOfDay") == "Natt" ) then
fibaro:call(23, "setValue", "5")
end
end
end

-- Triggning när rörelse upphört
if ( tonumber(fibaro:getValue(165, "value")) == 0 ) then
fibaro:call(23, "setValue", "0")
end
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

Hu ändrar jag i denna scen för att använda en Fibaro switch puck scenen är väl skriven för dimmer puck
ändrade på två ställen i scenen enl. nedan men inget händer varken tänder eller släcker
scenen jag använder är:
--[[
%% 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")Testade och ändra setValue till turnOn
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")Testade och ändra setValue till turnOff
end

Så att scenen blev som följer
--[[
%% 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, "turnOn");
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, "turnOff");
end
Antagligen är jag helt ute och "cycklar" :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

Plocka bort semikolon?
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Får fel
[ERROR] 22:14:55: line 12: attempt to compare number with nil
Fibaro fantastic
Aktuell HC2 Version: 4.520
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Vad är deviceID = 148 för något device, tillverkare och model?
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
Post Reply