Rollladen-Steuerung (Sonnenaufgang/-untergang)

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… :wink:

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

Rollos_5.jpg

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 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'));

—################# 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(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:call(rs_living_4, 'close')						--ID für close ohne prüfung eines offenen Fensters

while 	(tonumber(fibaro:getValue(doorID1, 'value')) &gt; 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')) &gt; 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')) &gt; 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+ 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

Unbenannt-4.jpg

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

Rollos_Zeit.jpg

Hallo,

@parip69 hast Du schon Gelegenehit gehabt nach dem Fehler zu schauen?

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

@parip69 ok vielen Dank.
Ich glaube das war das Problem vor dem Bildschirm.

cu
karlk

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:

  • Wenn die Rollos nicht komplett rauf oder runter sollen, ich also einen Wert setzen möchte muss ich es dann so eintragen:
    fibaro:call(67, „setValue“, „45“, „open“); ?

Mit der Türschleife habe ich soweit auch verstanden - super Ideen :slight_smile:

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 :slight_smile:

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

Zeit.jpg

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 :frowning:
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?