…
Viele Dank,
LG Daniel
…
Viele Dank,
LG Daniel
Hallo
habe versehentlich eine test code oben Gepostet.
Nehmt diesen.
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '-10' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00' --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn die Sonne unter geht.
---------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
---------------------------------------------------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")
debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")
debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
debug('darkgreen',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
function rollershutter()
local version = '2.0';
local sunriseHour = fibaro:getValue(1,'sunriseHour');
local sunsetHour = fibaro:getValue(1,'sunsetHour');
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---################# Sonnenaufgang !! ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and (os.date("%H:%M", os.time()) == VersetzteSonnenaufgang or os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'open');
fibaro:call(100, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------------
---################ Sonnenuntergang !! ##########################################---
-----------------------------------------------------------------------------------------
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'close');
fibaro:call(100, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
end
---#######################################################################################
setTimeout(rollershutter, 60*1000);
end
if (sourceTrigger['type'] == 'autostart') then
rollershutter();
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
debug('coral',"Es ist Tag");
else
debug('royalblue',"Es ist Nacht");
end
---###############################################################################
Hallo
Ich musste die aufgesetzte Berechnung in die Function mit einnehmen. So wie bis jetzt stimmte sie nur im DEBUG jetzt sollte se auch in die if abfrage korrekt übernommen werden.
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '-10' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00' --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn die Sonne unter geht.
---------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
debug('darkgreen',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
---------------------------------------------------------------------------------------
function rollershutter()
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
----------------------------------------------------------------------------------------
local version = '2.0';
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---################# Sonnenaufgang !! ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and (os.date("%H:%M", os.time()) == VersetzteSonnenaufgang or os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'open');
fibaro:call(100, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------------
---################ Sonnenuntergang !! ##########################################---
-----------------------------------------------------------------------------------------
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'close');
fibaro:call(100, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
end
---#######################################################################################
setTimeout(rollershutter, 60*1000);
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")
debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")
debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")
----------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
debug('coral',"Es ist Tag");
else
debug('royalblue',"Es ist Nacht");
end
---###############################################################################
if (sourceTrigger['type'] == 'autostart') then
rollershutter();
end
Moin zusammen!
Und jetzt zu meinem ursprünglichen Problem von Seite 2,3,4 und fünf, glaube ich. Die Rolladen sollen natürlich nicht zu gehen, wenn eine der Terrassentüren an einem lauen Sommerabend noch geöffnet sind, damit man sich nicht aussperrt!
Soll ja nicht langweilig werden für parip69 ?
Viele Grüße
Christian
Zum Glück gibt es dafür bereits fertigen Code in dem Thread hier…
Hallo,
@parip69 ich habe Dein Script vom 30. März 2016 um 3:17 bei mir eingebunden.
Trotzdem würden die Rollos vor “zeitFruehstensAuf” und nach dem “zeitMaxUntergang” geöffnet bzw. geschlossen werden.
Habe ich da einen Denkfehler?
Danke
cu
Karlk
Hallo Christian,
so sollte das auch mit der prüfung der offenen Türen funktionieren.
–[[
%% autostart
%% properties
%% globals
–]]
local minSonAuf = ‘-10’ – Vohrzeichen - + min. wo die Sonne Frueher auf geht… SonnenAufgang.
local minSonUnt = ‘60’ – Vohrzeichen - + min. wo die Sonne Spaeter unter geht… SonnenUntergang.
local zeitFruehstensAuf = ‘06:00’ --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = ‘07:00’ --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = ‘22:00’ --Spaetestens wenn die Sonne unter geht.
local sourceTrigger = fibaro:getSourceTrigger();
local version = ‘2.0’;
function rollershutter()
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
----------------------------------------------------------------------------------------
local version = '2.0';
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and (os.date("%H:%M", os.time()) == VersetzteSonnenaufgang or os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(rs_living_1, 'open');
fibaro:call(rs_living_2, 'open');
fibaro:call(rs_living_3, 'open');
fibaro:call(rs_living_4, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(rs_living_4, 'close') --ID für close ohne prüfung eines offenen Fensters
while (tonumber(fibaro:getValue(doorID1, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_1, 'close');
while (tonumber(fibaro:getValue(doorID2, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_2, 'close');
while (tonumber(fibaro:getValue(doorID3, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_3, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
local Sonnenaufgang = fibaro:getValue(1,‘sunriseHour’);
debug(‘gold’, “”…Sonnenaufgang…" … echte Sonnenaufgang")
debug(‘steelblue’, “”…minSonAuf…" Aufgesetzte zeit in minuten… Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a6060 + (b60+minSonAuf60));
debug(‘yellow’,""…VersetzteSonnenaufgang…" Versetzte… Sonnenaufgang")
local Sonnenuntergang = fibaro:getValue(1,‘sunsetHour’);
debug(‘orangered’,""…Sonnenuntergang… " … echte Sonnenuntergang")
debug(‘steelblue’, “”…minSonUnt…" Aufgesetzte zeit in minuten… Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a6060 + (b60+minSonUnt60));
debug(‘red’,""…VersetzteSonnenuntergang…" Versetzte… Sonnenuntergang")
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
debug(‘coral’,“Es ist Tag”);
else
debug(‘royalblue’,“Es ist Nacht”);
end
—###############################################################################
if (sourceTrigger[‘type’] == ‘autostart’) then
rollershutter();
end
Hallo Liebes Forum,
kann mir bitte jemand behilflich sein? Ich habe die zwei vorhandenen LUA Skripte von Boomx und Parip69 gekreuzt da ich beide Lösungen mit dem frühesten Aufgang und spätesten Untergang von Parip69 sowie die Zufallszeit (wird als Anwesenheitssimulation genutzt) von Boomx sehr scharmant finde. Das Skript funktioniert auch ohne Probleme nur werde die schleifen doppelt ausgeführt wie unten zu erkennen ist.
Problem: Wenn die späteste aufgezeigt der Rollläden z.B. auf 08:00Uhr gestellt wurde und Sonnenaufgang 06:00 ist und die Verzögerung (Zufallszeit) auf 50min fällt, gehen die Rollläden um 06:50 auf, das ist soweit auch OK. Jetzt fangt das Skript aber um 08:00 noch einmal an die Bedingungen zu Prüfen und macht die Rollenden noch einmal auf. Das ist an sich kein Problem, da sie ja bereits offen sind und ist sicher auch nicht weiter schlimm aber ich würde gerne entweder oder habe. Wenn also die Rollläden bereits offen oder zu sind, soll die andere Bedingung ignoriert werden.
Kann mir hier bitte jemand helfen?
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '00' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '00' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00' --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '08:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn die Sonne unter geht.
local rs_living_1 = 152;
local rs_living_2 = 150;
local rs_living_3 = 154;
local rs_living_4 = 175;
local doorID1 = 22;
local doorID2 = 26;
local doorID3 = 30;
---------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
debug('darkgreen',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
---------------------------------------------------------------------------------------
function rollershutter()
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
----------------------------------------------------------------------------------------
local version = '2.0';
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
local random = math.random(30);
local min = math.floor((random*100)/60);
-----------------------------------------------------------------------------------------
---################# Sonnenaufgang !! ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and (os.date("%H:%M", os.time()) == VersetzteSonnenaufgang or os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:debug('Sonnenaufgang... öffne Rollos');
fibaro:debug('Waiting ' .. min .. ' min');
fibaro:sleep(random*100000);
fibaro:call(rs_living_1, 'open');
fibaro:call(rs_living_2, 'open');
fibaro:call(rs_living_3, 'open');
fibaro:call(rs_living_4, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------------
---################ Sonnenuntergang !! ##########################################---
-----------------------------------------------------------------------------------------
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:debug('Sonnenunter... schließe Rollos');
fibaro:debug('Waiting ' .. min .. ' min');
fibaro:sleep(random*100000);
fibaro:call(rs_living_4, 'close') --ID für close ohne prüfung eines offenen Fensters
while
(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_1, 'close');
while
(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_2, 'close');
while
(tonumber(fibaro:getValue(doorID3, 'value')) > 0) do --prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
fibaro:sleep(10*1000)
end
fibaro:call(rs_living_3, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
end
---#######################################################################################
setTimeout(rollershutter, 60*1000);
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")
debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")
----------------------------------------------------------------------------------------
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")
debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")
----------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
debug('coral',"Es ist Tag");
else
debug('royalblue',"Es ist Nacht");
end
---###############################################################################
if (sourceTrigger['type'] == 'autostart') then
rollershutter();
end
Hallo thebrain
ich habe es nicht getestet, solte aber funktionieren. Einfach austauschen.
-----------------------------------------------------------------------------------------
---################# Sonnenaufgang !! ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and (((VersetzteSonnenaufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
or (VersetzteSonnenaufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
and rollershutter_runs == 0)
then
Hallo,
@parip69 leider würde der Rolladen immer noch vor der frühestens Zeit auf gehen.
Genau wie beim schiesen würde er nach 22:00 Uhr schliesen.
Kannst Du das noch bitte modifizieren?
Danke
cu
karlk
Hallo Karlk
Ich habe versucht dir zu erklären weiter oben in den Beiträgen. Das was du mir im Bild zeigst ist nur die Aufgerechnete Zeit. Diesen Debug habe ich nur zur Visualisierung damit ich mich orientieren kann, wenn ich die Zeiten verändere wo ich mich mit dem verschobenen Sonnenaufgang oder SonnenUntergang befinde.
local minSonAuf = '-25' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
Die Tatsächliche If abfrage findet hier stat.
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and (((VersetzteSonnenAufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
and rollershutter_runs == 0)
then
und Ganz genau mit diesen beiden Zeilen wird die Aufgerechnete Zeit abgefragt.
Wenn du drüber oder drunter bist dann werden die Grenzwerte berücksichtigt und eingehalten.
Mann kann aber schön sehen das man schon drunter oder drüber bist.
or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
Ich hoffe das ich mich einiger massen verständlich machen konnte.
Und hier nochmal mein gesamte Scene.
Probiere wenn du lust hast mit den Werten.
ich Experimentiere mit einem ScenenRboot.
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '-25' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00' --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn die Sonne unter geht.
local rebootSceneID = 32 -- ID der eigenen Scene die rebotet wird.
-----------------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
local sourceTrigger = fibaro:getSourceTrigger();
function sceneReboot()
local currentDate = os.date("*t");
if ((currentDate.hour == 2) and (currentDate.min >= 0)and (currentDate.min < 1)) then
debug('salmon',"Neustart der Scene!")
fibaro:sleep(1*60*1000)
fibaro:startScene(rebootSceneID);
end
setTimeout(sceneReboot, 1*60*1000)
end
--#######################################################################################
local SonnenAufgang = fibaro:getValue(1,'sunriseHour');
debug('gold', ""..SonnenAufgang.." ... echte SonnenAufgang")
debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = SonnenAufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenAufgang.." Versetzte.... SonnenAufgang")
----------------------------------------------------------------------------------------
local SonnenUntergang = fibaro:getValue(1,'sunsetHour');
debug('orangered',""..SonnenUntergang.. " ... echte SonnenUntergang")
debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = SonnenUntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenUntergang.." Versetzte... SonnenUntergang")
--########################################################################################
debug('darkgreen',"Rollershutter-Controller startet das erste mal!");
function rollerShutter()
--#######################################################################################
local SonnenAufgang = fibaro:getValue(1,'sunriseHour');
local string = SonnenAufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
local SonnenUntergang = fibaro:getValue(1,'sunsetHour');
local string = SonnenUntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
--########################################################################################
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
------------------------------------------------------------------------------------------
---################# SonnenAufgang !! ###############################################--
------------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and (((VersetzteSonnenAufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'open');
fibaro:call(100, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
if (os.date("%H:%M", os.time()) >= VersetzteSonnenAufgang) then
debug('coral',"Es ist Tag");
end
-----------------------------------------------------------------------------------------
---################ SonnenUntergang !! ###########################################---
-----------------------------------------------------------------------------------------
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and ((VersetzteSonnenUntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenUntergang)
or (VersetzteSonnenUntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
and rollershutter_runs == 0)
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'close');
fibaro:call(100, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
if (os.date("%H:%M", os.time()) >= VersetzteSonnenUntergang) then
debug('royalblue',"Es ist Nacht");
end
end
---#######################################################################################
setTimeout(rollerShutter, 60*1000);
end
--########################################################################################
if (sourceTrigger['type'] == 'autostart') then
rollerShutter();
sceneReboot();
elseif (sourceTrigger['type'] == 'property') then
fibaro:debug('Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
fibaro:debug('Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
fibaro:debug('Other source.')
end
Hallo Zusammen,
zuerst einmal muss ich sagen das ich ein absoluter Newbie in Sachen HC2 und LUA bin.
Seit gut 2 Monaten habe ich das System und bin begeistert was damit möglich ist. Einige Blockszenen habe ich mir schon erstellt und bin damit zufrieden,
aber was man hier im Forum sieht was mit LUA möglich ist - Wahnsinn.
Also möchte ich mich da auch einarbeiten und dachte ich fange mit etwas einfachem an: Rollo rauf / runter.
So habe ich dann mit dem Script auf Seite 1 angefangen und das läuft auch gut.
Aber nun zu meinen Fragen - wenn ich darf:
Mit der Türschleife habe ich soweit auch verstanden - super Ideen
Was ich gerne auch mit einbinden möchte für die Temperatur ist meine Netatmo Weather Station - funktioniert das ?
Und erst einmal als letzte Frage:
Funktioniert das Script auch mit der Erweiterung: Rollo nur öffnen wenn es draußen nicht regnet (Yahoo Wetter geht ja nicht mehr) ?
Vielen Dank vorab…
Gruss
Carsten
Hi,
sofern das Rollo nicht komplett zu/auf soll, genügt der Wert:
fibaro:call(67, „setValue“, „45“); ?
Was mir da zu anfangs geholfen hat, ich habe eine Blockszene erstellt und die dann in LUA umgewandelt, um den Syntax zu lernen.
Netatmo-Einbindung geht auch super:
http://www.siio.de/heizenenergiesparen/netatmo-regen-windmesser-im-fibaro-homecenter-2/
VG Hoggle
Als Wetter-Alternativen findest Du hier im Forum auch ein VD zu Open Weather und einen Link zu dem VD zu Weather Undergrund.
Die Wetterwerte kannst Du dann in Deinen Szenen verwenden.
Hurra,
es geht.
Vielen Dank.
Super Forum.
cu
karlk
Hallo karlk
Hast du Interesse auch an einem eingebauten Sonnenschutz???
Jetzt wird im debug angezeigt wie und wann das Script die Rollos verfährt.
Habe mein Script weiter ausgebaut und ausgiebig getestet.
Hier den code. Mann braucht Variablen.
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '-25' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '05:00' --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn die Sonne unter geht.
local startSunLux = 20000; -- über 20.000 Lux für zu
local startSunDelay = 5; -- 5 Min bis zu
local endSunLux = 8000; -- unter 10.000 Lux für auf
local endSunDelay = 20; -- 20 Min bis auf
local sunProtectPosition = 30; -- Sonnen schutz position für Rollos.
local luxSensor = 115 -- Helichkeits sensor Flur.
local rebootSceneID = 48 -- ID der eigenen Scene die rebotet wird.
-----------------------------------------------------------------------------------------
debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
local sourceTrigger = fibaro:getSourceTrigger();
function sceneReboot()
local currentDate = os.date("*t");
if ((currentDate.hour == 2) and (currentDate.min >= 0)and (currentDate.min < 1))
or sourceTrigger["type"] == "other" then
debug('salmon',"Neustart der Scene!")
fibaro:sleep(1*60*1000)
fibaro:startScene(rebootSceneID);
end
setTimeout(sceneReboot, 1*60*1000)
end
--#######################################################################################
debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ... echte SonnenAufgang")
debug('steelblue', ""..minSonAuf.." min... Aufgesetzte zeit in minuten bis Sonnen Aufgang.")
local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenAufgang.." Versetzte.... SonnenAufgang")
----------------------------------------------------------------------------------------
debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... echte SonnenUntergang")
debug('steelblue', ""..minSonUnt.." min... Aufgesetzte zeit in minuten bis Sonnen Untergang.")
local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenUntergang.." Versetzte... SonnenUntergang")
--########################################################################################
if VersetzteSonnenAufgang > zeitFruehstensAuf and VersetzteSonnenAufgang < zeitSpaetestensAuf then
debug('yellow',"Die Rollos werden um "..VersetzteSonnenAufgang.. " auf gehen.")
elseif VersetzteSonnenAufgang < zeitFruehstensAuf then
debug('yellow',"Die Rollos werden um "..zeitFruehstensAuf.. " auf gehen.")
elseif VersetzteSonnenAufgang > zeitSpaetestensAuf then
debug('yellow',"Die Rollos werden um "..zeitSpaetestensAuf.. " auf gehen.")
end
--------------------------------------------------------------------------------------------
if VersetzteSonnenUntergang > zeitMaxUntergang then
debug('steelblue',"Die Rollos werden um "..zeitMaxUntergang.. " unter gehen.")
else
debug('steelblue',"Die Rollos werden um "..VersetzteSonnenUntergang.. " unter gehen.")
end
--#########################################################################################
debug('darkgreen',"Rollershutter-Controller startet das erste mal!");
function rollerShutter()
--#######################################################################################
local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
--########################################################################################
local currentDate = os.date('*t');
local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
local SonnenSchutz = tonumber(fibaro:getGlobalValue('SonnenSchutz'));
------------------------------------------------------------------------------------------
---################# SonnenSutz... rollos runter fahren !! #########################---
------------------------------------------------------------------------------------------
if ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
and (tonumber(SonnenSchutz) == 0)
then
fibaro:setGlobal('SunFirstMaxTimeLux', '1');
local gSunFirstMaxTimeLux = fibaro:getGlobalModificationTime('SunFirstMaxTimeLux')
if ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
and ((os.time() - gSunFirstMaxTimeLux) >= startSunDelay*60)
then
---------------- Rollos eintragen ----------------------------------------
fibaro:call(98, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
fibaro:call(100, "setValue", sunProtectPosition);--FensterFlur obergeschoss zur
---------------------------------------------------------------------------
debug('yellowgreen', fibaro:getValue(luxSensor, "value")..' Lux ... Die Rollos fahren auf ' ..sunProtectPosition..'%!!!')
fibaro:setGlobal('SunFirstMaxTimeLux', '0');
fibaro:setGlobal('SunFirstMinTimeLux', '0');
fibaro:setGlobal('SonnenSchutz', '1'); --SonnenSchutz wurde gesetzt.
fibaro:setGlobal('RolloUnten0Oben1', '0');
else
debug('coral','Die Rollos bleiben oben... es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux und '..startSunDelay..' min bis die Rollos auf ' ..sunProtectPosition..'% fahren.')
end
------------------------------------------------------------------------------------------
---################# SonnenSutz... rollos rauf fahren !! ###########################---
------------------------------------------------------------------------------------------
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
and (tonumber(SonnenSchutz) == 1)
then
fibaro:setGlobal('SunFirstMinTimeLux', '1');
local gSunFirstMinTimeLux = fibaro:getGlobalModificationTime('SunFirstMinTimeLux')
if ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
and ((os.time() - gSunFirstMinTimeLux) >= endSunDelay*60)
then
---------------- Rollos eintragen --------------------------------------------------
fibaro:call(98, 'open');
fibaro:call(100, 'open');
--------------------------------------------------------------------------------------
debug('yellowgreen', fibaro:getValue(luxSensor, "value")..' Die Rollos fahren rauf!!!')
fibaro:setGlobal('SunFirstMaxTimeLux', '0');
fibaro:setGlobal('SunFirstMinTimeLux', '0');
fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
fibaro:setGlobal('RolloUnten0Oben1', '1');
else
debug('peachpuff','Rollos bleiben auf ' ..sunProtectPosition..' % ... es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux und '..endSunDelay..' min bis die Rollos rauf fahren.')
end
------------------------------------------------------------------------------------------
---################# SonnenAufgang !! ###############################################--
------------------------------------------------------------------------------------------
elseif ((VersetzteSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
and (tonumber(rollershutter_runs) == 0))
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'open');
fibaro:call(100, 'open');
fibaro:call(108, 'open');
debug('yellow',"Rollos wurden geoefnet.");
fibaro:setGlobal('rollershutter_runs', '0');
fibaro:setGlobal('RolloUnten0Oben1', '1');
if (os.date("%H:%M", os.time()) >= VersetzteSonnenAufgang) then
debug('coral',"Es ist Tag");
end
-----------------------------------------------------------------------------------------
---################ SonnenUntergang !! ###########################################---
-----------------------------------------------------------------------------------------
elseif ((VersetzteSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenUntergang)
or (VersetzteSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang)
and (tonumber(rollershutter_runs) == 0))
then
debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
fibaro:setGlobal('rollershutter_runs', '1');
fibaro:call(98, 'close');
fibaro:call(100, 'close');
fibaro:call(108, 'close');
debug('royalblue',"Rollos wurden geschlossen.");
fibaro:setGlobal('rollershutter_runs', '0');
fibaro:setGlobal('RolloUnten0Oben1', '0');
if (os.date("%H:%M", os.time()) >= VersetzteSonnenUntergang) then
debug('royalblue',"Es ist Nacht");
end
end
---#######################################################################################
setTimeout(rollerShutter, 60*1000);
end
--########################################################################################
if (sourceTrigger['type'] == 'autostart') then
rollerShutter();
sceneReboot();
elseif (sourceTrigger['type'] == 'property') then
fibaro:debug('Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
fibaro:debug('Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
fibaro:debug('Other source.')
end
--###########################################################################################
Hi parip69,
Sonnenaufgang-/Untergang funktioniert einwandfrei. Allerdings bekomm ich den Sonnenschutz nicht richtig zum Laufen
Das Problem ist das es nicht immer zuverlässig die Variablen setzt. Leider komm ich nicht dahinter wieso. Hast du das Problem
auch?
Gruß
Bei mir funktioniert es seit Wochen einwandfrei. Hast du keine Kopier oder Tippfehler?