Beschattung mit Rollläden

Ich wollte mal fragen wie ihr das Thema Beschattung im Sommer mit Rollläden gelöst habt?
Aktuell habe ich eine Szene eingerichtet, wo die Rollläden bei Sonnenaufgang öffnen und mit Sonnenuntergang wieder schließen.
Das klappt ja im Winter auch ganz gut, nur im Sommer möchte ich ja nicht unbedingt, dass die Rollläden schon um 5 öffnen. Ich möchte dann aber auch nicht jede Woche die Öffnungszeiten- und Schließzeiten manuell anpassen müssen.

Wie habt ihr das gelöst?

Ich mache das teilweise uhrzeitabhängig:

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

if (fibaro:countScenes() > 1)
 then fibaro:abort()
end
 
function tempFunc()
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
--wenn Arbeitstag 6:30----------------------------------------------------------------------------------------------------------
    if (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "06:30")
	 then
        if ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6)
           and fibaro:getGlobalValue("Feiertag") == "nein" and fibaro:getGlobalValue("Urlaub") == "nein" and fibaro:getGlobalValue("Beamer") == "aus")
         then
            fibaro:call(73, "open"); --Rollos hoch
            fibaro:call(148, "open"); --Alarmanlage aus
            fibaro:call(115, "pressButton", "1"); --Küchenradio 1h an
            setTimeout(function()
             fibaro:call(115, "pressButton", "2");
            end, 3600000)
        end
--wenn Sa, So, Feiertag, Urlaub um 8:30 ----------------------------------------------------------------------------------------------------------
    elseif (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "08:30")
	 then
        if ((currentDate.wday == 1 or currentDate.wday == 7 or fibaro:getGlobalValue("Feiertag") == "ja" or fibaro:getGlobalValue("Urlaub") ~= "nein")
    		and fibaro:getGlobalValue("Beamer") == "aus")
         then 
            fibaro:call(73, "open"); --Rollos hoch
            if fibaro:getGlobalValue("Urlaub") == "anwesend"
             then fibaro:call(148, "open"); --Alarmanlage aus
            end
        end
--wenn 19:55 und dunkel----------------------------------------------------------------------------------------------------------
    elseif (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "19:55")
     then
        if (fibaro:getGlobalValue("Tageszeit") == "Nacht")
         then fibaro:call(73, "close"); --Rollos runter
        end
    ------------------------------------------------------------------------------------------------------------
    end
    setTimeout(tempFunc, 60000)
end
tempFunc()

teilweise dämmerungsabhängig (bei Abwesenheit):

--[[
%% properties
%% globals
Tageszeit
--]]

local startSource = fibaro:getSourceTrigger();

if (fibaro:getGlobalValue("Tageszeit") == "Tag")
 then
    fibaro:call(44, "turnOff"); --TV-Licht aus
    fibaro:call(10, "turnOff"); --Flurlampe aus
    fibaro:call(125, "turnOff"); --Fensterlampe aus
----------------------------------------------------
elseif (fibaro:getGlobalValue("Tageszeit") == "Nacht")
 then
    fibaro:call(52, "open"); --Markise einfahren
    if (fibaro:getGlobalValue("Urlaub") == "abwesend")
     then
        fibaro:call(73, "close"); --Rollos runter
        setTimeout(function()
         fibaro:call(73, "close");
        end, 60000)
    end
    if (fibaro:getGlobalValue("Beamer") == "aus")
     then fibaro:call(10, "turnOn"); --Flurlampe an
	end 
    if (fibaro:getGlobalValue("OLED_TV") == "an")
     then fibaro:call(44, "turnOn"); --TV-Licht an
	end
	if (fibaro:getGlobalValue("Urlaub") ~= "abwesend" and fibaro:getGlobalValue("Beamer") == "aus" and fibaro:getGlobalValue("OLED_TV") == "aus")
     then fibaro:call(125, "turnOn"); --Fensterlampe an
    end
end

und teilweise Geräteabhängig (vom Beamer):

--[[
%% properties
%% globals
Beamer
--]]

local startSource = fibaro:getSourceTrigger();

if fibaro:getGlobalValue("Beamer") == "an"
 then
  fibaro:call(46, "close");    --Leinwand
  fibaro:call(73, "close");    --Rollos WZ
  fibaro:call(10, "turnOff");  --Flurlampe
  fibaro:call(16, "turnOff");  --Designlampe
  fibaro:call(30, "turnOff");  --Licht Sitzbereich
  fibaro:call(32, "turnOff");  --Licht Essbereich
  fibaro:call(44, "turnOff");  --TV-Licht
  fibaro:call(65, "turnOn");   --Stehlampe WZ
  fibaro:call(71, "turnOff");  --Vitrinenlicht
  fibaro:call(125, "turnOff"); --Fensterlampe
  setTimeout(function()
   fibaro:call(65, "turnOff"); --Stehlampe WZ nach 60s
  end, 60000)
else
 fibaro:call(46, "open"); --Leinwand
 if fibaro:getGlobalValue("Tageszeit") == "Tag"
  then
   fibaro:call(73, "open");    --Rollos WZ
 else
  fibaro:call(10, "turnOn");   --Flurlampe
  fibaro:call(65, "turnOn");   --Stehlampe WZ
 end
end