Hallo
--[[
%% autostart
%% properties
%% globals
--]]
local minSonAuf = '-10' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt A= '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
---###############################################################################