Rollladen-Steuerung (Sonnenaufgang/-untergang)

Hallo fische02

habe eine Grundstellung des Scriptes mit eingebaut … Die Variablen werden richtig setzen anhand der Rollos bei Tag oder bei Nacht.
Die Grundstellung wir mir dem Start Button erreicht oder Other source.
Mann kann jetzt zu jeder Uhrzeit das Script mit seinen Vareablen zurücksetzen.
Wichtig für den ersten start und einfach so wen mann es einmal oder säter mit einer fernbedienung rauf fahren möchte …

So müssen die Vareablen gesetzt sein für den start.
fibaro:setGlobal(‘SunFirstMaxTimeLux’, ‘0’);
fibaro:setGlobal(‘SunFirstMinTimeLux’, ‘0’);
fibaro:setGlobal(‘SonnenSchutz’, ‘0’); --SonnenSchutz wurde entfernt.
fibaro:setGlobal(‘RolloUnten0Oben1’, ‘1’); – diese Variable braucht mann nur für andre Spielereien.

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

local minSonAuf = '-25' 			-- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' 				-- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '05:00'   --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00'  --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00'    --Spaetestens wenn die Sonne unter geht.

local startSunLux = 20000; 			-- über 20.000 Lux für zu
local startSunDelay = 5;			-- 5 Min bis zu
local endSunLux = 7000;				-- unter 10.000 Lux für auf
local endSunDelay = 20;				-- 20 Min bis auf
local sunProtectPosition = 25;		-- Sonnen schutz position für Rollos.

local luxSensor = 115				-- Helichkeits sensor Flur.
local rebootSceneID = 48		    -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0			-- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.
-----------------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
local sourceTrigger = fibaro:getSourceTrigger();
function sceneReboot()
		local currentDate = os.date("*t");
        if ((currentDate.hour == 2) and (currentDate.min >= 0)and (currentDate.min < 1))
        or sourceTrigger["type"] == "other" then
              debug('salmon',"Neustart der Scene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--#######################################################################################
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ... echte SonnenAufgang")
    debug('steelblue', ""..minSonAuf.." min... Aufgesetzte zeit in minuten bis Sonnen Aufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzteSonnenAufgang.." Versetzte.... SonnenAufgang")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... echte SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min... Aufgesetzte zeit in minuten bis Sonnen Untergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzteSonnenUntergang.." Versetzte... SonnenUntergang")
--########################################################################################
            if VersetzteSonnenAufgang > zeitFruehstensAuf and VersetzteSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..VersetzteSonnenAufgang.. " auf gehen.")
              elseif VersetzteSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rollos werden um "..zeitFruehstensAuf.. " auf gehen.")
              elseif VersetzteSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..zeitSpaetestensAuf.. " auf gehen.")  
              end
            --------------------------------------------------------------------------------------------
            if VersetzteSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rollos werden um "..zeitMaxUntergang.. " unter gehen.")
			  else
                debug('steelblue',"Die Rollos werden um "..VersetzteSonnenUntergang.. " unter gehen.")
              end
--#########################################################################################
	  debug('darkgreen',"Rollershutter-Controller startet das erste mal!");

function rollerShutter()
--#######################################################################################
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
--########################################################################################
      local currentDate = os.date('*t');
      local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
   	  local SonnenSchutz = tonumber(fibaro:getGlobalValue('SonnenSchutz'));

------------------------------------------------------------------------------------------
---#################   SonnenSutz... rollos runter fahren !!   #########################---
------------------------------------------------------------------------------------------

if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 0)
    then

    	fibaro:setGlobal('SunFirstMaxTimeLux', '1');
        local gSunFirstMaxTimeLux = fibaro:getGlobalModificationTime('SunFirstMaxTimeLux')

     if ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
      and ((os.time() - gSunFirstMaxTimeLux) >= startSunDelay*60)
      then
      ---------------- Rollos eintragen  ----------------------------------------
      
        fibaro:call(98, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
        fibaro:call(100, "setValue", sunProtectPosition);--FensterFlur obergeschoss zur 
      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rollos fahren auf ' ..sunProtectPosition..'%!!!') 
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '1'); --SonnenSchutz wurde gesetzt.
        fibaro:setGlobal('RolloUnten0Oben1', '0');
        meldungenDebug = 0
      elseif meldungenDebug == 0 then
    	debug('lightsteelblue','Die Rollos 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
------------------------------------------------------------------------------------------
---#################   SonnenSutz... rollos rauf fahren !!  ###########################---
------------------------------------------------------------------------------------------ 
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 1)
    then
    	fibaro:setGlobal('SunFirstMinTimeLux', '1');
		local gSunFirstMinTimeLux = fibaro:getGlobalModificationTime('SunFirstMinTimeLux')
    
     if ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux ) 
      and ((os.time() - gSunFirstMinTimeLux) >= endSunDelay*60)
      then
---------------- Rollos eintragen  --------------------------------------------------
      
        fibaro:call(98, 'open');
        fibaro:call(100, 'open');
--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rollos fahren rauf!!!') 
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
        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 !!  ###############################################--
------------------------------------------------------------------------------------------
elseif ((VersetzteSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
 or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then	

      debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
      fibaro:setGlobal('rollershutter_runs', '1');

        fibaro:call(98, 'open');
        fibaro:call(100, 'open');
        fibaro:call(108, 'open');

      debug('yellow',"Rollos wurden geoefnet.");
      fibaro:setGlobal('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()) >= VersetzteSonnenAufgang) then
          debug('coral',"Es ist Tag");
      end
-----------------------------------------------------------------------------------------    
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------	
elseif ((VersetzteSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenUntergang)
 or (VersetzteSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang)
 and (tonumber(rollershutter_runs) == 0))
    then
	
      debug('darkkhaki',"Rollershutter-Controller hat gestartet!");
      fibaro:setGlobal('rollershutter_runs', '1');

       fibaro:call(98, 'close');
       fibaro:call(100, 'close');
       fibaro:call(108, 'close');

      debug('royalblue',"Rollos wurden geschlossen.");
      fibaro:setGlobal('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()) >= VersetzteSonnenUntergang) then
      debug('royalblue',"Es ist Nacht");
      end
    
end
---#######################################################################################
   setTimeout(rollerShutter, 60*1000);
end

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

if (sourceTrigger['type'] == 'autostart') then
	rollerShutter();
	sceneReboot(); 
elseif (sourceTrigger['type'] == 'property') then
  fibaro:debug('Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  fibaro:debug('Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rollos eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzteSonnenUntergang) then
    
        fibaro:call(98, 'open');
        fibaro:call(100, 'open');
        debug('coral',' Die Rollos 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
      ---------------------------------------------------------------------------
  fibaro:debug('Other source.')
end
--###########################################################################################

Hmmm dann liegst wohl an meinem Script. Hab es zwar bestimmt schon 10x mit deinem verglichen aber kann keinen Fehler finden.
Naja dann hilft nur weitersuchen :confused:

Gruß

So hab ich die Variablen auch mit einem automatischen Script in der Nacht setzten lassen.
Kann es sein dass ich dein Script 2x laufen lasse und die sich gegenseitig in die Quere kommen???
Die Variablen sind aber jeweils andere.

Gruss

Hi
vielleicht schreibe ich Blödsinn,aber da beide scripte in der gleichen zeit was schreiben wollen kann es sein das die HC2 was verpasst???
Setze vor und nach dem schreiben und lesen eine fibaro:sleep(1*1000) von 1s, vielleicht schreibt und liest er sauber die Variablen???
Schalte alle andren Scripte aus damit sie sich nicht stören.

Guten Morgen,

heute geht es komischerweise wieder.Sehr seltsam. Werde das mal weiter beobachten. Deinen Tip mit der Verzögerung probier ich mal aus.
Danke & Gruß

Hallo parip69,

vielen Dank für die Erstellung des Skripts inkl. Sonnenschutz. Ich teste gerade das Skript und warte auf die entsprechende Sonne :). Kann der Sonnenschutz statt des Lux Wertes (der Helligkeit) auch über die Temperatur des Fibaro ausgelöst werden? d.h. für mich ist die Helligkeit egal, die Rollläden sollen auf der Südseite nur herunterfahren wenn die Temperatur über z.b. 28Grad liegt, der LUX Wert kann ignoriert werden. Vorteil dieser Lösung ist, ich benötige keinen Motion sensor.
Ich poste einmal mein verwendetes Skript, in diesem habe ich die random und Türschleife eingebaut, kannst du dieses für spätere Versionen bitte übernehmen. Ich halte beides für sehr wichtig und sinnvoll. Random als Einbruch Schutz und die Türschleife damit ich nicht ausgesperrt werde.
Vielen Dank für die tolle Arbeit.
LG Daniel

--[[
%% autostart
%% properties
%% globals
--]]
 
local minSonAuf = '00' 				-- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '00' 				-- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00'   --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '08:00'  --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00'    --Spaetestens wenn die Sonne unter geht.
 
local startSunLux = 20000; 			-- über 20.000 Lux für zu
local startSunDelay = 5;			-- 5 Min bis zu
local endSunLux = 7000;				-- unter 10.000 Lux für auf
local endSunDelay = 20;				-- 20 Min bis auf
local sunProtectPosition = 25;		-- Sonnen schutz position für Rollos.
 
local luxSensor = 67				-- Helichkeits sensor.
local rebootSceneID = 170		    -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0			-- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.

local rs_living_1 = 152;
local rs_living_2 = 150;
local rs_living_3 = 154;
local rs_living_4 = 175;
local rs_kueche_1 = 181;
local rs_hwr_1 = 183;
local rs_bad_1 = 185;

local doorID1 = 22;
local doorID2 = 26;
local doorID3 = 30;
-----------------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
local sourceTrigger = fibaro:getSourceTrigger();
function sceneReboot()
		local currentDate = os.date("*t");
        if ((currentDate.hour == 2) and (currentDate.min >= 0)and (currentDate.min < 1))
        or sourceTrigger["type"] == "other" then
              debug('salmon',"Neustart der Scene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--#######################################################################################
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ... echte SonnenAufgang")
    debug('steelblue', ""..minSonAuf.." min... Aufgesetzte zeit in minuten bis Sonnen Aufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzteSonnenAufgang.." Versetzte.... SonnenAufgang")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... echte SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min... Aufgesetzte zeit in minuten bis Sonnen Untergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzteSonnenUntergang.." Versetzte... SonnenUntergang")
--########################################################################################
            if VersetzteSonnenAufgang > zeitFruehstensAuf and VersetzteSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..VersetzteSonnenAufgang.. " auf gehen.")
              elseif VersetzteSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rollos werden um "..zeitFruehstensAuf.. " auf gehen.")
              elseif VersetzteSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..zeitSpaetestensAuf.. " auf gehen.")  
              end
            --------------------------------------------------------------------------------------------
            if VersetzteSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rollos werden um "..zeitMaxUntergang.. " unter gehen.")
			  else
                debug('steelblue',"Die Rollos werden um "..VersetzteSonnenUntergang.. " runter gehen.")
              end
--#########################################################################################
	  debug('darkgreen',"Rollershutter-Controller startet das erste mal!");
 
function rollerShutter()
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
----------------------------------------------------------------------------------------
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local SonnenSchutz = tonumber(fibaro:getGlobalValue('SonnenSchutz'));
	  
----------------------------------------------------------------------------------------
	local version = '2.0';
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local random = math.random(18);
	local min = math.floor((random*100)/60);
	  
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... rollos runter fahren !!   #########################---
------------------------------------------------------------------------------------------
 
if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 0)
    then
 
    	fibaro:setGlobal('SunFirstMaxTimeLux', '1');
        local gSunFirstMaxTimeLux = fibaro:getGlobalModificationTime('SunFirstMaxTimeLux')
 
     if ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
      and ((os.time() - gSunFirstMaxTimeLux) >= startSunDelay*60)
      then
      ---------------- Rollos eintragen  ----------------------------------------
      
      	fibaro:call(rs_living_1, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
		fibaro:call(rs_living_2, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
		fibaro:call(rs_living_3, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
        --fibaro:call(100, "setValue", sunProtectPosition);--FensterFlur obergeschoss zur 
      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rollos fahren auf ' ..sunProtectPosition..'%!!!') 
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '1'); --SonnenSchutz wurde gesetzt.
        fibaro:setGlobal('RolloUnten0Oben1', '0');
        meldungenDebug = 0
      elseif meldungenDebug == 0 then
    	debug('lightsteelblue','Die Rollos 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... rollos rauf fahren !!  ###########################---
------------------------------------------------------------------------------------------ 
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 1)
    then
    	fibaro:setGlobal('SunFirstMinTimeLux', '1');
		local gSunFirstMinTimeLux = fibaro:getGlobalModificationTime('SunFirstMinTimeLux')
    
     if ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux ) 
      and ((os.time() - gSunFirstMinTimeLux) >= endSunDelay*60)
      then
---------------- Rollos eintragen  --------------------------------------------------
      
        fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rollos fahren rauf!!!') 
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
        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 !!  ###############################################--
------------------------------------------------------------------------------------------
elseif ((VersetzteSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
 or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then	
	
        debug('darkkhaki',"Rollershutter-Controller  gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		fibaro:debug('Sonnenaufgang... öffne Rollos');
		fibaro:debug('Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);
 
		fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
        fibaro:call(rs_living_4, 'open');
    	fibaro:call(rs_kueche_1, 'open');
    	fibaro:call(rs_hwr_1, 'open');
    	fibaro:call(rs_bad_1, 'open');
 
      debug('yellow',"Rollos wurden geoefnet.");
      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()) >= VersetzteSonnenAufgang) then
          debug('coral',"Es ist Tag");
      end
-----------------------------------------------------------------------------------------    
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------	
elseif ((VersetzteSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenUntergang)
 or (VersetzteSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang)
 and (tonumber(rollershutter_runs) == 0))
    then
	
       	debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		fibaro:debug('Sonnenunter... schließe Rollos');
		fibaro:debug('Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);
 
		fibaro:call(rs_living_4, 'close')						--ID für close ohne prüfung eines offenen Fensters
    	fibaro:call(rs_kueche_1, 'close');
    	fibaro:call(rs_hwr_1, 'close');
    	fibaro:call(rs_bad_1, 'close');
    
		while 	
			(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_living_1, 'close');
              
		while
			(tonumber(fibaro:getValue(doorID3, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_living_3, 'close');
			
		while
			(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_living_2, 'close');
	
      debug('royalblue',"Rollos 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()) >= VersetzteSonnenUntergang) then
      debug('royalblue',"Es ist Nacht");
      end
    
end
---#######################################################################################
   setTimeout(rollerShutter, 60*1000);
end
 
--########################################################################################
 
if (sourceTrigger['type'] == 'autostart') then
	rollerShutter();
	sceneReboot(); 
elseif (sourceTrigger['type'] == 'property') then
  fibaro:debug('Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  fibaro:debug('Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rollos eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzteSonnenUntergang) then
    
       fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
        fibaro:call(rs_living_4, 'open');
    	fibaro:call(rs_kueche_1, 'open');
    	fibaro:call(rs_hwr_1, 'open');
    	fibaro:call(rs_bad_1, 'open');
        debug('coral',' Die Rollos 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
      ---------------------------------------------------------------------------
  fibaro:debug('Other source.')
end
--###########################################################################################

Hallo
ich hatte nur mein Script reingestellt damit man sich inspiriert so wie ich das gemacht habe vom boomx und andren.
Ich habe auch nur Code zusammen getragen und den Sonnenschutz eingebaut. Meine Vorvorstellung wahr, so wie du es gemacht hast das mann sich das Script anpasst nach eigener Vorstellung.
Funktionen sind für den andren wichtig für andere wieder nicht…
Deswegen würde ich vorschlagen Programmiert fleißig und stellt eure Kreationen da rein vielleicht hat ja schon einer beim lesen eurer Scripte die Zündende Idee oder Lösung.

Hallo thebrain
Das mit der Temperatur abhängigkeit an stat Lux sollte gehen. Nach meinem Verständnis nur die ID und die Schwellwerte anpassen.
Mann muss probieren.

Gruß an alle.

Hallo,

@parip69 vielen Dank für die LUX überwachung.
Jetzt bräuchte ich noch eine Temperatur überwachung.
Wenn es Minus Temperatur hat dann soll der Rollo vom Dachfenster nicht aufgehen.

Danke.

cu
karlk

Hallo Liebes Forum,

ich habe vor geraumer Zeit die Rollladensteuerung aus diesem Beitrag übernommen und habe eine Frage zu der Absicherung der Rollläden bei einer Temperatur <= 0 Grad? Mein Skript welches auch tadellos funktioniert hat die Temperaturabsicherung nicht enthalten, dieses wurde vor herausgenommen. Jetzt hatte ich am Wochenende versucht dieses zu integrieren, auch wenn wir noch im Sommer sind aber lieber jetzt als gar nicht :). Leider habe ich die Rollladensteuerung nach Änderung nicht mehr zum Laufen bekommen. Kann mir jemand von den Profis mitteilen, wie ich in meinem Skript die Absicherung der Temperatur vornehme?
Vielen vielen Danke
LG Daniel


--[[
%% autostart
%% properties
%% globals
--]]
 
local minSonAuf = '00' 				-- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '00' 				-- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00'   --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '08:00'  --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '22:00'    --Spaetestens wenn die Sonne unter geht.
 
local startSunLux = 30000; 			-- über 35.000 Lux für zu
local startSunTemp = 40;			
local startSunDelay = 5;			-- 5 Min bis zu
local endSunLux = 10000;			-- unter 10.000 Lux für auf
local endSunDelay = 20;				-- 20 Min bis auf
local sunProtectPosition = 60;		-- Sonnen schutz position für Rollos.
local sunProtectPosition1 = 70;		-- Sonnen schutz position für Rollos (Terrassentür).

local luxSensor = 67				-- Helichkeits sensor.
local tempSensor = 148				-- Temperatur Sirene
local rebootSceneID = 170		    -- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0			-- hilfs vareable um die meldungen nicht an dauernd zu wiederholen.

local rs_living_1 = 152;
local rs_living_2 = 150;
local rs_living_3 = 154;
local rs_living_4 = 175;
local rs_kueche_1 = 181;
local rs_hwr_1 = 183;
local rs_bad_1 = 185;

local doorID1 = 22;
local doorID2 = 26;
local doorID3 = 30;
-----------------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--#######################################################################################
local sourceTrigger = fibaro:getSourceTrigger();
function sceneReboot()
		local currentDate = os.date("*t");
        if ((currentDate.hour == 2) and (currentDate.min >= 0)and (currentDate.min < 1))
        or sourceTrigger["type"] == "other" then
              debug('salmon',"Neustart der Scene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--#######################################################################################
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ... echte SonnenAufgang")
    debug('steelblue', ""..minSonAuf.." min... Aufgesetzte zeit in minuten bis Sonnen Aufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzteSonnenAufgang.." Versetzte.... SonnenAufgang")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... echte SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min... Aufgesetzte zeit in minuten bis Sonnen Untergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzteSonnenUntergang.." Versetzte... SonnenUntergang")
--########################################################################################
            if VersetzteSonnenAufgang > zeitFruehstensAuf and VersetzteSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..VersetzteSonnenAufgang.. " auf gehen.")
              elseif VersetzteSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rollos werden um "..zeitFruehstensAuf.. " auf gehen.")
              elseif VersetzteSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rollos werden um "..zeitSpaetestensAuf.. " auf gehen.")  
              end
            --------------------------------------------------------------------------------------------
            if VersetzteSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rollos werden um "..zeitMaxUntergang.. " unter gehen.")
			  else
                debug('steelblue',"Die Rollos werden um "..VersetzteSonnenUntergang.. " runter gehen.")
              end
--#########################################################################################
	  debug('darkgreen',"Rollershutter-Controller startet das erste mal!");
 
function rollerShutter()
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzteSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
----------------------------------------------------------------------------------------
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local SonnenSchutz = tonumber(fibaro:getGlobalValue('SonnenSchutz'));
	  
----------------------------------------------------------------------------------------
	local version = '2.0';
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local random = math.random(18);
	local min = math.floor((random*100)/60);
	  
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... rollos runter fahren !!   #########################---
------------------------------------------------------------------------------------------
 
if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
	and ( tonumber(fibaro:getValue(tempSensor, "value")) > startSunTemp )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 0)
    then
 
    	fibaro:setGlobal('SunFirstMaxTimeLux', '1');
        local gSunFirstMaxTimeLux = fibaro:getGlobalModificationTime('SunFirstMaxTimeLux')
 
     if ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
      and ((os.time() - gSunFirstMaxTimeLux) >= startSunDelay*60)
      then
      ---------------- Rollos eintragen  ----------------------------------------
      
      	fibaro:call(rs_living_1, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
		fibaro:call(rs_living_2, "setValue", sunProtectPosition1+5); --Tuere Dachterasse.
		fibaro:call(rs_living_3, "setValue", sunProtectPosition+5); --Tuere Dachterasse.
      	fibaro:call(rs_living_4, "setValue", sunProtectPosition1+5); --Tuere Dachterasse.
        --fibaro:call(100, "setValue", sunProtectPosition);--FensterFlur obergeschoss zur 
      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rollos fahren auf ' ..sunProtectPosition..'%!!!') 
		debug('greenyellow', fibaro:getValue(tempSensor, "value")..' Temp  ... Die Rollos fahren auf')		
        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 Rollos 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... rollos rauf fahren !!  ###########################---
------------------------------------------------------------------------------------------ 
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzteSonnenUntergang)
    and (tonumber(SonnenSchutz) == 1)
    then
    	fibaro:setGlobal('SunFirstMinTimeLux', '1');
		local gSunFirstMinTimeLux = fibaro:getGlobalModificationTime('SunFirstMinTimeLux')
    
     if ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux ) 
      and ((os.time() - gSunFirstMinTimeLux) >= endSunDelay*60)
      then
---------------- Rollos eintragen  --------------------------------------------------
      
        fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
      	fibaro:call(rs_living_4, 'open');
--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rollos fahren rauf!!!') 
        fibaro:setGlobal('SunFirstMaxTimeLux', '0');
        fibaro:setGlobal('SunFirstMinTimeLux', '0');
        fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
        fibaro:setGlobal('RolloUnten0Oben1', '1');
        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 !!  ###############################################--
------------------------------------------------------------------------------------------
elseif ((VersetzteSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
 or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then	
	
        debug('darkkhaki',"Rollershutter-Controller  gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		fibaro:debug('Sonnenaufgang... öffne Rollos');
		fibaro:debug('Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);
 
		fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
        fibaro:call(rs_living_4, 'open');
    	fibaro:call(rs_kueche_1, 'open');
    	fibaro:call(rs_hwr_1, 'open');
    	fibaro:call(rs_bad_1, 'open');
 
      debug('yellow',"Rollos wurden geoefnet.");
      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()) >= VersetzteSonnenAufgang) then
          debug('coral',"Es ist Tag");
      end
-----------------------------------------------------------------------------------------    
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------	
elseif ((VersetzteSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenUntergang)
 or (VersetzteSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang)
 and (tonumber(rollershutter_runs) == 0))
    then
	
       	debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		fibaro:debug('Sonnenunter... schließe Rollos');
		fibaro:debug('Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);
 
		fibaro:call(rs_living_4, 'close')						--ID für close ohne prüfung eines offenen Fensters
    	fibaro:call(rs_kueche_1, 'close');
    	fibaro:call(rs_hwr_1, 'close');
    	fibaro:call(rs_bad_1, 'close');
    
		while 	
			(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_living_1, 'close');
              
		while
			(tonumber(fibaro:getValue(doorID3, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_living_3, 'close');
			
		while
			(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_living_2, 'close');
	
      debug('royalblue',"Rollos 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()) >= VersetzteSonnenUntergang) then
      debug('royalblue',"Es ist Nacht");
      end
    
end
---#######################################################################################
   setTimeout(rollerShutter, 60*1000);
end
 
--########################################################################################
 
if (sourceTrigger['type'] == 'autostart') then
	rollerShutter();
	sceneReboot(); 
elseif (sourceTrigger['type'] == 'property') then
  fibaro:debug('Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  fibaro:debug('Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rollos eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzteSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzteSonnenUntergang) then
    
       fibaro:call(rs_living_1, 'open');
        fibaro:call(rs_living_2, 'open');
        fibaro:call(rs_living_3, 'open');
        fibaro:call(rs_living_4, 'open');
    	fibaro:call(rs_kueche_1, 'open');
    	fibaro:call(rs_hwr_1, 'open');
    	fibaro:call(rs_bad_1, 'open');
        debug('coral',' Die Rollos 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
      ---------------------------------------------------------------------------
  fibaro:debug('Other source.')
end
--###########################################################################################

Hallo thebrain

wenn Du eine Wetter orientierte Steuerung machen willst ohne Sensoren dann reicht das so wie unten als Beispiel.


------------------------------------------------------------------------------------------
---#################   SonnenAufgang !!  ###############################################--
------------------------------------------------------------------------------------------
elseif ((VersetzteSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenAufgang)
 or (VersetzteSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzteSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and ((tonumber(rollershutter_runs) == 0)or( tonumber(fibaro:getValue(3, "Temperature")) < tonumber(0) )))
    then

Habe das hinzugefügt ( tonumber(fibaro:getValue(3, "Temperature")) < tonumber(0) ). Habe es nicht getestet. Wenn Du es testen willst dann gib eine temporäre Temperatur wert von 20° so das Du den Winter simulieren kannst.

Hallo Parip69,

vielen Dank für die schnelle Antwort, wie kann ich dieses aber eine die Abfrage meines Thermometers der Außensirene knüpfen. D.h. woher hat er die Temperatur jetzt in deinem Bsp.? Ich trage unter „getValue(3, "Temper…“ die Temperatur von bsp. 3 Grad ein, wo findet die Prüfung der tatsächlichen Temperatur statt?

LG Daniel

Hallo

Wenn du deinen Sensor einbinden wilst dann must du in etwa so eintragen beziehungsweise ersetzen. (tonumber(fibaro:getValue(dein Sensor) < tonumber(3) ))
Gruß

Hallo Boomx und parrip69,
habe eine Frage zum eingebauten Sonnenschutz der Rollladensteuerung. Aktuell ist es bei uns in Berlin wieder warm und ich habe mein Fibaro Motion Sensor in einem Gehäuse nach außen befördert um die Lux Werte abzugreifen. Den Sonnenschutz habe ich an folgende Bedingungen geknüpft: Wenn Temp (über Netatmo) über 22 Grad und Lux (Motion Sensor) über 30000 Lux dann fahre die Rollläden runter. Wenn unter 10000Lux fahre wieder hoch.
Nun habe ich das Problem, dass die Rollläden am Tag 2-4 hoch und runter fahren, da der Lux Wert unter dem Schwellwert von 10000Lux liegt. Im Debug kann ich sehen, dass die Rollläden erst nach 20min. der Unterschreitung des Schwellwertes hochgefahren werden. Nun zu meiner Frage, wird nach Ablauf der 20min, also kurz vor dem hochfahren noch einmal geprüft, ob der Schwellwert immer noch unterschritten ist und die Rollläden bleiben ggf unten?

Hallo thebrain

Gleich als erstes, ja es wird jede Minute überprüft ob sich was geändert hat.
Ich habe mir was einfallen lassen, mit einer Hilfsvariable verhindere ich das im Debug die gleiche nachricht nacheinander erscheint.
Habe auch noch was eingebaut. Durch die fibaro:getGlobalModificationTime kann man super Veränderungen überprüfen, also schreibt mann bei jedem Durchlauf den wert in die SunFirstMaxTimeLux neu und wartet die 20 min aufs neue ab.
Also wenn die Rollos rauf sind dann sind wirklich 20 Minuten vergangen.

Wenn Du willst das sie nicht so oft rauf und runter fahren dann musst Du mit den Werten spielen.
Du kannst auch das runter fahren der Rollos von der Temperatur abhändig machen. Wenn unter 10000 Lux und temp unter 20° dann fahre runter.

Mann kann aber jetzt schon sagen das dann deine Rollos nur noch abends rauf fahren. Da der Temperatur Abfall nicht so schell abfällt wie ansteigt da die Umgebungstemperatur deinen Sensor stark beeinflussen werden.

Gruss

Hallo im letzten Beitrag meinte das rauf fahren der Rollos.

Hallo zusammen
ich habe ein fertiges Script von 3 Seiten zuvor runter geladen,ich glaube das es funktioniert nur die Rolladen bewegen sich nicht.

ich hoffe jemand kann mir weiter helfen .ich habe das Protokoll copiert.

[DEBUG] 20:54:31: Rollershutter-Controller startet das erste mal (Ver.2.0)
[DEBUG] 20:54:31: 07:31 … echte Sonnenaufgang
[DEBUG] 20:54:31: -10 Aufgesetzte zeit in minuten… Sonnen Aufgang.
[DEBUG] 20:54:31: 07:21 Versetzte… Sonnenaufgang
[DEBUG] 20:54:31: 19:13 … echte Sonnenuntergang
[DEBUG] 20:54:31: 60 Aufgesetzte zeit in minuten… Sonnen Untergang.
[DEBUG] 20:54:31: 20:13 Versetzte… Sonnenuntergang
[DEBUG] 20:54:31: Es ist Nacht

Gruß Wolle

Hallo Zusammen,
bei mir läuft seit langer Zeit schon das Script von den vorderen Seiten.
Es klappt auch super, die Rollos gehen zuverlässig rauf und runter und wenn die Balkontür auf ist, dann bleiben die Rollos solange oben,
bis die Tür geschlossen wurde. Also alles super :slight_smile:

Durch den Zufallswert fahren Sie auch nicht direkt bei Sonnenauf-/untergang runter sondern immer schön versetzt.

So nun aber zu meiner Frage: Ich lasse die Rollos aber nicht nur rauf und runter fahren, sondern nur bis zu einem bestimmten Wert.
Jetzt hätte ich aber noch gerne als Zusatz, daß die Rollos, jeden Tag in einem vorgegebenen Bereich rauf und runterfahren.
Also beim öffnen zwischen 65-85 Prozent und beim schließen evtl. 30-50 Prozent.
Und als besonderes Highlight: Jedes Rollo soll jeden Tag einen anderen Wert erhalten.

Hat irgend jemand eine Idee wie man so einen Zufallsgenerator programmieren kann ?

Würde mich über Ideen und Vorschläge freuen.

Gruss
Carsten :slight_smile:

local open_value = math.random(65,85)
local close_value = math.random(30,50)

Gruß

Danke an boomx,
ich habe gerade mal mit einem Testscript rumgespielt, dass klappte schon sehr gut.
Nun habe ich es in mein Hauptscript eingebaut.
Bin gespannt was heute abend passiert :slight_smile:

Ich werde berichten.

Gruss
Carsten :slight_smile:

Hallo Boomx,
es hat super funktioniert. Vielen Dank für deine Hilfe.

Echt klasse.

Schönen Sonntag noch.

LG
Carsten :slight_smile: