Rollladen-Steuerung (Sonnenaufgang/-untergang)

Welchen Status hat das RS-Modul nach dem Blockieren? Wie ist der Stromverbrauch dabei?

Gruß

Moin Moin, der Rollladen hat den Status wie nach der letzen Bewegung, also geöffnet oder geschlossen. Laut dem “Energy Panel” gab es einen Stromverbrauch wie beim normalen Schließen.

Als ich daneben saß und den Rollladen über die App steuern wollte, habe ich auch ein kurzes schalten gehört, aber der Rollladen hat dann eben direkt nichts getan. Diese Schaltvorgänge haben nichts verbraucht.

Wenn der Status unverändert und der Stromverbrauch wie bei einem normalen Schließvorgang ist, dann kannst du den Status nach den Befehl abfragen. Sollte sich allerdings der Status ändern, dann kannst du es nicht ermitteln.

Alternativ kannst du natürlich auch den Stromverbrauch nach dem Schaltvorgang auslesen. Sollte sich dieser nicht ändern, dann passiert nichts. Geht dieser Wert hoch, dann fährt der Rollladen. Andere Möglichkeiten hast du nicht.

Gruß

Alles klar, dankeschön. Hatte gehofft das es zu einer planmäßigen Fehlermeldung des Moduls kommt, welche man dann nur noch verarbeiten muss.

Jungs, was habe ich falsch gemacht? Rolladen soll nach Sonnenauf- und Untergang fahren, bzw. abends spätestens um 19:00 Uhr runterfahren. Es passiert jedoch nichts :frowning:

–[[
%% autostart
%% properties
%% globals
–]]

local minSonAuf = ‘-10’ – Vohrzeichen - + min. wo die Sonne Frueher auf geht… SonnenAufgang.
local minSonUnt = ‘+30’ – Vohrzeichen - + min. wo die Sonne Spaeter unter geht… SonnenUntergang.
local zeitFruehstensAuf = ‘07:30’ --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = ‘08:30’ --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = ‘19: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-Schlafzimmer 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_run = tonumber(fibaro:getGlobalValue('rollershutter_run'));

—################# 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_run == 0)
then

   debug('darkkhaki',"Rollershutter-Controller-Schlafzimmer hat gestartet (Ver." .. version .. ")");
       fibaro:setGlobal('rollershutter_run', '1');
	
            fibaro:call(364, 'open');


   debug('yellow',"Rollos wurden geoefnet.");
   fibaro:setGlobal('rollershutter_run', '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_run == 0)
then

   debug('darkkhaki',"Rollershutter-Controller-Schlafzimmer hat gestartet (Ver." .. version .. ")");
       fibaro:setGlobal('rollershutter_run', '1');
	
            fibaro:call(364, 'close');
           

   debug('royalblue',"Rollos wurden geschlossen.");
   fibaro:setGlobal('rollershutter_run', '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

Danke für Eure Rückmeldung …

Hallo, vielleicht kann mich auch einer weiterhelfen. Ich teste das Script mit einem Rollladen und der Feiertagssteuerung (https://www.siio.de/board/thema/rollladen-steuerung-sonnenaufgang-untergang/page/17/). Momentan wird jede Minute ein Debug-Eintrag hierzu erzeugt:

[DEBUG] 18:09:13: 06:55 … Sonnenaufgang
[DEBUG] 18:09:13: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 18:09:13: 06:40 Öffnen der Rolladen.
[DEBUG] 18:09:13: 19:55 … SonnenUntergang
[DEBUG] 18:09:13: 5 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 18:09:13: 20:00 schließen der Rolladen sofern die Temperatur 7 °C unterschreitet
[DEBUG] 18:09:13: Die Rolladen werden um 06:40 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 18:09:13: Die Rolladen werden um 20:00 zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur 7 °C unterschreitet.
[DEBUG] 18:09:13: Rolladen-Controller startet das erste mal!
[DEBUG] 18:09:13: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 18:10:13: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 18:11:13: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 18:12:13: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 18:13:13: Heute ist Wochenende oder ein Feiertag.

Das bedeutet ja auch, dass jede Minute die Prüfung abläuft. Eigentlich würde das ja 1 x am Tag reichen ?! Wo kann ich das ändern, dass dies nur 1 x täglich geprüft wird ?
Vielen Dank schon mal !

Hallo Zusammen.

Hab das Script in Version 2.3 am laufen. Der Sonnenschutz ist genial. Bei Jalousien wäre es aber noch schön, wenn man die Lamellen Position einstellen könnte. Hat sich jemand darüber Mal Gedanke gemacht? Problem ist ja das die Jalousien erst runter fahren müssen und danach die Lamellen Position geändert werden muss.

Hallo zusammen

Ich habe zwei Probleme

Fehlermeldung:

timer handler failed with error

Und die rolladen fahren immer hoch aber nie runter

Hi,

Und welches Script genau nutzt Du?

Viele Grüße Hoggle

ich nutze die Version 2.3

--[[
%% autostart
%% properties
%% globals
--]]
-- Bisherige Hauptarbeiten an dem Skript: http://www.Siio.de,  boomx, parip69 und thebrain. Kleine Modifikationen von alando22
-- Version 2.3
-- Dieses Skript realisiert eine Rolladen-Steuerung zum Sonnenaufgang und - untergang mit Verzögerungszeiten und einer
-- Temperaturschwelle, die zum schließen der Rolläden unterschritten werden muss.
-- Zusätzlich ist eine zufällige Verzögerung von 1-30 Minuten eingebaut, um die Aktivitäten nicht nachvollziehbar zu machen.
-- Zudem ist ein Sonnenschutz über einen Helligkeitssensor integriert. Eine Prüfung ggf. offener Türen ist ebenfalls enthalten.
-- Bei morgendlichen Öffnen wird zwischen Werktagen und Wochenenden & Feiertagen unterschieden.
-- Wochentags wird nach Sonnenaufgang geöffnet, am Wochenende & an Feiertagen zu fester Uhrzeit.
-- Dazu ist das Skript "Variable für Feiertage" von https://www.siio.de/board/thema/variable-fuer-feiertage/#post-42440 notwendig.
-- Ohne Verwendung des Feiertagsscripts bitte die Zeile 89 auskommentieren!!!
-- Notwendige globale Variablen (vorher anlegen!):
--
--	SunFirstMaxTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SunFirstMinTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SonnenSchutz		Startwert = 0 (Variable gibt an, ob der Sonnenschutz aktiv '1' oder inaktiv '0' ist
--	RolloUnten0Oben1	Startwert = 1 (Variable gibt an, ob Rolladen unten '0' oder oben '1' ist

--#####################################################################################################################

local minSonAuf = '30' 					-- Verzögerungszeit in Minuten zum öffnen der Rolläden bei Sonnenaufgang.
local minSonUnt = '-30' 				-- Verzögerungszeit in Minuten zum schließen der Rolläden bei Sonnenuntergang.
local zeitFruehstensAuf = '08:00'  		-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitSpaetestensAuf = '08:30'  	-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitWeFtAuf = '09:30'				-- Zeitpunkt, an dem am Wochenende und an Feiertagen die Rolläden öffnen (fixer Zeitpunkt)
local zeitMaxUntergang = '21:30'    	-- Spätester Zeitpunkt, an dem die Rolläden schließen
local maxTempStart = 40					-- Temperatur unterhalb der die Rolladen abends schließen sollen

local startSunLux = 20000 				-- über 10.000 Lux für zu
local startSunDelay = 5					-- 5 Min bis zu
local endSunLux = 5000					-- unter 1.000 Lux für auf
local endSunDelay = 20					-- 20 Min bis auf
local sunProtectPosition = 0			-- Sonnen schutz position für Rollos.
local sunProtectTempMin = 25			-- Grenztemperatur, überhalb derer der Sonnenschutz aktiviert werden soll

local luxSensor = 104					-- ID desHellichkeitssensors
local tempSensor = 220					-- ID des Temperatursensors (Außentemperatur)
local rebootSceneID = 12	   	    	-- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0				-- Hilfsvariable um die Meldungen nicht andauernd zu wiederholen.

local rs_wohnraum1 = 113;				-- IDs der Roller Shutter.
local rs_wohnraum2 = 116;
local rs_kueche1 = 77;
local rs_kueche2 = 94;
local rs_kueche3 = 97;
local rs_arbeitszimmer1 = 184;
local rs_kind = 193;
local rs_bad1 = 187;
local rs_bad2 = 190;
local rs_WC = 199;

local doorID1 = 207;
local doorID2 = 219;			--Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)
local doorID3 = 207; 			--Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)
local doorID4 = 223;
local doorID5 = 215;
local doorID6 = 211;
--local doorID2 = ;
--local doorID2 = ;
--local doorID2 = ;
--local doorID2 = ;
--local doorID2 = ;-------------------------------------------------------------------------------------------------------------------------
--################################ ab hier nichts mehr ändern! ##########################################################
-------------------------------------------------------------------------------------------------------------------------

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 Szene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--########## Berechnung versetzter Sonnenaufgang und versetzter Sonnenuntergang ############
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ...  Sonnenaufgang")
    debug('steelblue', ""..minSonAuf.." min... Zeitverzögerung zum Sonnenaufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzterSonnenAufgang.." Öffnen der Rolladen.")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min. Zeitverzögerung Sonnenuntergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzterSonnenUntergang..' schließen der Rolladen sofern die Temperatur '..maxTempStart..' °C unterschreitet')

--############################## Feststellung ob Wochenende oder Feiertag ##################
--local Feiertag_heute = tonumber(fibaro:getGlobalValue("Feiertag_heute")) -- Diese Zeile auskommentieren, wenn kein Feiertagsscript genutzt wird
local currentDate = os.date("*t")
local werktag = 1

---------------------------------------------------------------------------------------
--############ Prüfung wann Rolladen tatsächlich öffnen werden ########################
            if werktag == 0 then
				debug ('yellow', "Die Rolladen werden um "..zeitWeFtAuf.." öffnen.")
			elseif
			VersetzterSonnenAufgang > zeitFruehstensAuf and VersetzterSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..VersetzterSonnenAufgang.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitFruehstensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitSpaetestensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              end
            --------------------------------------------------------------------------------------------
            if VersetzterSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rolladen werden um "..zeitMaxUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur '..maxTempStart..' °C unterschreitet.')
			  else
                debug('steelblue',"Die Rolladen werden um "..VersetzterSonnenUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur '..maxTempStart..' °C unterschreitet.')
              end
--#########################################################################################
	  debug('darkgreen',"Rolladen-Controller startet das erste mal!");

function rollerShutter()

--######## Berechnung der Variablen  ########
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = 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'));

----------------------------------------------------------------------------------------
	local version = '2.3';
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local random = math.random(18);			-- Hier wird die zufällige Verzögerung beeinflusst.
	local min = math.floor((random*100)/60);
--------------------------------------------------------------------------------------------

	if ((Feiertag_heute == 1 or currentDate.wday == 7 or currentDate.wday == 1))
	then
		werktag = 0
		debug('grey', "Heute ist Wochenende oder ein Feiertag.")
	else
		werktag = 1
		debug('grey',"Heute ist ein Werktag und kein Feiertag.")
	end
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... Rolladen runterfahren !!   #########################---
------------------------------------------------------------------------------------------

if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
	and sunProtectTempMin <= tonumber(fibaro:getValue(tempSensor, "value"))
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
      ---------------- Rolladen eintragen  ----------------------------------------

      	fibaro:call(rs_wohnraum1, "setValue", sunProtectPosition); --Tür links
		fibaro:call(rs_wohnraum2, "setValue", sunProtectPosition); --Tür mitte
		fibaro:call(rs_kueche1, "setValue", sunProtectPosition); --Tür rechts.
      	fibaro:call(rs_kueche2, "setValue", sunProtectPosition); --Tür rechts.
        fibaro:call(rs_kueche3, "setValue", sunProtectPosition); --Tür rechts.
      	fibaro:call(rs_arbeitszimmer1, "setValue", sunProtectPosition+5); --Fenster links
		fibaro:call(rs_kind, "setValue", sunProtectPosition); --Fenster rechts
		fibaro:call(rs_bad1, "setValue", sunProtectPosition+10); --Fenster
		fibaro:call(rs_bad2, "setValue", sunProtectPosition); --Balkontür
		fibaro:call(rs_wc, "setValue", sunProtectPosition); --Tür rechts.
      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rolladen fahren auf ' ..sunProtectPosition..'%!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '1'); --SonnenSchutz wurde gesetzt.
        fibaro:setGlobal('RolloUnten0Oben1', '0');
        meldungenDebug = 0
      elseif meldungenDebug == 0 then
    	debug('lightsteelblue','Die Rolladen bleiben oben... es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux  und '..startSunDelay..' min bis die Rollos auf ' ..sunProtectPosition..'% fahren.')
		meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
    end
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... Rolladen hochfahren !!  ###########################---
------------------------------------------------------------------------------------------
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
---------------- Rolladen eintragen  --------------------------------------------------

        fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_kueche1, 'open');
      	fibaro:call(rs_kueche2, 'open');
      	fibaro:call(rs_kueche3, 'open');
		fibaro:call(rs_arbeitszimmer1, 'open');
		fibaro:call(rs_kind, 'open');
		fibaro:call(rs_bad1, 'open');
		fibaro:call(rs_bad2, 'open');
      	fibaro:call(rs_wc, 'open');

--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rolladen fahren hoch!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
        meldungenDebug = 0
     elseif meldungenDebug == 0 then
        debug('lightsteelblue','Rollos bleiben auf ' ..sunProtectPosition..' % ...  es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux und '..endSunDelay..' min bis die Rollos rauf fahren.')
   		meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
    end
------------------------------------------------------------------------------------------
---#################   Sonnenaufgang Werktags!!  ###############################################--
------------------------------------------------------------------------------------------
elseif werktag == 1 and ((VersetzterSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzterSonnenAufgang)
 or (VersetzterSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzterSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('gold', 'Sonnenaufgang... öffne Rolladen');
		debug('gold', 'Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);

		fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_kueche1, 'open');
    	fibaro:call(rs_kueche2, 'open');
    	fibaro:call(rs_kueche3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_kind, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');
    	fibaro:call(rs_wc, 'open');

      debug('yellow',"Rolladen wurden geöfnet.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '1');

      if (os.date("%H:%M", os.time()) >= VersetzterSonnenAufgang) then
          debug('coral',"Es ist Tag.");
      end
------------------------------------------------------------------------------------------
---#################   Sonnenaufgang Wochenende und Feiertags!!  ###################################--
------------------------------------------------------------------------------------------
elseif werktag == 0 and ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == zeitWeFtAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('yellow','Es ist '..zeitWeFtAuf..'Uhr, Öffne Rolladen');

		fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_kueche1, 'open');
    	fibaro:call(rs_kueche2, 'open');
    	fibaro:call(rs_kueche3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_kind, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');
    	fibaro:call(rs_wc, 'open');

      debug('yellow',"Rolladen wurden geöfnet.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '1');

	  debug('coral',"Es ist Tag.");

-----------------------------------------------------------------------------------------
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------
elseif 	(tonumber(fibaro:getValue(tempSensor, "value")) < maxTempStart and tonumber(rollershutter_runs) == 0) and 
    	((VersetzterSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzterSonnenUntergang)
 or 	(VersetzterSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
    then

       	debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('steelblue', 'Sonnenuntergang... schließe Rolladen sofern die Temperatur '..maxTempStart..' °C unterschreitet')
		debug('sttelblue', 'Die Temperatur beträgt '..tonumber(fibaro:getValue(tempSensor, "value"))..'°C.')
		debug('steelblue', 'Die zufällige Verzögerung beträgt ' .. min .. ' min.');
		fibaro:sleep(random*1000);

		fibaro:call(rs_wohnraum1, 'close');
        fibaro:call(rs_wohnraum2, 'close');
        fibaro:call(rs_kueche1, 'close');
    	fibaro:call(rs_kueche2, 'close');
    	fibaro:call(rs_kueche3, 'close');
        fibaro:call(rs_arbeitszimmer1, 'close');
    	fibaro:call(rs_kind, 'close');
    	fibaro:call(rs_bad1, 'close');
    	fibaro:call(rs_bad2, 'close');
    	fibaro:call(rs_wc, 'close');

		--while
			--fibaro:getGlobalValue("HolidayLights") == "On" do
			--fibaro:sleep(10*1000)
		--end

			--fibaro:call(rs_wohnraum1, 'close');

		while
			(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_wohnraum2, 'close');

		while
			(tonumber(fibaro:getValue(doorID6, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_kueche2, 'close');

		--while
		--	(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
		--	fibaro:sleep(10*1000)
		--end
 		--	fibaro:call(rs_wohnraum1, 'close');

      debug('royalblue',"Rolladen wurden geschlossen.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '0');

      if (os.date("%H:%M", os.time()) >= VersetzterSonnenUntergang) 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
  debug('orangered', 'Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  debug('orangered', 'Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rolladen eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzterSonnenUntergang) then

       	fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_kueche1, 'open');
    	fibaro:call(rs_kueche2, 'open');
    	fibaro:call(rs_kueche3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_kind, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');
    	fibaro:call(rs_wc, 'open');
        debug('coral',' Die Rolladen fahren in Grundstellung!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
      else
        debug('royalblue',' Es ist Nacht.')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      end
      ---------------------------------------------------------------------------
  debug('orangered', 'Other source.')
end
--###########################################################################################

Hallo, bei mir kommt jetzt auch eine Fehlermeldung.

Wer kann mir bitte weiterhelfen, ggfs. auch per TeamViewer ?

[DEBUG] 19:17:25: 05:53 … Sonnenaufgang
[DEBUG] 19:17:25: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 19:17:25: 05:38 Öffnen der Rolladen.
[DEBUG] 19:17:25: 20:44 … SonnenUntergang
[DEBUG] 19:17:25: 5 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 19:17:25: 20:49 schließen der Rolladen sofern die Temperatur 7 °C unterschreitet
[DEBUG] 19:17:25: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 19:17:25: Die Rolladen werden um 20:49 zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur 7 °C unterschreitet.
[DEBUG] 19:17:25: Rolladen-Controller startet das erste mal!
[DEBUG] 19:17:25: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 19:17:25: Die Rolladen bleiben oben… es sind 9 Lux und 1 min bis die Rollos auf 95% fahren.
[DEBUG] 19:18:25: Heute ist Wochenende oder ein Feiertag.
[DEBUG] 19:18:25: [1;31m2018-05-09 19:18:25.355725 [ error] timer handler failed with error

@alando22
Hey, ich habe Dein Script jetzt verwendet. Der Sonnenschutz klappt, jedoch fahren die Rollladen abends nicht herrunter. Nur wenn ich die Abfragen bzgl. der Sonnenuntergangszeiten, etc. lösche, dann funktioniert es.

das geht:

elseif os.date("%H:%M", os.time()) == zeitMaxUntergang

das geht nicht:
elseif ((VersetzterSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzterSonnenUntergang)
or (VersetzterSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang)
and (tonumber(rollershutter_runs) == 0))

Meinst Du könntest mir hier weiterhelfen ?

@fuzi

Bei mir haben die Rolladen nur eine Kältschutzfunktion. Das heisst, sie fahren nur unterhalb von 7° C herunter. Schau mal in die Zeile 32.
Dort den Wert “local maxTempStart = 7” einfach auf eine Temperatur von 35° C setzen und deine Rolladen dürften jeden Abend herunterfahren.

@alando22
Vielen Dank für die Info, war nur im Urlaub… Habs jetzt einigermaßen hinbekommen, bin aber noch am testen. Gibt’s denn auch ne Lösung für Urlaub/Ferien, d.h. idealerweise trage ich die Ferientage von-bis irgenwo ein. An diesen Tagen gilt dann quasi die Feiertags-/Wochenend-Einstellung.

Hallo zusammen,

erst mal vielen lieben Dank für das wirklich tolle Script. Ich nutze die aktuelle Version 2.3
Es läuft auch bei mir soweit perfekt durch, bis auf eine Kleinigkeit:
Bei mir findet keine Prüfung der geöffneten Tür statt. Egal ob die Tür auf oder zu ist, fahrt der Rollo runter.
Die entsprechende Stelle befindet sich bei mir in Zeile 288

`–[[
%% autostart
%% properties
59 value
%% globals
–]]

local minSonAuf = ‘-1’ – Verzögerungszeit in Minuten zum öffnen der Rolläden bei Sonnenaufgang.
local minSonUnt = ‘+155’ – Verzögerungszeit in Minuten zum schließen der Rolläden bei Sonnenuntergang.
local zeitFruehstensAuf = ‘06:00’ – Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitSpaetestensAuf = ‘06:30’ – Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitWeFtAuf = ‘08:30’ – Zeitpunkt, an dem am Wochenende und an Feiertagen die Rolläden öffnen (fixer Zeitpunkt)
local zeitMaxUntergang = ‘23:45’ – Spätester Zeitpunkt, an dem die Rolläden schließen
local maxTempStart = 40 – Temperatur unterhalb der die Rolladen abends schließen sollen

local startSunLux = 1000 – über 10.000 Lux für zu
local startSunDelay = 0 – 5 Min bis zu
local endSunLux = 700 – unter 1.000 Lux für auf
local endSunDelay = 2 – 20 Min bis auf
local sunProtectPosition = 50 – Sonnen schutz position für Rollos.
local sunProtectTempMin = 20 – Grenztemperatur, überhalb derer der Sonnenschutz aktiviert werden soll

local luxSensor = 171 – ID desHellichkeitssensors
local tempSensor = 170 – ID des Temperatursensors (Außentemperatur)
local rebootSceneID = 61 – ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0 – Hilfsvariable um die Meldungen nicht andauernd zu wiederholen.

local rs_wohnraum1 = 41; – IDs der Roller Shutter.
–local rs_wohnraum2 = 88;
–local rs_wohnraum3 = 92;
–local rs_arbeitszimmer1 = 41;
–local rs_arbeitszimmer2 = 43;
–local rs_bad1 = 62;
–local rs_bad2 = 64;

local doorID1 = 59; – ID des Türkontakts
–local doorID2 = ; --Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)
–local doorID3 = ; --Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)

–################################ ab hier nichts mehr ändern! ##########################################################

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 Szene!”)
fibaro:sleep(1
601000)
fibaro:startScene(rebootSceneID);
end
setTimeout(sceneReboot, 1
601000)
end
–########## Berechnung versetzter Sonnenaufgang und versetzter Sonnenuntergang ############
debug(‘gold’, “”…fibaro:getValue(1,‘sunriseHour’)…" … Sonnenaufgang")
debug(‘steelblue’, “”…minSonAuf…" min… Zeitverzögerung zum Sonnenaufgang.")
local a, b = fibaro:getValue(1,‘sunriseHour’):match("([^,]+):([^,]+)")
local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a
6060 + (b60+minSonAuf*60));
debug(‘yellow’,”"…VersetzterSonnenAufgang…" Öffnen der Rolladen.")

debug(‘orangered’,""…fibaro:getValue(1,‘sunsetHour’)… " … SonnenUntergang")
debug(‘steelblue’, “”…minSonUnt…" min. Zeitverzögerung Sonnenuntergang.")
local a, b = fibaro:getValue(1,‘sunsetHour’):match("([^,]+):([^,]+)")
local VersetzterSonnenUntergang = os.date("%H:%M", -3600+ a6060 + (b60+minSonUnt60));
debug(‘orangered’,""…VersetzterSonnenUntergang…’ schließen der Rolladen sofern die Temperatur ‘…maxTempStart…’ °C unterschreitet’)

–############################## Feststellung ob Wochenende oder Feiertag ##################
local Feiertag_heute = tonumber(fibaro:getGlobalValue(“Feiertag_heute”)) – Diese Zeile auskommentieren, wenn kein Feiertagsscript genutzt wird
local currentDate = os.date("*t")
local werktag = 1


–############ Prüfung wann Rolladen tatsächlich öffnen werden ########################
if werktag == 0 then
debug (‘yellow’, “Die Rolladen werden um “…zeitWeFtAuf…” öffnen.”)
elseif
VersetzterSonnenAufgang > zeitFruehstensAuf and VersetzterSonnenAufgang < zeitSpaetestensAuf then
debug(‘yellow’,"Die Rolladen werden um “…VersetzterSonnenAufgang… " zuzüglich einer zufälligen Verzögerung öffnen.”)
elseif VersetzterSonnenAufgang < zeitFruehstensAuf then
debug(‘yellow’,"Die Rolladen werden um “…zeitFruehstensAuf… " zuzüglich einer zufälligen Verzögerung öffnen.”)
elseif VersetzterSonnenAufgang > zeitSpaetestensAuf then
debug(‘yellow’,"Die Rolladen werden um “…zeitSpaetestensAuf… " zuzüglich einer zufälligen Verzögerung öffnen.”)
end

if VersetzterSonnenUntergang > zeitMaxUntergang then
debug(‘steelblue’,"Die Rolladen werden um "…zeitMaxUntergang… ’ zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur ‘…maxTempStart…’ °C unterschreitet.’)
else
debug(‘steelblue’,"Die Rolladen werden um "…VersetzterSonnenUntergang… ’ zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur ‘…maxTempStart…’ °C unterschreitet.’)
end
–#########################################################################################
debug(‘darkgreen’,“Rolladen-Controller startet das erste mal!”);

function rollerShutter()

–######## Berechnung der Variablen ########
local a, b = fibaro:getValue(1,‘sunriseHour’):match("([^,]+):([^,]+)")
local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a6060 + (b60+minSonAuf60));

local a, b = fibaro:getValue(1,‘sunsetHour’):match("([^,]+):([^,]+)")
local VersetzterSonnenUntergang = os.date("%H:%M", -3600+ a6060 + (b60+minSonUnt60));

local currentDate = os.date(’*t’);
local rollershutter_runs = tonumber(fibaro:getGlobalValue(‘rollershutter_runs’));
local SonnenSchutz = tonumber(fibaro:getGlobalValue(‘SonnenSchutz’));


local version = ‘2.3’;
local currentDate = os.date('t’);
local rollershutter_runs = tonumber(fibaro:getGlobalValue(‘rollershutter_runs’));
local random = math.random(2, 10); – Hier wird die zufällige Verzögerung beeinflusst.
local min = math.floor((random
100)/60);

if ((Feiertag_heute == 1 or currentDate.wday == 7 or currentDate.wday == 1))
then
werktag = 0
debug(‘grey’, “Heute ist Wochenende oder ein Feiertag.”)
else
werktag = 1
debug(‘grey’,“Heute ist ein Werktag und kein Feiertag.”)
end

—################# SonnenSchutz… Rolladen runterfahren !! #########################—

if ( tonumber(fibaro:getValue(luxSensor, “value”)) > startSunLux )
and sunProtectTempMin <= tonumber(fibaro:getValue(tempSensor, “value”))
and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
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
---------------- Rolladen eintragen ----------------------------------------

fibaro:call(rs_wohnraum1, “setValue”, sunProtectPosition); --Tür links
–fibaro:call(rs_wohnraum2, “setValue”, sunProtectPosition); --Tür mitte
–fibaro:call(rs_wohnraum3, “setValue”, sunProtectPosition); --Tür rechts.
–fibaro:call(rs_arbeitszimmer1, “setValue”, sunProtectPosition+5); --Fenster links
–fibaro:call(rs_arbeitszimmer2, “setValue”, sunProtectPosition); --Fenster rechts
–fibaro:call(rs_bad1, “setValue”, sunProtectPosition+10); --Fenster
–fibaro:call(rs_bad2, “setValue”, sunProtectPosition); --Balkontür


debug(‘greenyellow’, fibaro:getValue(luxSensor, “value”)…’ Lux … Die Rolladen fahren auf ’ …sunProtectPosition…’%!!!’)
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘1’); --SonnenSchutz wurde gesetzt.
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘0’);
meldungenDebug = 0
elseif meldungenDebug == 0 then
debug(‘lightsteelblue’,‘Die Rolladen bleiben oben… es sind ’ …fibaro:getValue(luxSensor, “value”)…’ Lux und ‘…startSunDelay…’ min bis die Rollos auf ’ …sunProtectPosition…’% fahren.’)
meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
end

—################# SonnenSchutz… Rolladen hochfahren !! ###########################—

elseif ( tonumber(fibaro:getValue(luxSensor, “value”)) < endSunLux )
and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
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
---------------- Rolladen eintragen --------------------------------------------------

fibaro:call(rs_wohnraum1, ‘open’);
–fibaro:call(rs_wohnraum2, ‘open’);
–fibaro:call(rs_wohnraum3, ‘open’);
–fibaro:call(rs_arbeitszimmer1, ‘open’);
–fibaro:call(rs_arbeitszimmer2, ‘open’);
–fibaro:call(rs_bad1, ‘open’);
–fibaro:call(rs_bad1, ‘open’);


debug(‘greenyellow’, fibaro:getValue(luxSensor, “value”)…’ Die Rolladen fahren hoch!!!’)
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘1’);
meldungenDebug = 0
elseif meldungenDebug == 0 then
debug(‘lightsteelblue’,‘Rollos bleiben auf ’ …sunProtectPosition…’ % … es sind ’ …fibaro:getValue(luxSensor, “value”)…’ Lux und ‘…endSunDelay…’ min bis die Rollos rauf fahren.’)
meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
end

—################# Sonnenaufgang Werktags!! ###############################################–

elseif werktag == 1 and ((VersetzterSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzterSonnenAufgang)
or (VersetzterSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
or (VersetzterSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
and (tonumber(rollershutter_runs) == 0))
then
debug(‘green’, 'Werktag = '… werktag)
debug(‘darkkhaki’,“Rolladen-Controller ist gestartet (Ver.” … version … “)”);
fibaro:setGlobal(‘rollershutter_runs’, ‘1’);
debug(‘gold’, ‘Sonnenaufgang… öffne Rolladen’);
debug(‘gold’, ‘Waiting ’ … min … ’ min’);
fibaro:sleep(random*100000);

fibaro:call(rs_wohnraum1, ‘open’);
–fibaro:call(rs_wohnraum2, ‘open’);
–fibaro:call(rs_wohnraum3, ‘open’);
–fibaro:call(rs_arbeitszimmer1, ‘open’);
–fibaro:call(rs_arbeitszimmer2, ‘open’);
–fibaro:call(rs_bad1, ‘open’);
–fibaro:call(rs_bad2, ‘open’);

debug(‘yellow’,“Rolladen wurden geöffnet.”);
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘rollershutter_runs’, ‘0’);
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘1’);

if (os.date("%H:%M", os.time()) >= VersetzterSonnenAufgang) then
debug(‘coral’,“Es ist Tag.”);
end

—################# Sonnenaufgang Wochenende und Feiertags!! ###################################–

elseif werktag == 0 and ((string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == zeitWeFtAuf)
and (tonumber(rollershutter_runs) == 0))
then
debug(‘green’, 'Werktag = '… werktag)
debug(‘darkkhaki’,“Rolladen-Controller ist gestartet (Ver.” … version … “)”);
fibaro:setGlobal(‘rollershutter_runs’, ‘1’);
debug(‘yellow’,'Es ist '…zeitWeFtAuf…‘Uhr, Öffne Rolladen’);

fibaro:call(rs_wohnraum1, ‘open’);
–fibaro:call(rs_wohnraum2, ‘open’);
–fibaro:call(rs_wohnraum3, ‘open’);
–fibaro:call(rs_arbeitszimmer1, ‘open’);
–fibaro:call(rs_arbeitszimmer2, ‘open’);
–fibaro:call(rs_bad1, ‘open’);
–fibaro:call(rs_bad2, ‘open’);

debug(‘yellow’,“Rolladen wurden geöffnet.”);
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘rollershutter_runs’, ‘0’);
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘1’);

debug(‘coral’,“Es ist Tag.”);


—################ SonnenUntergang !! ###########################################—

elseif (tonumber(fibaro:getValue(tempSensor, “value”)) < maxTempStart and tonumber(rollershutter_runs) == 0) and
((VersetzterSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzterSonnenUntergang)
or (VersetzterSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
then

debug(‘darkkhaki’,“Rolladen-Controller ist gestartet (Ver.” … version … “)”);
fibaro:setGlobal(‘rollershutter_runs’, ‘1’);
debug(‘steelblue’, ‘Sonnenuntergang… schließe Rolladen sofern die Temperatur ‘…maxTempStart…’ °C unterschreitet’)
debug(‘sttelblue’, 'Die Temperatur beträgt '…tonumber(fibaro:getValue(tempSensor, “value”))…‘°C.’)
debug(‘steelblue’, ‘Die zufällige Verzögerung beträgt ’ … min … ’ min.’);
fibaro:sleep(random*100000);

–fibaro:call(rs_arbeitszimmer1, ‘close’) --ID für close ohne prüfung eines offenen Fensters
–fibaro:call(rs_arbeitszimmer2, ‘close’);
–fibaro:call(rs_bad1, ‘close’);
–fibaro:call(rs_bad2, ‘close’);
fibaro:call(rs_wohnraum1, ‘close’);

–while
– fibaro:getGlobalValue(“HolidayLights”) == “On” do
– fibaro:sleep(10*1000)
–end

– fibaro:call(rs_wohnraum2, ‘close’);

while
(tonumber(fibaro:getValue(doorID1, ‘value’)) > 0)
do --prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
fibaro:sleep(10*1000)
end
–fibaro:call(rs_wohnraum3, ‘close’);

–while
– (tonumber(fibaro:getValue(doorID3, ‘value’)) > 0) do --prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
– fibaro:sleep(10*1000)
–end
– fibaro:call(rs_wohnraum2, ‘close’);

–while
– (tonumber(fibaro:getValue(doorID2, ‘value’)) > 0) do --prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
– fibaro:sleep(10*1000)
–end
– fibaro:call(rs_wohnraum1, ‘close’);

debug(‘royalblue’,“Rolladen wurden geschlossen.”);
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘rollershutter_runs’, ‘0’);
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘0’);

if (os.date("%H:%M", os.time()) >= VersetzterSonnenUntergang) 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
debug(‘orangered’, 'Source device = ’ … sourceTrigger[‘deviceID’])
elseif (sourceTrigger[‘type’] == ‘global’) then
debug(‘orangered’, 'Global variable source = ’ … sourceTrigger[‘name’])
elseif (sourceTrigger[‘type’] == ‘other’) then
---------------- Rolladen eintragen ----------------------------------------
if(os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
and(os.date("%H:%M", os.time()) < VersetzterSonnenUntergang) then

fibaro:call(rs_wohnraum1, ‘open’);
–fibaro:call(rs_wohnraum2, ‘open’);
–fibaro:call(rs_wohnraum3, ‘open’);
–fibaro:call(rs_arbeitszimmer1, ‘open’);
–fibaro:call(rs_arbeitszimmer2, ‘open’);
–fibaro:call(rs_bad1, ‘open’);
–fibaro:call(rs_bad2, ‘open’);
debug(‘coral’,’ Die Rolladen fahren in Grundstellung!!!’)
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘1’);
else
debug(‘royalblue’,’ Es ist Nacht.’)
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
end

debug(‘orangered’, ‘Other source.’)
end
–###########################################################################################

Hallo, muss mich leider auch mal melden, dass ich die Szene nicht ans laufen bekomme. Weder fahren die Rolladen Morgens hoch noch Abends runter. An die Sonnenschutzfunktion habe ich mich noch gar nicht getraut. VIelleicht hat ja jemand eine Idee wo mein Denkfehler ist.

--[[
%% autostart
%% properties
662 value
%% globals
--]]

-- Bisherige Hauptarbeiten an dem Skript: http://www.Siio.de,  boomx, parip69 und thebrain. Kleine Modifikationen von alando22
-- Version 2.3
-- Dieses Skript realisiert eine Rolladen-Steuerung zum Sonnenaufgang und - untergang mit Verzögerungszeiten und einer
-- Temperaturschwelle, die zum schließen der Rolläden unterschritten werden muss.
-- Zusätzlich ist eine zufällige Verzögerung von 1-30 Minuten eingebaut, um die Aktivitäten nicht nachvollziehbar zu machen.
-- Zudem ist ein Sonnenschutz über einen Helligkeitssensor integriert. Eine Prüfung ggf. offener Türen ist ebenfalls enthalten.
-- Bei morgendlichen Öffnen wird zwischen Werktagen und Wochenenden & Feiertagen unterschieden.
-- Wochentags wird nach Sonnenaufgang geöffnet, am Wochenende & an Feiertagen zu fester Uhrzeit.
-- Dazu ist das Skript "Variable für Feiertage" von https://www.siio.de/board/thema/variable-fuer-feiertage/#post-42440 notwendig.
-- Ohne Verwendung des Feiertagsscripts bitte die Zeile 89 auskommentieren!!!
-- Notwendige globale Variablen (vorher anlegen!):
--
--	SunFirstMaxTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SunFirstMinTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SonnenSchutz		Startwert = 0 (Variable gibt an, ob der Sonnenschutz aktiv '1' oder inaktiv '0' ist
--	RolloUnten0Oben1	Startwert = 1 (Variable gibt an, ob Rolladen unten '0' oder oben '1' ist

--#####################################################################################################################

local minSonAuf = '0' 				    -- Verzögerungszeit in Minuten zum öffnen der Rolläden bei Sonnenaufgang.
local minSonUnt = '0' 					-- Verzögerungszeit in Minuten zum schließen der Rolläden bei Sonnenuntergang.
local zeitFruehstensAuf = '06:00'  		-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitSpaetestensAuf = '09:00'  	-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitWeFtAuf = '09:00'				-- Zeitpunkt, an dem am Wochenende und an Feiertagen die Rolläden öffnen (fixer Zeitpunkt)
local zeitMaxUntergang = '22:00'    	-- Spätester Zeitpunkt, an dem die Rolläden schließen
local maxTempStart = 40					-- Temperatur unterhalb der die Rolladen abends schließen sollen

local startSunLux = 20000 				-- über 10.000 Lux für zu
local startSunDelay = 5					-- 5 Min bis zu
local endSunLux = 5000					-- unter 1.000 Lux für auf
local endSunDelay = 20					-- 20 Min bis auf
local sunProtectPosition = 45			-- Sonnen schutz position für Rollos.
local sunProtectTempMin = 25			-- Grenztemperatur, überhalb derer der Sonnenschutz aktiviert werden soll

local luxSensor = 271					-- ID desHellichkeitssensors
local tempSensor = 665					-- ID des Temperatursensors (Außentemperatur)
local rebootSceneID = 588	   	    	-- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0				-- Hilfsvariable um die Meldungen nicht andauernd zu wiederholen.

local rs_wohnraum1 = 297;				-- IDs der Roller Shutter.
local rs_wohnraum2 = 299;
--local rs_wohnraum3 = 0;
--local rs_arbeitszimmer1 = 0;
--local rs_arbeitszimmer2 = 0;
--local rs_bad1 = 0;
--local rs_bad2 = 0;

local doorID1 = 662;					-- ID des Türkontakts
--local doorID2 = ;						--Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)
--local doorID3 = ;						--Platzhalter für weitere Türkontakte (siehe WHILE-Schleifen bei ca. Zeile 275)
-------------------------------------------------------------------------------------------------------------------------
--################################ ab hier nichts mehr ändern! ##########################################################
-------------------------------------------------------------------------------------------------------------------------

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 Szene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--########## Berechnung versetzter Sonnenaufgang und versetzter Sonnenuntergang ############
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ...  Sonnenaufgang")
    debug('steelblue', ""..minSonAuf.." min... Zeitverzögerung zum Sonnenaufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzterSonnenAufgang.." Öffnen der Rolladen.")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min... Zeitverzögerung Sonnenuntergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzterSonnenUntergang..' schließen der Rolladen sofern die Temperatur '..maxTempStart..' °C unterschreitet')

--############################## Feststellung ob Wochenende oder Feiertag ##################
local Feiertag_heute = tonumber(fibaro:getGlobalValue("Feiertag_heute")) -- Diese Zeile auskommentieren, wenn kein Feiertagsscript genutzt wird
local currentDate = os.date("*t")
local werktag = 1

---------------------------------------------------------------------------------------
--############ Prüfung wann Rolladen tatsächlich öffnen werden ########################
            if werktag == 0 then
				debug ('yellow', "Die Rolladen werden um "..zeitWeFtAuf.." öffnen.")
			elseif
			VersetzterSonnenAufgang > zeitFruehstensAuf and VersetzterSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..VersetzterSonnenAufgang.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitFruehstensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitSpaetestensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              end
            --------------------------------------------------------------------------------------------
            if VersetzterSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rolladen werden um "..zeitMaxUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur '..maxTempStart..' °C unterschreitet.')
			  else
                debug('steelblue',"Die Rolladen werden um "..VersetzterSonnenUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur '..maxTempStart..' °C unterschreitet.')
              end
--#########################################################################################
	  debug('darkgreen',"Rolladen-Controller startet das erste mal!");

function rollerShutter()

--######## Berechnung der Variablen  ########
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = 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'));

----------------------------------------------------------------------------------------
	local version = '2.3';
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local random = math.random(18);			-- Hier wird die zufällige Verzögerung beeinflusst.
	local min = math.floor((random*100)/60);
--------------------------------------------------------------------------------------------

	if ((Feiertag_heute == 1 or currentDate.wday == 7 or currentDate.wday == 1))
	then
		werktag = 0
--		debug('grey', "Heute ist Wochenende oder ein Feiertag.")
	else
		werktag = 1
--		debug('grey',"Heute ist ein Werktag und kein Feiertag.")
	end
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... Rolladen runterfahren !!   #########################---
------------------------------------------------------------------------------------------

if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
	and sunProtectTempMin <= tonumber(fibaro:getValue(tempSensor, "value"))
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
      ---------------- Rolladen eintragen  ----------------------------------------

      	fibaro:call(rs_wohnraum1, "setValue", sunProtectPosition); --Tür links
		fibaro:call(rs_wohnraum2, "setValue", sunProtectPosition); --Tür mitte
		fibaro:call(rs_wohnraum3, "setValue", sunProtectPosition); --Tür rechts.
        fibaro:call(rs_arbeitszimmer1, "setValue", sunProtectPosition+5); --Fenster links
		fibaro:call(rs_arbeitszimmer2, "setValue", sunProtectPosition); --Fenster rechts
		fibaro:call(rs_bad1, "setValue", sunProtectPosition+10); --Fenster
		fibaro:call(rs_bad2, "setValue", sunProtectPosition); --Balkontür

      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rolladen fahren auf ' ..sunProtectPosition..'%!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '1'); --SonnenSchutz wurde gesetzt.
        fibaro:setGlobal('RolloUnten0Oben1', '0');
        meldungenDebug = 0
      elseif meldungenDebug == 0 then
    	debug('lightsteelblue','Die Rolladen bleiben oben... es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux  und '..startSunDelay..' min bis die Rollos auf ' ..sunProtectPosition..'% fahren.')
		meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
    end
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... Rolladen hochfahren !!  ###########################---
------------------------------------------------------------------------------------------
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
---------------- Rolladen eintragen  --------------------------------------------------

        fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_wohnraum3, 'open');
		fibaro:call(rs_arbeitszimmer1, 'open');
		fibaro:call(rs_arbeitszimmer2, 'open');
		fibaro:call(rs_bad1, 'open');
		fibaro:call(rs_bad1, 'open');

--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rolladen fahren hoch!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
        meldungenDebug = 0
     elseif meldungenDebug == 0 then
        debug('lightsteelblue','Rollos bleiben auf ' ..sunProtectPosition..' % ...  es sind ' ..fibaro:getValue(luxSensor, "value")..' Lux und '..endSunDelay..' min bis die Rollos rauf fahren.')
   		meldungenDebug = 1 --damit er nicht immer die gleiche meldung schreibt wie odas ueber ihm.
    end
------------------------------------------------------------------------------------------
---#################   Sonnenaufgang Werktags!!  ###############################################--
------------------------------------------------------------------------------------------
elseif werktag == 1 and ((VersetzterSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzterSonnenAufgang)
 or (VersetzterSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzterSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('gold', 'Sonnenaufgang... öffne Rolladen');
		debug('gold', 'Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);

		fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_wohnraum3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_arbeitszimmer2, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');

      debug('yellow',"Rolladen wurden geöfnet.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '1');

      if (os.date("%H:%M", os.time()) >= VersetzterSonnenAufgang) then
          debug('coral',"Es ist Tag.");
      end
------------------------------------------------------------------------------------------
---#################   Sonnenaufgang Wochenende und Feiertags!!  ###################################--
------------------------------------------------------------------------------------------
elseif werktag == 0 and ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == zeitWeFtAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('yellow','Es ist '..zeitWeFtAuf..'Uhr, Öffne Rolladen');

		fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_wohnraum3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_arbeitszimmer2, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');

      debug('yellow',"Rolladen wurden geöfnet.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '1');

	  debug('coral',"Es ist Tag.");

-----------------------------------------------------------------------------------------
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------
elseif 	(tonumber(fibaro:getValue(tempSensor, "value")) < maxTempStart and tonumber(rollershutter_runs) == 0) and 
    	((VersetzterSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzterSonnenUntergang)
 or (VersetzterSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
    then

       	debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('steelblue', 'Sonnenuntergang... schließe Rolladen sofern die Temperatur '..maxTempStart..' °C unterschreitet')
		debug('sttelblue', 'Die Temperatur beträgt '..tonumber(fibaro:getValue(tempSensor, "value"))..'°C.')
		debug('steelblue', 'Die zufällige Verzögerung beträgt ' .. min .. ' min.');
		fibaro:sleep(random*100000);

		fibaro:call(rs_arbeitszimmer1, 'close')						--ID für close ohne prüfung eines offenen Fensters
    	fibaro:call(rs_arbeitszimmer2, 'close');
    	fibaro:call(rs_bad1, 'close');
    	fibaro:call(rs_bad2, 'close');
		fibaro:call(rs_wohnraum1, 'close');

		while
			fibaro:getGlobalValue("HolidayLights") == "On" do
			fibaro:sleep(10*1000)
		end

			fibaro:call(rs_wohnraum2, 'close');

		while
			(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_wohnraum3, 'close');

		--while
		--	(tonumber(fibaro:getValue(doorID3, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
		--	fibaro:sleep(10*1000)
		--end
 		--	fibaro:call(rs_wohnraum2, 'close');

		--while
		--	(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
		--	fibaro:sleep(10*1000)
		--end
 		--	fibaro:call(rs_wohnraum1, 'close');

      debug('royalblue',"Rolladen wurden geschlossen.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '0');

      if (os.date("%H:%M", os.time()) >= VersetzterSonnenUntergang) 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
  debug('orangered', 'Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  debug('orangered', 'Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rolladen eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzterSonnenUntergang) then

       fibaro:call(rs_wohnraum1, 'open');
        fibaro:call(rs_wohnraum2, 'open');
        fibaro:call(rs_wohnraum3, 'open');
        fibaro:call(rs_arbeitszimmer1, 'open');
    	fibaro:call(rs_arbeitszimmer2, 'open');
    	fibaro:call(rs_bad1, 'open');
    	fibaro:call(rs_bad2, 'open');
        debug('coral',' Die Rolladen fahren in Grundstellung!!!')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
      else
        debug('royalblue',' Es ist Nacht.')
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      end
      ---------------------------------------------------------------------------
  debug('orangered', 'Other source.')
end
--###########################################################################################

Debug schaut eigentlich gut aus
[DEBUG] 14:57:26: 05:18 … Sonnenaufgang
[DEBUG] 14:57:26: 0 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 14:57:26: 05:18 Öffnen der Rolladen.
[DEBUG] 14:57:26: 21:50 … SonnenUntergang
[DEBUG] 14:57:26: 0 min… Zeitverzögerung Sonnenuntergang.
[DEBUG] 14:57:26: 21:50 schließen der Rolladen sofern die Temperatur 40 °C unterschreitet
[DEBUG] 14:57:26: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 14:57:26: Die Rolladen werden um 21:50 zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur 40 °C unterschreitet.
[DEBUG] 14:57:26: Rolladen-Controller startet das erste mal!

Alle Variablen auf 0 bis auf RolloUnten0Oben1 der (momentan) auf 1 steht.

Abend,

ändere mal die Werte von local minSonAuf = '0' und local minSonUnt = '0' von 0 auf 1. Die Null hat bei mir auch nicht funktioniert ! Ansonsten hoffe ich das dein ID sonst alle richtig sind! Und nimm mal alle unnötigen fibaro:call(rs_wohnraum3… raus !

Grüße

Danke für den Tip. Von 0 auf 1 hat aber leider nichts gebracht.
Meinst Du die unnötigen calls im ganzen Code oder im oberen Bereich? Da habe ich sie ja schon raus

Hi,

um den Script sauber zu halten nimm alles Fibaro:call Befehle raus die du nicht brauchtest!Ab Zeile 65! Und sag mal was im Debug Fenster steht!

Grüße

Im Debug Fenster sieht so aus:

[DEBUG] 22:04:30: 05:18 … Sonnenaufgang
[DEBUG] 22:04:30: 1 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 22:04:30: 05:19 Öffnen der Rolladen.
[DEBUG] 22:04:30: 21:51 … SonnenUntergang
[DEBUG] 22:04:30: 20 min… Zeitverzögerung Sonnenuntergang.
[DEBUG] 22:04:30: 22:11 schließen der Rolladen sofern die Temperatur 40 °C unterschreitet
[DEBUG] 22:04:30: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 22:04:30: Die Rolladen werden um 22:11 zuzüglich einer zufälligen Verzögerung geschlossen, sofern die Temperatur 40 °C unterschreitet.
[DEBUG] 22:04:30: Rolladen-Controller startet das erste mal!

Der Zeitpunkt 22:11 ist vorübergegangen ohne das die Rolladen geschlossen wurden oder eine neue Meldung im Debug erschien.