Automatische Jalousie Steuerung bei Sonne

Hallo,

ich hatte vor einigen Monaten bereits ein Script entwickelt was je nach Temperatur und Sonneneinstrahlung meine Fenster automatisch beschattet. Voraussetzung ist natürlich ein Außensensor der die aktuelle Temperatur und den Lux Wert sendet (z.b. Fibaro Motion Sensor)

Mit dem Script fahren die Jalousien/ Rolladen automatisch nach einer bestimmten Zeit runter wenn die Grenzwerte erreicht sind (Es warm und Sonnig ist) und auch automatisch wieder hoch wenn die Grenzwerte z.b. 15 Minuten unterschritten sind. Genau erklärt habe ich das ganze im Video: https://www.youtube.com/watch?v=NmjUgMiUARA&index=9&list=PLYnn5RwiVU52sc3lhA_deao4CwLgfjemR

--[[
%% properties
491 value
492 value
%% events
%% globals
--]]
 
-- 491 ersetzen durch eure ID des Temperatur sensors der außen monitiert ist
-- 492 ersetzen durch eure ID des Lux sensors der außen monitiert ist
-- Bitte auch ganze oben im Script bei properties ersetzten!!!!
 
local temp_outside = tonumber(fibaro:getValue(491, 'value'));
local lux_outside = tonumber(fibaro:getValue(492, 'value'));
 
local timestamp = os.time();
 
-- Die 3 Variablen könnt ihr nennen wie ihr wollt -> Wichtig nur unter Steuerungen -> Variablensteuerungen mit dem Wert 0 anlegen
 
local name_global_var_open = 'wg_sunc_open';  -- Kann vom Namen frei vergeben werden
local name_global_var_close = 'wg_sunc_close'; -- Kann vom Namen frei vergeben werden
local name_global_var_active = 'wg_sunc_active'; -- 0 = Script ist aktiv 1 = Script ist inaktiv
 
 
 
-- diese Werte müsst ihr an eure bedürfnisse anpassen
 
local close_temp = 24; -- ab wieviel Grad sollen die Rolladen geschlossen werden
local close_lux = 4500; -- ab wieviel Lux sollen die Rolladen geschlossen werden
local close_time = 120; -- ab wieviel sekunden sollen die Rolladen geschlossen werden
local open_time = 1200; -- ab wieviel Sekunden sollen die Rolladen wieder geöffnet werden
local hour_start = 08;  -- ab welcher uhrzeit soll das script laufen
local hour_end   = 18;  -- bis wieviel uhr soll das script laufen
 
 
-- hier setzte ich den Lux Wert runter weil ab 17 Uhr die Sonne nichtmehr so stark ist und meine normalen grenzwerte nicht rechen würden
if(tonumber(os.date("%H", timestamp)) >= 17)
then
  close_lux = 2000; -- ab wieviel Lux sollen die Rolladen geschlossen werden
end
 
-- ab hier müsst ihr erst wieder ab ca. Zeile 62 (grenzwerte erreicht! z.b. Jalosie runter) bzw. 115 (grenzwerte nicht erreicht! z.b. Jalosie Hoch) anpassungen vornehmen
 
local suncontrol_open = tonumber(fibaro:getGlobalValue(name_global_var_open));
local suncontrol_close = tonumber(fibaro:getGlobalValue(name_global_var_close));
 
 
  fibaro:debug('Temperatur Aktuell: '..temp_outside..'');
  fibaro:debug('Lux Aktuell: '..lux_outside..'');
 
if(tonumber(os.date("%H", timestamp)) >= hour_start and tonumber(os.date("%H", timestamp)) <= hour_end  and fibaro:getGlobal(name_global_var_active) == '0')
then
   
 
  if(temp_outside >= close_temp and lux_outside >= close_lux)
  then
   
    fibaro:setGlobal(name_global_var_close, timestamp);
 
   
    fibaro:debug('Es ist wärmer als grenzwert & Lux Wert wurde erreicht Rolladen könnten geschlossen werden!');
   
    if(timestamp-suncontrol_open >= close_time)
    then
     
        -- ab hier regeln für rolladen wenn wirklich warm!
        fibaro:debug('Es scheint wirklich Sonnig zu sein grenzwerte wurden seit '..close_time..' Sekunden nicht unterschritten');
 
 
        -- Wintergarten vorne schließen wenn geöffnet und vor 15 Uhr
        if(tonumber(fibaro:getValue(375,'value'))  >= 10 and tonumber(os.date("%H", timestamp)) <= 15)
        then
          fibaro:debug('Rolladen Wintergarten vorne 375 wurde geschlossen');
          fibaro:call(375, "close");
        end
     
        -- Wintergarten vorne öffnen wenn geschlossen geschlossen und nach 15 Uhr
        if(tonumber(fibaro:getValue(375,'value'))  <= 80 and tonumber(os.date("%H", timestamp)) >= 16)
        then
          fibaro:debug('Rolladen Wintergarten vorne 375 wurde geöffnet');
          fibaro:call(375, "open");
        end
     
 
        -- Wintergarten rechts -> erst ab 12 Uhr und nur bis 18 Uhr öffnen
        if(tonumber(os.date("%H", timestamp)) >= 12 and tonumber(os.date("%H", timestamp)) <= 18 and tonumber(fibaro:getValue(338,'value'))  >= 10)
        then
          fibaro:debug('Rolladen 338 wurde geschlossen');
          fibaro:call(338, "close");
        end
     
        -- Wintergarten rechts -> ab 18 Uhr wieder öffnen
        if(tonumber(os.date("%H", timestamp)) >= 18 and tonumber(fibaro:getValue(338,'value'))  <= 80)
        then
          fibaro:debug('Rolladen 338 Wintergarten Rechts wurde geschlossen');
          fibaro:call(338, "open");
        end  
     
     
        -- bis hier regeln für rolladen wenn wirklich warm !
 
     
 
    else
      fibaro:debug('Zeit zum schließen ist noch nicht gekommen! Es sind erst '..timestamp-suncontrol_open..' Sekunden');
    end
 
 
  else
    fibaro:setGlobal(name_global_var_open, timestamp);
    fibaro:debug('Alles okay oder schauen das Rolladen hochkönnen');
 
    if(timestamp-suncontrol_close >= open_time)
    then
     
      fibaro:debug('Okay seit '..open_time..' Sekunden wurden grenzwerte nicht erreicht mache Rolladen hoch');
     
              -- ab hier regeln für rolladen wenn werte wieder okay sind!
 
                fibaro:call(375, "open");
                fibaro:call(338, "open");
 
 
              -- bis hier regeln für rolladen wenn werte wieder okay sind!
     
 
    else
      fibaro:debug('Es ist erst seit '..timestamp-suncontrol_close..' Sekunden keine Sonne ');
    end
 
  end
else
  fibaro:debug('Nichts machen da es nicht im Prüfzeitraum liegt oder das Script ist nicht aktiv -> '..name_global_var_active..' ist 1 Aktueller wert '..fibaro:getGlobal(name_global_var_active)..'');
end

Liebe Grüße,
Nico Bode

Hallo Nico,

Hab ein sehr ähnliches Skrip bei mir im Einsatz, welches ebenfalls nach Lux/Temp hoch und runterfährt. Allerdings hab ich ein Problem: Ich möchte gern bei manuellem hochfahren der Jalousien/Rolläden eine Pause der Steuerung für ca 45 Min einbauen (falls die Kinder doch auf die Idee kommen im eigenen Zimmer zu spielen und dann die Jalousie hochfahren). Da ich keinen Bewegungsmelder in den Kinderzimmern habe müsste ich es irgendwie dadurch lösen, wenn der Jalousieschalter manuell betätigt wird. Ich hab keine Taster sondern Kippschalter für die Jalousien.
Allerdings fehlt mir eine Idee, an was ich durch LUA/ein Ereignis erkennen kann, das der Schalter betätigt wird. Das einzige was mir eingefallen ist Energieverbrauch.
Hast du da ggf. eine Lösung / eine Idee?

Schöne Grüße

HI,

ich hab bei mir keine Pause , sonder ein generelles Stopp nach manuellen Hochfahren eingebaut.

Realisiert über eine globale Variable, die beim automatischen Runterfahren auf 1 gesetzt wird.
Das Runterfahren Script läuft nur dann, wenn diese GV auf 0 steht.

Für eine zeitliche Pause kannst Du diese GV in einem zweiten Script nach einer bestimmten Zeit (deine 45 Minuten) wieder auf 0 setzen.

VG Hoggle

Hallo,

wie man eine Automatik pausiert habe ich letzte Woche in einem Video mal erklärt: https://www.intelligentes-haus.de/2018/08/09/die-perfekte-rollladenautomatik-ohne-lua-mit-fibaro-home-center-lite-home-center-2-teil-1/

Zwar komplett ohne Lua -> aber die Logik ist die gleiche :wink:

In Teil 2 der Mitte der Woche Online kommt erkläre ich auch wie man ein Script z.b. für 1 Stunde pausiert und dann automatisch wieder aktiviert.

Lg,
nico

H,

ich hab jetzt dein Sript auch ausprobiert da es doch vor ellem mit der Timestamp-Variante seh viel “smarter” ist als mein eingesetztes. Ich hab bei mir allerdings im Script 1 Rolladen und 2 Raffstores mit einstellbaren Lamellen. Wenn das Script dann jede Minute gestartet und die Grenzwerte nicht erreicht sind höre ich immer ein “Schalt”-Geräusch in den Fibaro Roller Shuttern und die Raffstores werden kurz angefahren/angestoßen und dann wieder hochgefahren. Beim Rolladen ist nur das Schalt-Geräusch, der wird aber nicht angefahren. Hab es bei den Raffstores schon versucht, im Rollershuttermodul Parameter 13 “Set lamellas back to previous position” auf Wert 1 umzustellen. Allerdings stellen sich dann die Lamellen nicht mehr auf 30 % ein sondern schließen ganz. Mein Script sieht wie folgt aus und ich setzte auch einen Cronjob-Script ein:


--[[
%% properties
50 value
60 value
%% events
%% globals
--]]
 

local temp_outside = tonumber(fibaro:getValue(50, 'value'));
local lux_outside = tonumber(fibaro:getValue(60, 'value'));
 
local timestamp = os.time();
 
-- Die 3 Variablen könnt ihr nennen wie ihr wollt -> Wichtig nur unter Steuerungen -> Variablensteuerungen mit dem Wert 0 anlegen
 
local name_global_var_open = 'wg_sunc_open';  -- Kann vom Namen frei vergeben werden
local name_global_var_close = 'wg_sunc_close'; -- Kann vom Namen frei vergeben werden
local name_global_var_active = 'wg_sunc_active'; -- 0 = Script ist aktiv 1 = Script ist inaktiv
 
 
 
-- diese Werte müsst ihr an eure bedürfnisse anpassen
 
local close_temp = 24; -- ab wieviel Grad sollen die Rolladen geschlossen werden
local close_lux = 20000; -- ab wieviel Lux sollen die Rolladen geschlossen werden
local close_time = 120; -- ab wieviel sekunden sollen die Rolladen geschlossen werden
local open_time = 1800; -- ab wieviel Sekunden sollen die Rolladen wieder geöffnet werden
local hour_start = 05;  -- ab welcher uhrzeit soll das script laufen
local hour_end   = 17;  -- bis wieviel uhr soll das script laufen
 
 
-- ab hier müsst ihr erst wieder ab ca. Zeile 62 (grenzwerte erreicht! z.b. Jalosie runter) bzw. 115 (grenzwerte nicht erreicht! z.b. Jalosie Hoch) anpassungen vornehmen
 
local suncontrol_open = tonumber(fibaro:getGlobalValue(name_global_var_open));
local suncontrol_close = tonumber(fibaro:getGlobalValue(name_global_var_close));
 
 
  fibaro:debug('Temperatur Aktuell: '..temp_outside..'');
  fibaro:debug('Lux Aktuell: '..lux_outside..'');
 
if(tonumber(os.date("%H", timestamp)) >= hour_start and tonumber(os.date("%H", timestamp)) <= hour_end  and fibaro:getGlobal(name_global_var_active) == '0')
then
   
 
  if(temp_outside >= close_temp or lux_outside >= close_lux)
  then
   
    fibaro:setGlobal(name_global_var_close, timestamp);
 
   
    fibaro:debug('Es ist wärmer als grenzwert & Lux Wert wurde erreicht Rolladen könnten geschlossen werden!');
   
    if(timestamp-suncontrol_open >= close_time)
    then
     
        -- ab hier regeln für rolladen wenn wirklich warm!
        fibaro:debug('Es scheint wirklich Sonnig zu sein grenzwerte wurden seit '..close_time..' Sekunden nicht unterschritten');
 
 
        -- Küche vorne schließen wenn geöffnet und vor 18 Uhr
        if(tonumber(fibaro:getValue(29,'value'))  >= 10  and tonumber(os.date("%H", timestamp)) <= 17 and tonumber(fibaro:getValue(223, "value")) == 0) -- Türsensor K2 
        then
          fibaro:debug('Rolladen K2 Küche wurde geschlossen');
          fibaro:call(29, "setValue", "10");
        end
     
        if(tonumber(fibaro:getValue(8,'value'))  >= 10  and tonumber(os.date("%H", timestamp)) <= 17 and tonumber(fibaro:getValue(171, "value")) == 0) -- Türsensor WZ1 
        then
          fibaro:debug('Jalousie WZ1 wurde geschlossen');
          fibaro:call(8, "close");
          fibaro:call(8, "setValue2", "30");
        end
      
      if(tonumber(fibaro:getValue(13,'value'))  >= 10 and tonumber(os.date("%H", timestamp)) <= 17 and tonumber(fibaro:getValue(119, "value")) == 0 ) -- Türsensor WZ2
        then
          fibaro:debug('Jalousie WZ1 wurde geschlossen');
          fibaro:call(13, "close");
          fibaro:call(13, "setValue2", "30");
        end

     
     
        -- bis hier regeln für rolladen wenn wirklich warm !
 
     
 
    else
      fibaro:debug('Zeit zum schließen ist noch nicht gekommen! Es sind erst '..timestamp-suncontrol_open..' Sekunden');
    end
 
 
  else
    fibaro:setGlobal(name_global_var_open, timestamp);
    fibaro:debug('Alles okay oder schauen das Rolladen hochkönnen');
 
    if(timestamp-suncontrol_close >= open_time)
    then
     
      fibaro:debug('Okay seit '..open_time..' Sekunden wurden grenzwerte nicht erreicht mache Rolladen hoch');
     
              -- ab hier regeln für rolladen wenn werte wieder okay sind!
 
                fibaro:call(29, "open");
                fibaro:call(8, "open");
      			fibaro:call(8, "setValue2", "0")
                fibaro:call(13, "open");
     			fibaro:call(13, "setValue2", "0")
 
 
              -- bis hier regeln für rolladen wenn werte wieder okay sind!
     
 
    else
      fibaro:debug('Es ist erst seit '..timestamp-suncontrol_close..' Sekunden keine Sonne ');
    end
 
  end
else
  fibaro:debug('Nichts machen da es nicht im Prüfzeitraum liegt oder das Script ist nicht aktiv -> '..name_global_var_active..' ist Aktueller wert '..fibaro:getGlobal(name_global_var_active)..'');
end

Hallo,

Prüfe einfach bevor du einen Befehl machst wie open oder close ob er nicht schon besteht:

mache aus

                fibaro:call(29, "open");

                if(tonumber(fibaro:getValue(29,'value')) <= 90)
          	then
                  fibaro:call(29, "open");
          	end 

Das Prüft sind die Rolladen kleiner als 90 Prozent (100 ist ganz oben 0 ist ganz unten) und schickt dann nur den befehlt raus. Das sollte dein Problem lösen.

Liebe Grüße,
Nico Bode

Hi,

super, Danke! Das wars und hat funktioniert. Jetzt versuche ich mal die Pausierung reinzubekommen. Deine Videos und Anleitungen sind dazu sehr gut!

Schöne Grüße

Sebastian

Hi,
jetzt hab ich doch noch eine kleine Herausforderung: Wenn die Rolläden nach Ablauf der Zeit hochfahren und dann die Grenzwerte Temp/Lux nicht überschritten sind kann ich die Rollos nicht manuell runterfahren. Die gehen dann nach 1 Minute mit dem Scriptstart sofort wieder hoch. Es scheint so als ob das Script trotz der nicht ausgelösten Trigger Temp/Lux immer im Zeitraum bis 18 UHr startet. Das sollte doch nicht so sein oder? Eigentlich sollte bei unterschrittenen Grenzwerten das Script doch gar nciht starten. WErd aber irgendwie nicht schlau draus woran das liegen könnte.

--[[
%% properties
50 value
155 value
%% events
%% globals
--]]
 

local temp_outside = tonumber(fibaro:getValue(50, 'value'));
local lux_outside = tonumber(fibaro:getValue(155, 'value'));
 
local timestamp = os.time();
 
-- Die 3 Variablen könnt ihr nennen wie ihr wollt -> Wichtig nur unter Steuerungen -> Variablensteuerungen mit dem Wert 0 anlegen
 
local name_global_var_open = 'wg_suncost_open';  -- Kann vom Namen frei vergeben werden
local name_global_var_close = 'wg_suncost_close'; -- Kann vom Namen frei vergeben werden
local name_global_var_active = 'wg_suncost_active'; -- 0 = Script ist aktiv 1 = Script ist inaktiv
 
 
 
-- diese Werte müsst ihr an eure bedürfnisse anpassen
 
local close_temp = 24; -- ab wieviel Grad sollen die Rolladen geschlossen werden
local close_lux = 20000; -- ab wieviel Lux sollen die Rolladen geschlossen werden
local close_time = 120; -- ab wieviel sekunden sollen die Rolladen geschlossen werden
local open_time = 1800; -- ab wieviel Sekunden sollen die Rolladen wieder geöffnet werden
local hour_start = 08;  -- ab welcher uhrzeit soll das script laufen
local hour_end   = 18;  -- bis wieviel uhr soll das script laufen
 
 
-- ab hier müsst ihr erst wieder ab ca. Zeile 62 (grenzwerte erreicht! z.b. Jalosie runter) bzw. 115 (grenzwerte nicht erreicht! z.b. Jalosie Hoch) anpassungen vornehmen
 
local suncontrol_open = tonumber(fibaro:getGlobalValue(name_global_var_open));
local suncontrol_close = tonumber(fibaro:getGlobalValue(name_global_var_close));
 
 
  fibaro:debug('Temperatur Aktuell: '..temp_outside..'');
  fibaro:debug('Lux Aktuell: '..lux_outside..'');
 
if(tonumber(os.date("%H", timestamp)) >= hour_start and tonumber(os.date("%H", timestamp)) <= hour_end  and fibaro:getGlobal(name_global_var_active) == '0')
then
   
 
  if(temp_outside >= close_temp or lux_outside >= close_lux)
  then
   
    fibaro:setGlobal(name_global_var_close, timestamp);
 
   
    fibaro:debug('Es ist wärmer als grenzwert & Lux Wert wurde erreicht Rolladen könnten geschlossen werden!');
   
    if(timestamp-suncontrol_open >= close_time)
    then
     
        -- ab hier regeln für rolladen wenn wirklich warm!
      	  fibaro:debug('Es scheint wirklich Sonnig zu sein grenzwerte wurden seit '..close_time..' Sekunden nicht unterschritten');
 
 
      	  -- Küche vorne schließen wenn geöffnet und vor 18 Uhr
      	  if((tonumber(os.date("%H", timestamp)) >= 08 and tonumber(os.date("%H", timestamp)) <= 18) and tonumber(fibaro:getValue(31,'value'))  >= 10)
     	   then
       	   fibaro:debug('Rolladen K1 Küche wurde geschlossen');
        	  fibaro:call(31, "close");
     	   end

     
        	  --Arvid Ost schließen
    	  if((tonumber(os.date("%H", timestamp)) >= 08 and tonumber(os.date("%H", timestamp)) <= 18)and tonumber(fibaro:getValue(192,'value'))  >= 10 )
      	 then
       	  fibaro:debug('Rolladen Jesper Süd wurde geschlossen');
        	 fibaro:call(192, "close");
      	  end
     
        -- bis hier regeln für rolladen wenn wirklich warm !
 
     
 
    else
      fibaro:debug('Zeit zum schließen ist noch nicht gekommen! Es sind erst '..timestamp-suncontrol_open..' Sekunden');
    end
 
 
  else
    fibaro:setGlobal(name_global_var_open, timestamp);
    fibaro:debug('Alles okay oder schauen das Rolladen hochkönnen');
 
    if(timestamp-suncontrol_close >= open_time)
    then
     
      fibaro:debug('Okay seit '..open_time..' Sekunden wurden grenzwerte nicht erreicht mache Rolladen hoch');
     
             
          -- ab hier regeln für rolladen wenn werte wieder okay sind!      
            if (tonumber(fibaro:getValue(31,'value')) <= 90)
          	then fibaro:call(31, "open");
          	end 
          
          	if (tonumber(fibaro:getValue(192,'value')) <= 90)
          	then fibaro:call(192, "open");
          	end   
 
    else
      fibaro:debug('Es ist erst seit '..timestamp-suncontrol_close..' Sekunden keine Sonne ');
    end
 
  end
else
  fibaro:debug('Nichts machen da es nicht im Prüfzeitraum liegt oder das Script ist nicht aktiv -> '..name_global_var_active..' ist Aktueller wert '..fibaro:getGlobal(name_global_var_active)..'');
end

Schönen Gruß

Sebastian

Hallo,

sorry für die Späte Antwort. Ich war diese Woche unterwegs.

Das, dass Script jede Minute startet ist nochmal und so gewollt: Der Grund ist einfach: Wenn das nicht so wäre und es wird ein hoher Wert gemeldet wird, meldet sich der Motion Sensor ggf. erst wieder in z.b. 30 Minuten und triggert -> Er meldet sich ja nur wenn sich die Helligkeit oder Temperatur ändert -> und wenn das nicht passiert und er meldet sich nicht würden die Rolladen z.b. nicht nach 2 Minuten bei Sonnen Einstrahlung hochgehen.

Auch das die hochfahren ist normal -> Das Script weiß ja nicht ob du manuell runtergemacht hast oder es durch das Script runtergefahren wurden -> Grenzwerte wurden unterschritten fahre hoch ;). Das Script ist halt dafür gemacht eine komplette Automatik zu bauen -> und da schaltet man in der Regel nicht manuell.

Man müsste die Automatik also pausieren sobald man manuell in die Steuerung eingreift. Wie das funktioniert habe ich schonmal in einem anderen meiner Videos gezeigt:

Hier (Teil 1):
https://www.intelligentes-haus.de/tutorials/fibaro-tutorials/die-perfekte-rollladenautomatik-ohne-lua-mit-fibaro-home-center-lite-home-center-2-teil-1/

Hier (Teil 2):
https://www.intelligentes-haus.de/tutorials/fibaro-tutorials/die-perfekte-rollladenautomatik-bei-sonne-ohne-lua-mit-fibaro-home-center-lite-home-center-2-teil-2/

Der Lua Code in der Prüfung sähe dann ungefähr so aus:

		if(fibaro:getGlobalValue('rol_st_wohnzi_sun') == 'true')
		then
        
        		if(tonumber(fibaro:getValue(72,'value')) <= 10)
          		then
					fibaro:debug(1234);
                   	fibaro:call(72, "open");
          		end 
        		
           

      	else
			fibaro:debug('Wohnzimmer automatik ist deaktviert')
		end

Hi
Der Artikel ist zwar schon etwas älter.
Ich habe dein lua script etwas angepast. bekomme aber immer eine Fehler Meldung.
Kann den Fehler aber nicht finden
[DEBUG] 22:26:28: 2020-02-16 22:26:28.004426 [ fatal] Unknown exception: /opt/fibaro/scenes/64.lua:1: unexpected symbol near '%

%% properties
340 value
341 value
%% events
 
%% globals
 
--]]
 
-- 491 ersetzen durch eure ID des Temperatur sensors der außen monitiert ist
-- 492 ersetzen durch eure ID des Lux sensors der außen monitiert ist
-- Bitte auch ganze oben im Script bei properties ersetzten!!!!
 
local temp_outside = tonumber(fibaro:getValue(340, 'value'));
local lux_outside = tonumber(fibaro:getValue(341, 'value'));
 
local timestamp = os.time();
 
-- Die 3 Variablen könnt ihr nennen wie ihr wollt -> Wichtig nur unter Steuerungen -> Variablensteuerungen mit dem Wert 0 anlegen
 
local name_global_var_open = 'wg_sunc_open';  -- Kann vom Namen frei vergeben werden
local name_global_var_close = 'wg_sunc_close'; -- Kann vom Namen frei vergeben werden
local name_global_var_active = 'wg_sunc_active'; -- 0 = Script ist aktiv 1 = Script ist inaktiv
 
 
 
-- diese Werte müsst ihr an eure bedürfnisse anpassen
 
local close_temp = 30; -- ab wieviel Grad sollen die Rolladen geschlossen werden
local close_lux = 2100; -- ab wieviel Lux sollen die Rolladen geschlossen werden
local close_time = 120; -- ab wieviel sekunden sollen die Rolladen geschlossen werden
local open_time = 1200; -- ab wieviel Sekunden sollen die Rolladen wieder geöffnet werden
local hour_start = 12;  -- ab welcher uhrzeit soll das script laufen
local hour_end   = 17;  -- bis wieviel uhr soll das script laufen
 
 
-- hier setzte ich den Lux Wert runter weil ab 17 Uhr die Sonne nichtmehr so stark ist und meine normalen grenzwerte nicht rechen würden
if(tonumber(os.date("%H", timestamp)) >= 17)
then
  close_lux = 1700; -- ab wieviel Lux sollen die Rolladen geschlossen werden
end
 
-- ab hier müsst ihr erst wieder ab ca. Zeile 62 (grenzwerte erreicht! z.b. Jalosie runter) bzw. 115 (grenzwerte nicht erreicht! z.b. Jalosie Hoch) anpassungen vornehmen
 
local suncontrol_open = tonumber(fibaro:getGlobalValue(name_global_var_open));
local suncontrol_close = tonumber(fibaro:getGlobalValue(name_global_var_close));
 
 
  fibaro:debug('Temperatur Aktuell: '..temp_outside..'');
  fibaro:debug('Lux Aktuell: '..lux_outside..'');
 
if(tonumber(os.date("%H", timestamp)) >= hour_start and tonumber(os.date("%H", timestamp)) <= hour_end  and fibaro:getGlobal(name_global_var_active) == '0')
then
   
 
  if(temp_outside >= close_temp and lux_outside >= close_lux)
  then
   
    fibaro:setGlobal(name_global_var_close, timestamp);
 
   
    fibaro:debug('Es ist wärmer als grenzwert & Lux Wert wurde erreicht Rolladen könnten geschlossen werden!');
   
    if(timestamp-suncontrol_open >= close_time)
    then
     
        -- ab hier regeln für rolladen wenn wirklich warm!
        fibaro:debug('Es scheint wirklich Sonnig zu sein grenzwerte wurden seit '..close_time..' Sekunden nicht unterschritten');
 
 
        -- Wintergarten vorne schließen wenn geöffnet und vor 15 Uhr
        if(tonumber(fibaro:getValue(258,'value'))  >= 10 and tonumber(os.date("%H", timestamp)) <= 15)
        then
          fibaro:debug('Rolladen Wintergarten vorne 375 wurde geschlossen');
          fibaro:call(258, "close");
          fibaro:call(336, "close");
        end
     
        -- Wintergarten vorne öffnen wenn geschlossen geschlossen und nach 15 Uhr
        if(tonumber(fibaro:getValue(258,'value'))  <= 80 and tonumber(os.date("%H", timestamp)) >= 17)
        then
          fibaro:debug('Rolladen Wintergarten vorne 375 wurde geöffnet');
          fibaro:call(258, "open");
          fibaro:call(336, "open");
        end
     
 
        -- bis hier regeln für rolladen wenn wirklich warm !
 
     
 
    else
      fibaro:debug('Zeit zum schließen ist noch nicht gekommen! Es sind erst '..timestamp-suncontrol_open..' Sekunden');
    end
 
 
  else
    fibaro:setGlobal(name_global_var_open, timestamp);
    fibaro:debug('Alles okay oder schauen das Rolladen hochkönnen');
 
    if(timestamp-suncontrol_close >= open_time)
    then
     
      fibaro:debug('Okay seit '..open_time..' Sekunden wurden grenzwerte nicht erreicht mache Rolladen hoch');
     
              -- ab hier regeln für rolladen wenn werte wieder okay sind!
 
                fibaro:call(336, "open");
                fibaro:call(258, "open");
 
 
              -- bis hier regeln für rolladen wenn werte wieder okay sind!
     
 
    else
      fibaro:debug('Es ist erst seit '..timestamp-suncontrol_close..' Sekunden keine Sonne ');
    end
 
  end
else
  fibaro:debug('Nichts machen da es nicht im Prüfzeitraum liegt oder das Script ist nicht aktiv -> '..name_global_var_active..' ist 1 Aktueller wert '..fibaro:getGlobal(name_global_var_active)..'');
end

Hoffe jemand kann mir helfen
Gruss
Stephan

Wenn Du beim Kopieren nichts vergessen hast, dann fehlen ganz oben im Script die beiden eckigen Klammern also " --[[ " die den Beginn des Blocks einleiten.