Jump to content
  • Sign Up
Støtt hjemmeautomasjon! 🥇🥈🥉

Recommended Posts

Posted

For å kunne lage gode scener for styring av lys, varme og annet, vil jeg tro man må ha en del variabler som kan fortelle systemet hvordan omgivelsene er.

 

Har prøvd å lage en scene som setter følgende variabler:

 

Soltid, med verdiene: Soloppgang, Solnedgang

Ukedag, med verdiene: Mandag, Tirsdag, Onsdag, Torsdag, Fredag, Lørdag, Søndag

Maaned, med verdiene: Januar, Februar, Mars, April, Mai, Juni...   ...Desember

Leggetid, med verdiene: Sover, Våken

 

LUA koden for disse 4, er i bunnen av denne posten.

(Har ikke fått sjekket om den fungerer enda.)

 

Min neste utfordring er en variabel som heter årstid, med verdiene: Vår, Sommer, Høst, Vinter.

 

Kriteriene for denne variabelen skal være:

 

Årstid vår:
Den delen av året da normal døgnmiddeltemperatur for det aktuelle stedet er mellom 0 og 10 °C og stigende.
Fra ca. 5. februar til ca. 6. mai. (midtpunkt=vårjevndøgn=ca. 21. mars)


Årstid sommer:
Den delen av året da døgnmiddeltemperaturen er over 10 ° C
Fra ca. 7. mai til ca. 6. august. (midtpunkt=sommersolverv=ca. 21. juni)


Årstid høst:
Den delen av året da normal døgnmiddeltemperatur for det aktuelle stedet er mellom 0 og 10 °C og synkende.
Fra ca. 7. august til ca. 16. november. (midtpunkt=høstjevndøgn=ca. 23. september)


Årstid vinter:
Den delen av året da døgnmiddeltemperaturen er under 0 ° C
Fra ca. 17. november til ca. 5. februar. (midtpunkt=vintersolverv=ca. 22. desember)

 

Noen gode tips for styring av variabelen årstid?

 

------

 

Her er koden for de første 4 variablene:

 

--[[
%% autostart
%% properties
%% globals
--]]



-- Opprett Variabelen: Soltid
-- med verdiene: Soloppgang, Solnedgang

-- Opprett variabelen: Ukedag
-- med verdiene: Mandag, Tirsdag, Onsdag, Torsdag, Fredag, Lørdag, Søndag

-- Opprett variabelen: Maaned
-- med verdiene: Januar, Februar, Mars, April, Mai, Juni...   ...Desember

-- Opprett variabelen: Leggetid
-- med verdiene: Sover, Våken



local sourceTrigger = fibaro:getSourceTrigger(); -- Hva har startet scenen?
 

if (sourceTrigger["type"] == "autostart") then; -- Hvis scenen er startet med autostart:
	while true do; -- Så lenge scenen er startet med autostart, kjør:


		local TidsTabell = os.date("*t");

			-- TidsTabell vil genereres og se ut som følger:

			-- year		2018
			-- month	01-12
			-- day		01-31
			-- hour		00-23
			-- min		00-59
			-- sec		00-59
			-- isdst	et boolean, "true" hvis sommertid, ellers "false"

		local Tid = (string.format("%02d", TidsTabell.hour) .. ":" .. string.format("%02d", TidsTabell.min)); -- "%02d" 0 padding, 2 heltall, d for desimaltall
		local Dag = tonumber(os.date("%w"));
		local Mnd = tonumber(os.date("%m"));
		local Soloppgang = fibaro:getValue(1, "sunriseHour"); -- Henter tidspunkt for soloppgang
		local Solnedgang = fibaro:getValue(1, "sunsetHour"); -- Henter tidspunkt for solnedgang
 
		local startSource = fibaro:getSourceTrigger();



		-- Setter variabel Soltid:    

		if (Tid == Soloppgang) then; -- Hvis tid er lik tiden for soloppgang, da
			fibaro:setGlobal("Soltid","Soloppgang"); -- settes variabelen Soltid til Soloppgang
		end;
	
		if (Tid == Solnedgang) then; -- Hvis tid er lik tiden for solnedgang, da
			fibaro:setGlobal("Soltid","Solnedgang"); -- settes variabelen Soltid til Solnedgang
		end;



		-- Setter variabel Ukedag:

		if(Dag == 0 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Søndag");
			fibaro:call(2, "sendDefinedEmailNotification", "15"); -- Beskjeden "Variabel Ukedag er endret", sendes på epost
		  elseif(Dag == 1 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Mandag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		  elseif(Dag == 2 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Tirsdag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		  elseif(Dag == 3 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Onsdag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		  elseif(Dag == 4 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Torsdag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		  elseif(Dag == 5 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Fredag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		  elseif(Dag == 6 and Tid == "00:00") then; 
		  	fibaro:setGlobal("Ukedag", "Lørdag");
			fibaro:call(2, "sendDefinedEmailNotification", "15");
		end;


		-- Setter variabel Maaned

		if(Mnd == 01 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Januar");
			fibaro:call(2, "sendDefinedEmailNotification", "123"); -- Beskjeden "Variabel Måned er endret", sendes på epost
		  elseif(Mnd == 02 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Februar");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 03 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Mars");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 04 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "April");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 05 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Mai");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 06 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Juni");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 07 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Juli");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 08 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "August");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 09 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "September");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 10 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Oktober");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 11 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
	  		fibaro:setGlobal("Maaned", "November");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		  elseif(Mnd == 12 and string.format("%02d", TidsTabell.day == "01") and Tid == "00:00") then; 
		  	fibaro:setGlobal("Maaned", "Desember");
			fibaro:call(2, "sendDefinedEmailNotification", "123");
		end;



		-- Setter variabel Leggetid:

		if (Tid == "23:30") then; 
			fibaro:setGlobal("Leggetid","Sover"); -- settes variabelen Leggetid til Sover
		end;
		if (Tid == "08:00") then; 
			fibaro:setGlobal("Leggetid","Våken"); -- settes variabelen Leggetid til Våken
		end;



	fibaro:sleep(60*1000); -- Vent 60 sekunder før programmet kjører igjen
end;
else;
	-- Hvis scenen er startet manuelt:
	local Soltid = fibaro:getGlobalValue("Soltid"); 
	if (Soltid == "Solnedgang") then;
		fibaro:setGlobal("Soltid","Soloppgang")
	else;
		fibaro:setGlobal("Soltid","Solnedgang")
	end;
end;

 

Mitt første forsøk på et brukende LUA program.

Føler det er en del repetisjoner der som burde vært unngått...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.