Feiertagsprüfung im Rolladenscript funktioniert nicht

Hi,
seitdem ich auf der 4.53 bin funktioniert die Feiertagsprpüfung im Rolladenscript nicht mehr… bei mir ist ständig Wochenende :wink:

--[[
%% 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 = '-15' 				-- Verzögerungszeit in Minuten zum öffnen der Rolläden bei Sonnenaufgang.
local minSonUnt = '15' 					-- 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 = '08: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 = '22:00'    	-- Spätester Zeitpunkt, an dem die Rolläden schließen
-- local maxTempStart = 7					-- Temperatur unterhalb der die Rolladen abends schließen sollen

local startSunLux = 20000 				-- war auf 6.000 Lux
local startSunDelay = 5					-- 5 Min bis zu
local endSunLux = 3000					-- unter 1.000 Lux für auf
local endSunDelay = 20					-- 20 Min bis auf
local sunProtectPosition = 25;			-- Sonnenschutzposition für Rolladen
local sunProtectPosition1 = 0;   -- Sonnenschutzposition für Raffstores
local sunProtectLamella = 25;    -- Sonnenschutzposition Lamellen

local luxSensor = 404				-- ID des Helligkeitssensors
-- local tempSensor = 11					-- ID des Temperatursensors (Außentemperatur)
local rebootSceneID = 96	   	    	-- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0				-- Hilfsvariable um die Meldungen nicht andauernd zu wiederholen.

local rs_wohnraum1 = 50;			   -- Schiebetür Raffst.
local rs_wohnraum2 = 52;        -- Fenster Raffst.
local rs_wohnraum3 = 54;        -- Wohnzimmer Fenster Raffst.
local rs_arbeitszimmer1 = 58;   -- Büro
local rs_bad1 = 60;             -- G-WC
local rs_bad2 = 42;             -- Bad
local rs_kueche1 = 44;          -- Fenster Garage
local rs_kueche2 = 46;          -- Fenster Garten Raffst.
local rs_kueche3 = 48;          -- Tür Garten Raffst.
local rs_theo = 40;             -- Fenster Theo
local rs_flurEG = 62;           -- Fenster Flur EG
local rs_ankleide = 32          -- Fenster Ankleide
local rs_elternGarten = 36      -- Fenster Eltern Garten
local rs_karla = 38             -- Fenster Karla
local rs_elternTerrasse = 34    -- Fenster Eltern Terrasse

local doorID1 = 278;					-- ID des Türkontakts Schiebetür
local doorID2 = 338;				  -- ID Balkontür Küche
local doorID3 = 408;					-- ID Tür Terrasse Eltern (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')

--############################## 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')
			  else
                debug('steelblue',"Die Rolladen werden um "..VersetzterSonnenUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen')
              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(5);			-- 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 or currentDate.wday == 2 or currentDate.wday == 6))
	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_wohnraum2, "setValue", sunProtectPosition1); --Fenster Esszimmer
    --fibaro:call(rs_wohnraum2, "setValue2", sunProtectLamella); --Lamellen
		--fibaro:call(rs_wohnraum3, "setValue", sunProtectPosition1); --Fenster Wohnzimmer
    --fibaro:call(rs_wohnraum3, "setValue2", sunProtectLamella); --Lamellen
    fibaro:call(rs_arbeitszimmer1, "setValue", sunProtectPosition); --Fenster Büro
		fibaro:call(rs_bad1, "setValue", sunProtectPosition); -- Fenster G-WC
		-- fibaro:call(rs_bad2, "setValue", sunProtectPosition); --Fenster Bad
		fibaro:call(rs_kueche1, "setValue", sunProtectPosition); --Fenster Garage
    --fibaro:call(rs_kueche2, "setValue", sunProtectPosition1); --Fenster Garten
    --fibaro:call(rs_kueche2, "setValue2", sunProtectLamella); --Lamellen
    --fibaro:call(rs_kueche3, "setValue", sunProtectPosition1); --Tür Garten
    --fibaro:call(rs_kueche3, "setValue2", sunProtectLamella); --Lamellen
    -- fibaro:call(rs_theo, "setValue", sunProtectPosition); --Fenster Theo
    fibaro:call(rs_flurEG, "setValue", sunProtectPosition); --Fenster Flur
    --fibaro:call(rs_ankleide, "setValue", sunProtectPosition); --Fenster Ankleide
    --fibaro:call(rs_elternTerrasse, "setValue", sunProtectPosition) --Fenster Terrasse

      ---------------------------------------------------------------------------
        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_bad1, 'open');
		-- fibaro:call(rs_bad2, 'open');
		fibaro:call(rs_kueche1, 'open');
    --fibaro:call(rs_kueche2, 'open');
    --fibaro:call(rs_kueche3, 'open');
    -- fibaro:call(rs_theo, 'open');
    fibaro:call(rs_flurEG, 'open');
    --fibaro:call(rs_ankleide, "open");
    --fibaro:call(rs_elternTerrasse, "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:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_arbeitszimmer1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad2, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_kueche1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche3, 'open');
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_theo, 'open');
    --fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, 'open');
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_karla, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_elternTerrasse, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_elternGarten, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_ankleide, 'open');
    --fibaro:sleep(math.random(5000,10000));

      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:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_arbeitszimmer1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad2, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_kueche1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche3, 'open');
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_theo, 'open');
    --fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, 'open');
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_karla, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_elternTerrasse, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_elternGarten, 'open');
    --fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_ankleide, 'open');
    --fibaro:sleep(math.random(5000,10000));

      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(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')
		-- 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:sleep(math.random(5000,10000));
    fibaro:call(rs_bad1, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_bad2, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche1, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'close');
    fibaro:call(rs_kueche2,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_kueche3, 'close');
    --fibaro:call(rs_kueche3,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_wohnraum2, 'close');
    fibaro:call(rs_wohnraum2,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'close');
    fibaro:call(rs_wohnraum3,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_theo, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, "close");    -- Weihanchtsbeleuchtung "setValue" "45"
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_ankleide, 'close')
    fibaro:sleep(math.random(5000,10000))
    fibaro:call(rs_elternGarten,'close')
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_karla,'close');
    fibaro:sleep(math.random(5000,10000));

		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_wohnraum1, 'close');
      fibaro:call(rs_wohnraum1,"setValue2", '0')

		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_kueche3, 'close');
      fibaro:call(rs_kueche3, "setValue2","0")

		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_elternTerrasse, '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_bad1, 'open');
		fibaro:call(rs_bad2, 'open');
		fibaro:call(rs_kueche1, 'open');
    fibaro:call(rs_kueche2, 'open');
    fibaro:call(rs_kueche3, 'open');
    fibaro:call(rs_theo, 'open');
    fibaro:call(rs_flurEG, 'open');
    fibaro:call(rs_ankleide, "open");
    fibaro:call(rs_elternTerrasse, "open");
    fibaro:call(rs_elternGarten, "open");
    fibaro:call(rs_karla, "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] 03:03:12: 07:40 … Sonnenaufgang
[DEBUG] 03:03:12: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 03:03:12: 07:25 Öffnen der Rolladen.
[DEBUG] 03:03:12: 17:55 … SonnenUntergang
[DEBUG] 03:03:12: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 03:03:12: 18:10 schließen der Rolladen
[DEBUG] 03:03:12: Die Rolladen werden um 07:25 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 03:03:12: Die Rolladen werden um 18:10 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 03:03:12: Rolladen-Controller startet das erste mal!
[DEBUG] 08:30:20: Werktag = 0
[DEBUG] 08:30:20: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:20: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:31:41: Rolladen wurden geöfnet.
[DEBUG] 08:31:41: Es ist Tag.
[DEBUG] 18:10:55: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 18:10:55: Sonnenuntergang… schließe Rolladen
[DEBUG] 18:10:55: Die zufällige Verzögerung beträgt 5 min.
[DEBUG] 18:17:42: Rolladen wurden geschlossen.
[DEBUG] 18:17:42: Es ist Nacht.
[DEBUG] 02:00:53: Neustart der Szene!
[DEBUG] 02:01:53: 07:39 … Sonnenaufgang
[DEBUG] 02:01:53: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:53: 07:24 Öffnen der Rolladen.
[DEBUG] 02:01:53: 17:56 … SonnenUntergang
[DEBUG] 02:01:53: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:53: 18:11 schließen der Rolladen
[DEBUG] 02:01:53: Die Rolladen werden um 07:24 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:53: Die Rolladen werden um 18:11 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:53: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:53: Es ist Nacht.
[DEBUG] 02:01:53: Other source.
[DEBUG] 08:30:02: Werktag = 0
[DEBUG] 08:30:02: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:02: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:31:13: Rolladen wurden geöfnet.
[DEBUG] 08:31:13: Es ist Tag.
[DEBUG] 18:11:27: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 18:11:27: Sonnenuntergang… schließe Rolladen
[DEBUG] 18:11:27: Die zufällige Verzögerung beträgt 1 min.
[DEBUG] 18:14:41: Rolladen wurden geschlossen.
[DEBUG] 18:14:41: Es ist Nacht.
[DEBUG] 02:00:52: Neustart der Szene!
[DEBUG] 02:01:52: 07:37 … Sonnenaufgang
[DEBUG] 02:01:52: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:52: 07:22 Öffnen der Rolladen.
[DEBUG] 02:01:52: 17:58 … SonnenUntergang
[DEBUG] 02:01:52: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:52: 18:13 schließen der Rolladen
[DEBUG] 02:01:52: Die Rolladen werden um 07:22 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:52: Die Rolladen werden um 18:13 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:52: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:52: Es ist Nacht.
[DEBUG] 02:01:53: Other source.
[DEBUG] 08:30:02: Werktag = 0
[DEBUG] 08:30:02: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:02: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:31:15: Rolladen wurden geöfnet.
[DEBUG] 08:31:15: Es ist Tag.
[DEBUG] 18:13:29: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 18:13:29: Sonnenuntergang… schließe Rolladen
[DEBUG] 18:13:29: Die zufällige Verzögerung beträgt 3 min.
[DEBUG] 18:18:28: Rolladen wurden geschlossen.
[DEBUG] 18:18:28: Es ist Nacht.
[DEBUG] 02:00:39: Neustart der Szene!
[DEBUG] 02:01:39: 07:35 … Sonnenaufgang
[DEBUG] 02:01:39: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:39: 07:20 Öffnen der Rolladen.
[DEBUG] 02:01:39: 18:00 … SonnenUntergang
[DEBUG] 02:01:39: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:39: 18:15 schließen der Rolladen
[DEBUG] 02:01:39: Die Rolladen werden um 07:20 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:39: Die Rolladen werden um 18:15 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:39: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:39: Es ist Nacht.
[DEBUG] 02:01:39: Other source.
[DEBUG] 08:30:48: Werktag = 0
[DEBUG] 08:30:48: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:48: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:32:04: Rolladen wurden geöfnet.
[DEBUG] 08:32:04: Es ist Tag.
[DEBUG] 18:15:18: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 18:15:18: Sonnenuntergang… schließe Rolladen
[DEBUG] 18:15:18: Die zufällige Verzögerung beträgt 8 min.
[DEBUG] 18:25:16: Rolladen wurden geschlossen.
[DEBUG] 18:25:17: Es ist Nacht.
[DEBUG] 02:00:28: Neustart der Szene!
[DEBUG] 02:01:28: 07:33 … Sonnenaufgang
[DEBUG] 02:01:28: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:28: 07:18 Öffnen der Rolladen.
[DEBUG] 02:01:28: 18:02 … SonnenUntergang
[DEBUG] 02:01:28: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:28: 18:17 schließen der Rolladen
[DEBUG] 02:01:28: Die Rolladen werden um 07:18 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:28: Die Rolladen werden um 18:17 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:28: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:28: Es ist Nacht.
[DEBUG] 02:01:28: Other source.
[DEBUG] 08:30:37: Werktag = 0
[DEBUG] 08:30:37: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:37: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:31:57: Rolladen wurden geöfnet.
[DEBUG] 08:31:57: Es ist Tag.

hat sich da was geändert an der Prüfung? der Neustart der Scene funktioniert, aber Werktag ist noch immer auf 0…
nur wenn ich die Scene manuell neustarte erkennt er einmalig den Wochentag, ab dem nächsten Tag bleibt er dann aber wieder hängen…

danke
Mit freundlichen Grüßen
bademeister

hi @bademeister , der Feiertag kommt ja von einem anderen Programm bzw. von deiner Globalen Variable “Feiertag_heute” wird es von da richtig übergeben ? Grüße Sven

Hi Sven,
ja de Feiertagsvariablen funktionieren. dort wird immer korrekt angezeigt.
zumal ich daran ja auch nichts geändert habe.
dachte zuerst es liegt am Neustart der Scene nachts um 2 Uhr.
vor dem Update auf die 4.53 wurde dann immer die Feiertagsvariable geprüft, jetzt anscheinend nicht mehr…

mfg

Hi,
der Fehler liegt wohl am Feiertagsscript welches nicht korrekt funktioniert. der Pfingstmontag wurde im Feiertagsscript nicht als Feiertag erkannt…

--[[
%% autostart
%% properties
%% globals
--]]

-- ************************************************************************
-- FEIERTAGE-SCRIPT
-- ************************************************************************

-- Das Skript berechnet die Feiertage in Deutschland im aktuellen Jahr und prüft,
-- ob heute oder morgen ein Feiertag ist und hinterlegt das Ergebnis in den
-- Systemvariablen "Feiertag_heute" und "Feiertag_morgen".

-- (c) Simon Betschmann (01-2015)
-- Version: 1.0
-- - Basierend auf einer Idee von Peter Beck (01-2011)
-- Version: 1.1
-- - Erweiterung für Deutschland und Bundeländer von Udo Haß
-- Version: 1.2
-- - Routine zur Berechnung der Osterfeiertage und Schaltjahr vollständig ersetzt.
-- - Quelle der Berechnung der Osterfeiertage teilweise von http://wiki.contextgarden.net/Calendar_script
-- - Feiertage, welche auf Ostern basieren im Aray korrigiert
-- - Änderungen von Udo Haß 
-- Version: 1.3 (Manuel Hoefs)
-- - Berechnung für Fronleichnam hinzugefügt (abhängig von Pfingsten)
-- - Berechnung für Buß- und Bettag hinzugefügt (immer der vorletzte Mittwoch vor dem 1. Advent)
-- - Erweiterung für Wochenenden
-- - Variable für tägliches Ausführen ergänzt
-- Version: 1.4 (Manuel Hoefs)
-- - Anpassung der Osterberechnung (temp fix)
-- Version: 1.5 (Manuel Hoefs April 2018)
-- - kompletter Neuberechnung der Feiertage abhängig von Ostern
-- - Konfigurationserweiterung um Feiertage des kompletten Jahres auszugeben

-- Es werden folgende Systemvariablen benötigt:
-- Feiertag_heute
-- Feiertag_morgen

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- EINSTELLUNGEN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- Bitte nur in dieser Sektion Einstellungen vornehmen
debuging = true -- TOGGLE DEBUGING (true|false)
Land = "DE"  -- LAND angeben (DE, CH)
Bundesland = "RP" -- Bundesland eingeben (BW,BY,BE,BB,HB,HH,HE,MV,NI,NW,RP,SL,SN,ST,SH,TH) -- Kürzel http://www.schnelle-online.info/Feiertage-Deutschland.html
katholische_Gemeinde = false -- (true|false) spezielle Feiertage für katholische Gemeinden (München, Ingolstadt, Rosenheim)
Kanton = "" -- Kanton angeben für kantonale Feiertage (ZH, AG,...) -- leer lassen, um Funktion auszuschalten
scenerun = "00:30" -- SZENE JEDEN TAG AUSFÜHREN UM
wochenende = true -- (true|false) Wochenenden werden ebenfalls als Feiertag/Frei erkannt
showholidays = true -- Liste alle Feiertage im Jahr (true|false)

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- DEBUG
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Grundfunktion: Debug("red", "Nachrichtentext")
Debug = function(color, message)
	if (debuging) then
		fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
	end
end

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- FEIERTAGE BERECHNEN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fibaro:debug("start instanz " .. os.date("%c"));

function FeiertageFunc()
-- Notwendige Variablen
	local Datum = os.date("%d.%m.") -- heutiges Datum (ohne Jahr)
	local Jahr = os.date("%Y") -- Das aktuelle Jahr ermitteln
	local WeekDate = os.date("*t").wday -- Den aktuellen Wochentag ermitteln

-- Berechne Ostersonntag, basiert auf Meeus/Jones/Butcher
	local a = math.fmod(Jahr,19)
	local b = math.floor(Jahr / 100)
	local c = math.fmod(Jahr,100)
	local d = math.floor(b / 4)
	local e = math.fmod(b,4)
	local f = math.floor((b + 8) / 25) 
	local g = math.floor((b - f + 1) / 3)
	local h = math.fmod((19 * a + b - d - g + 15),30)
	local i = math.floor(c / 4)
	local k = math.fmod(c,4)
	local L = math.fmod((32 + 2 * e + 2 * i - h - k),7)
	local m = math.floor((a + 11 * h + 22 * L) / 451)
	local oMonat = math.floor((h + L - 7 * m + 114) / 31)
	local oTag = math.fmod((h + L - 7 * m + 114),31) + 1

-- Das Ergebnis in Variable oDatum hinterlegen
	--oDatum -- Das komplette Datum vom Ostersonntag
	if (oTag < 10) then
		oDatum = "0" .. oTag .. ".0" .. oMonat .. "." .. Jahr
	else
		oDatum = oTag .. ".0" .. oMonat .. "." .. Jahr
	end
	Debug("gray", "Osterdatum: ".. oDatum)
	Debug("gray", "Datum: ".. Datum)

-- Berechne Buß- und Bettag
	--bubTag	
	local wTag = os.time({year=Jahr, month=12, day=25})
	local wTable = os.date("*t", wTag)
	if (wTable.wday == 1) then
    	bubTag = 16
    else
    	bubTag = 23 - wTable.wday + 1
   	end

-- Ermitteln, wieviele Tage der Februar im aktuellen Jahr hat
	local zahl4 = Jahr % 4
	local zahl100 = Jahr % 100
	local zahl400 = Jahr % 400
 
	--mTage -- Variable für die interne Berechnung
	if ((zahl4 == 0) and (zahl100 ~= 0)) or (zahl400 == 0) then -- Ein Schaltjahr -> Feb. = 29 Tage
		mTage = {31,29,31,30,31,30,31,31,30,31,30,31} -- Anzahl der Tage im Monat Jan.-Dez.
		Debug("gray", Jahr.. " ist ein Schaltjahr.")
	else
		mTage = {31,28,31,30,31,30,31,31,30,31,30,31} -- Anzahl der Tage im Monat Jan.-Dez.
		Debug("gray", Jahr.. " ist kein Schaltjahr.")
	end

-- Feiertage mit dem heutigen & morgigen Datum vergleichen und Ergebnis
-- in den Variablen "Feiertag_heute" bzw. "Feiertag_morgen" speichern
	local zaehler = 1
	local feiertagliste = ""
	while zaehler < 3 do
		local Feiertag = 0

		if (wochenende) then
			if (WeekDate == 1 or WeekDate == 7) then
				Feiertag = 1
				Debug("gray", "Wochentag " .. WeekDate .. " ist ein Wochenendtag.")
			else
				Debug("gray", "Wochentag " .. WeekDate .. " ist KEIN Wochenendtag.")
			end
		end

		if (Land == "DE") then -- Bundeseinheitliche Feiertage in Deutschland
			if (Datum == "01.01.") then Feiertag = 1 end -- Neujahr
			if (Datum == "01.05.") then Feiertag = 1 end -- Tag der Arbeit
			if (Datum == "03.10.") then Feiertag = 1 end -- Tag der Deutschen Einheit
			if (Datum == "31.10.") and (Jahr == "2017") then Feiertag = 1 end -- Reformationstag (nur 2017 Bundeseinheitlich!)
			if (Datum == "25.12.") then Feiertag = 1 end -- 1. Weihnachtstag
			if (Datum == "26.12.") then Feiertag = 1 end -- 2. Weihnachtstag
			if (showholidays == true) and (zaehler == 1) then
				fibaro:debug("Liste der Feiertage für "..Jahr)
				fibaro:debug("01.01. Neujahr")
				fibaro:debug("01.05. Tag der Arbeit")
				fibaro:debug("03.10. Tag der Deutschen Einheit")
				fibaro:debug("25.12. 1. Weihnachtstag")
				fibaro:debug("26.12. 2. Weihnachtstag")
			end

			if Bundesland =="BW" then  -- spezifische Feiertage für Baden-Würtenberg
				if (Datum == "06.01.") then Feiertag = 1 end -- Heilige Drei Könige
				if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("06.01. Heilige Drei Könige")
					fibaro:debug("01.11. Allerheiligen")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}
			end

			if Bundesland =="BY" then  -- spezifische Feiertage für Bayern
				if (Datum == "06.01.") then Feiertag = 1 end -- Heilige Drei Könige
				if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("06.01. Heilige Drei Könige")
					fibaro:debug("01.11. Allerheiligen")
				end
				if (katholische_Gemeinde) then
					if (Datum == "15.08.") then Feiertag = 1 end -- Mariä Himmelfahrt
					if (showholidays == true) and (zaehler == 1) then
						fibaro:debug("15.08. Mariä Himmelfahrt")
					end
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}
			end

			if Bundesland =="BE" then  -- spezifische Feiertage für Berlin
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="BB" then  -- spezifische Feiertage für Brandenburg
				if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("31.10. Reformationstag")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostersonntag, Ostermontag, Christi Himmelfahrt, Pfingstsonntag, Pfingstmontag
				feiertage = {-2,0,1,39,48,49}
			end

			if Bundesland =="HB" then  -- spezifische Feiertage für Bremen
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="HH" then  -- spezifische Feiertage für Hamburg
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="HE" then  -- spezifische Feiertage für Hessen
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}
			end

			if Bundesland =="MV" then  -- spezifische Feiertage für Mecklenburg-Vorpommern
				if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("31.10. Reformationstag")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="NI" then  -- spezifische Feiertage für Niedersachsen
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end
            
			if Bundesland =="NW" then  -- spezifische Feiertage für NRW
				if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("01.11. Allerheiligen")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}			
			end

			if Bundesland =="RP" then  -- spezifische Feiertage für Rheinland-Pfalz
				if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("01.11. Allerheiligen")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}
			end

			if Bundesland =="SL" then  -- spezifische Feiertage für Saarland
				if (Datum == "15.08.") then Feiertag = 1 end -- Mariä Himmelfahrt
				if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("15.08. Mariä Himmelfahrt")
					fibaro:debug("01.11. Allerheiligen")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag, Fronleichnam
				feiertage = {-2,1,39,49,60}
			end

			if Bundesland =="SN" then  -- spezifische Feiertage für Sachsen
				if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
				if (Datum == bubTag .. ".11.") then Feiertag = 1 end -- Buß- und Bettag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("31.10. Reformationstag")
					fibaro:debug(bubTag ..".11. Buß- und Bettag")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="ST" then  -- spezifische Feiertage für Sachsen-Anhalt
				if (Datum == "06.01.") then Feiertag = 1 end -- Heilige Drei Könige
				if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("06.01. Heilige Drei Könige")
					fibaro:debug("31.10. Reformationstag")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="SH" then  -- spezifische Feiertage für Schleswig-Holstein
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end

			if Bundesland =="TH" then  -- spezifische Feiertage für Thüringen
				if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("31.10. Reformationstag")
				end
				-- Aray mit Differenztagen zum Ostersonntag:
				-- Karfreitag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
				feiertage = {-2,1,39,49}
			end
		end

		if (Land == "CH") then -- FESTE FEIERTAGE IN DER GANZEN SCHWEIZ
			if (Datum == "01.01.") then Feiertag = 1 end -- Neujahr
			if (Datum == "01.08.") then Feiertag = 1 end -- Nationalfeiertag
			if (Datum == "25.12.") then Feiertag = 1 end -- Weihnachten
			if (Datum == "26.12.") then Feiertag = 1 end -- Stephanstag
			if (showholidays == true) and (zaehler == 1) then
				fibaro:debug("01.01. Neujahr")
				fibaro:debug("01.08. Nationalfeiertag")
				fibaro:debug("25.12. Weihnachten")
				fibaro:debug("26.12. Stephanstag")
			end

			if (Kanton == "ZH") then -- FEIERTAGE IM KANTON ZÜRICH
				if (Datum == "01.05.") then Feiertag = 1 end -- Tag der Arbeit
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("01.05. Tag der Arbeit")
				end
			end

			if (Kanton == "AG") then -- FEIERTAGE IM KANTON AARGAU
				if (Datum == "02.01.") then Feiertag = 1 end -- Berchtoldstag
				if (showholidays == true) and (zaehler == 1) then
					fibaro:debug("02.01. Berchtoldstag")
				end
			end

		-- VARIABLE FEIERTAG IN DER GANZEN SCHWEIZ
			-- Aray mit Differenztagen zum oTag:
			-- Ostermontag, Karfreitag, Auffahrt, Pfingstmontag
			feiertage = {-2,1,39,49}
		end
		
-- VARIABLE FEIERTAGE BASIEREND AUF OSTERN: DATEN BERECHNEN
		--calcTag -- Variable für die interne Berechnung
		--calcMonat -- Variable für die interne Berechnung
		--zahl -- Variable für die interne Berechnung
		--fDatum -- Feiertagsdatum
		--fDiff -- Anzahl der Tage vom Ostersonntag entfernt
		--Schleife -- Für die Berechnungen in der while-Schleife notwendig    

		oTage = mTage[tonumber(oMonat)] -- Anzahl Tage im Ostermonat
		Debug("grey", "Anzahl Tage im Ostermonat: "..oTage)
    
		for x in next, feiertage do
			Debug("red", "Feiertag: "..feiertage[x])

			fDiff = oTag + feiertage[x]-- Differenztage zum Referenztag hinzurechnen
			Debug("grey", "oTag: "..oTag..", fDiff: "..fDiff..", index: "..x)
			if (fDiff < 1) then
				calcTag = mTage[tonumber(oMonat-1)]+fDiff
				calcMonat = oMonat-1
			elseif (fDiff <= oTage) then
				calcTag = fDiff
				calcMonat = oMonat
			else
				local Schleife = true
				local count = 0
				while (Schleife) do
					local zahl = fDiff - mTage[tonumber(oMonat+count)]
					if (zahl > mTage[tonumber(oMonat+count+1)]) then
						count = count + 1
						fDiff = zahl
						Debug("grey", "Ausserhalb des Referenzmonats > Schleife durchlaufen.")
					else
						calcTag = zahl
						calcMonat = oMonat+count+1
						Schleife = false
						Debug("grey", "Innerhalb des Referenzmonats > Schleife nicht durchlaufen.")
					end
				end
			end

-- Datum des Feiertags berechnen
			Debug("grey", "Datum des Feiertags berechnen...")
			if (calcTag < 10) then
				fDatum = "0" .. calcTag .. ".0"..calcMonat.. "."
			else
				fDatum = calcTag .. ".0"..calcMonat.. "."
			end
			Debug("white", "Feiertag: "..fDatum)
			if (showholidays == true) and (zaehler == 1) then
				local feiertag = ""
				if (feiertage[x] == -2) then
					feiertag = "Karfeitag"
				elseif (feiertage[x] == 0) then
					feiertag = "Ostersonntag"
				elseif (feiertage[x] == 1) then
					feiertag = "Ostermontag"
				elseif (feiertage[x] == 39) then
					feiertag = "Christi Himmelfahrt"
				elseif (feiertage[x] == 48) then
					feiertag = "Pfingstsonntag"
				elseif (feiertage[x] == 49) then
					feiertag = "Pfingstmontag"
				elseif (feiertage[x] == 60) then
					feiertag = "Fronleichnam"
				end
				
				fibaro:debug(fDatum .." ".. feiertag)
			end

-- Prüfen, ob Datum heute/morgen mit Feiertag übereinstimmt
			if (Datum == fDatum) then
				Feiertag = 1
				fibaro:debug("Feiertag ("..fDatum..") gefunden.")
			end
		end

-- VARIABLEN SETZTEN
		if zaehler == 1 then
-- 1. Durchgang: Datum heute mit den Feiertagen prüfen
			Debug("grey", "1. Durchgang: Datum heute="..Datum..", Feiertag="..Feiertag)
			fibaro:setGlobal("Feiertag_heute", Feiertag)
			zaehler = 2
			Datum = os.date("%d.%m.", os.time()+24*60*60) -- Datum auf morgen setzen
			WeekDate = WeekDate + 1
		else
-- 2. Durchgang: Datum morgen mit den Feiertagen prüfen
			if (wochenende) then
				if (WeekDate > 6) then
					Feiertag = 1
				end
			end
			Debug("grey", "2. Durchgang: Datum morgen="..Datum..", Feiertag="..Feiertag)
			fibaro:setGlobal("Feiertag_morgen", Feiertag)
			zaehler = 3
		end
	end

-- ERGEBNIS AUSGEBEN
	if fibaro:getGlobal("Feiertag_heute") == '0' then
		if (wochenende) then
			fibaro:debug(os.date("%c") .. " - Heute ist kein Feiertag / Wochenende.")
		else
			fibaro:debug(os.date("%c") .. " - Heute ist kein Feiertag.")
		end
	else
		if (wochenende) then
			fibaro:debug(os.date("%c") .. " - Heute ist ein Feiertag / Wochenende. Variable gesetzt!")
		else
			fibaro:debug(os.date("%c") .. " - Heute ist ein Feiertag. Variable gesetzt!")
		end
	end
	if fibaro:getGlobal("Feiertag_morgen") == '0' then
		if (wochenende) then
			fibaro:debug(os.date("%c") .. " - Morgen ist kein Feiertag / Wochenende.")
		else
			fibaro:debug(os.date("%c") .. " - Morgen ist kein Feiertag.")
		end
	else
		if (wochenende) then
			fibaro:debug(os.date("%c") .. " - Morgen ist ein Feiertag / Wochenende. Variable gesetzt!")
		else
			fibaro:debug(os.date("%c") .. " - Morgen ist ein Feiertag. Variable gesetzt!")
		end
	end
end

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- SZENE JEDEN TAG AUSFÜHREN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
	local currentDate = os.date("*t");
	local startSource = fibaro:getSourceTrigger();
	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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == scenerun) )) then
		FeiertageFunc()
	end
	setTimeout(tempFunc, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
	tempFunc()
else
	local currentDate = os.date("*t");
	local startSource = fibaro:getSourceTrigger();
	if (startSource["type"] == "other") then
		FeiertageFunc()
	end
end

das script ist hier aus dem Forum.
danke
Mit freundlichen Grüßen
bademeister

2019-06-12_13-37-33.jpg

2019-06-09_20-34-59.jpg