Teza Skrevet 3. april 2018 Skrevet 3. april 2018 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... Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.