Rollladen-Steuerung (Sonnenaufgang/-untergang)

Hi,

anscheinend funktioniert das mit den Arrays so nicht. Hier wird das Array als String erkannt. In dem Thread hab ich einen kleinen Workaround gepostet. Vielleicht hilft dir das:

http://www.siio.de/board/thema/mit-lua-script-anderes-script-beeinflussen/#post-27258

Gruß

Hallo
erstmal danke ich für das Script.
Habe es umgebaut so das man eine zeit setzen kann die einem erlaubt die ein- Ausschankzeiten separat zu verentern.

--[[
%% autostart
%% properties
%% globals
--]]
-----------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
print(Sonnenaufgang, 'Sonnenaufgang')
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
print (Sonnenuntergang, 'Sonnenuntergang')

local min1 = 20*60 -- Aufgesetzte verspaetung zeit in sekunden... Sonnenaufgang.
local min2 = 60*60 -- Aufgesetzte frueer gesetzte zeit in sekunden Sonnenaufgang.

print(min1/60,'min verspaetung zeit in sekunden... Sonnen Aufgang.')
print(min2/60, 'min frueer gesetzte zeit in sekunden... Sonnen Untergang.')
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollershutter-Controller started for the first time (Ver.' .. version .. ')');
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local temp = tonumber(fibaro:getValue(3, 'Temperature'));
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));

 
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 os.date("%H:%M", os.time()+min1) == fibaro:getValue(1, "sunriseHour")) and rollershutter_runs == 0 and tonumber(temp)>=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenaufgang... Opening rollershutters');
    	print('Sonnenaufgang '..sunriseHour)
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       fibaro:debug('Rollos wurden geoefnet.');
       fibaro:setGlobal('rollershutter_runs', '0');
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)and os.date("%H:%M", os.time()-min2) == fibaro:getValue(1, "sunsetHour")) and rollershutter_runs == 0 and tonumber(temp)>=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1'); 
       fibaro:debug('Sonnenuntergang... Closing rollershutters');
		print('Sonnenuntergang '..sunsetHour)
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       fibaro:debug('Rollos wurden geschlossen.');
       fibaro:setGlobal('rollershutter_runs', '0');
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)and os.date("%H:%M", os.time()+min1) == fibaro:getValue(1, "sunriseHour")) and rollershutter_runs == 0 and tonumber(temp)>=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenuntergang... Temperatur < 0... Rollershutters bleibt geschlossen.');
       fibaro:setGlobal('rollershutter_runs', '0');
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)and os.date("%H:%M", os.time()-min2) == fibaro:getValue(1, "sunsetHour")) and rollershutter_runs == 0 and tonumber(temp)>=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenuntergang... Temperatur < 0... Rollershutters bleibt geoefnet.');
       fibaro:setGlobal('rollershutter_runs', '0');
end
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end

Hallo,

die letzten 2 Schleifen brauchst Du nicht - keine Temperaturabfrage.

Was macht der Print Befehl?

cu
karlk

Hallo
Die Prints sind nur da wegen test’s.
Habe einiges verbessert und eine Max Sonnen Untergang Aufgang gemacht und bequeme Zeitverschiebung und Temperatur raus da meine Rollos gesichert sind.

--[[
%% autostart
%% properties
%% globals
--]]
-----------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
print(Sonnenaufgang, 'Sonnenaufgang')
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
print (Sonnenuntergang, 'Sonnenuntergang')

local min1 = 0 -- Aufgesetzte zeit in minuten... Sonnenaufgang.
local min2 = 45 -- Aufgesetzte zeit in minuten... Sonnenaufgang.
local zeitMaxAufgang = '06:00' --Fruestens wenn Sonne af geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn Sonne unter geht.

print(min1,'Aufgesetzte zeit in minuten... Sonnen Aufgang.')
print(min2, 'Aufgesetzte zeit in minuten... Sonnen Untergang.')
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollershutter-Controller started for the first time (Ver.' .. version .. ')');
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---################# Hier Sonnenaufgang !!###############################################
-----------------------------------------------------------------------------------------
if (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) >= (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) == fibaro:getValue(1, "sunriseHour")) 
 or (os.date("%H:%M", os.time()) == (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) >= fibaro:getValue(1, "sunriseHour"))))
 and rollershutter_runs == 0)
	then
  
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenaufgang... Opening rollershutters');
    	print('Sonnenaufgang '..sunriseHour)
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       fibaro:debug('Rollos wurden geoefnet.');
       fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------    
----------------- Hier Sonnenuntergang !! -----------------------------------------
-----------------------------------------------------------------------------------
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) <= (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) == fibaro:getValue(1, "sunsetHour")) 
 or (os.date("%H:%M", os.time()) == (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) <= fibaro:getValue(1, "sunsetHour"))))
 and rollershutter_runs == 0)
	then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1'); 
       fibaro:debug('Sonnenuntergang... Closing rollershutters');
		print('Sonnenuntergang '..sunsetHour)
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       fibaro:debug('Rollos wurden geschlossen.');
       fibaro:setGlobal('rollershutter_runs', '0');
    
end
---##############################################################################################
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end
----------------------------------------------------------------------------------
----------- Wird geschaut ob tag oder nacht ist. ---------------------------------
----------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > fibaro:getValue(1, "sunriseHour"))
and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then
    print('Es ist Tag');
else
    print('Es ist Nacht');
end


Hallo,

@parip69 Dein Programm werde ich am Wochenende testen.

Frage:
Was würdet Ihr empfehlen.
Ich möchte mit einem Befehl das alle Rolläden auf oder zu fahren.
Alarm z.B. Rauchmelder.
Würdet Ihr ein LUA Script empfehlen?
Grafische Scene
oder gibt es eine Steuerung dafür?

Danke.

cu
karlk

Hallo

durch meine Gedankenexperimente konnte ich noch einen Fehler finden. Durch die aufgesetzte Zeit z.b. 20 minuten konnte ich mich nicht mehr mit der sunriseHour oder sunsetHour elegant zur zeitMaxAufgang öder zeitMaxUntergang nähern, allso habe ich noch diese Zeille und mit den operatoran gespielt.

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

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 ((os.date("%H:%M", os.time()) >= (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) == fibaro:getValue(1, "sunriseHour")) 
 or (os.date("%H:%M", os.time()) <= (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) == fibaro:getValue(1, "sunriseHour"))
 or (os.date("%H:%M", os.time()) == (zeitMaxAufgang ))))
 and rollershutter_runs == 0)
	then

Ich poste noch einmal den ganzen code.

--[[
%% autostart
%% properties
%% globals
--]]
-----------------------------------------------
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
print(Sonnenaufgang, 'Sonnenaufgang')
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
print (Sonnenuntergang, 'Sonnenuntergang')

local min1 = 20 -- Zeit in min. wo die Sonne Frueher auf geht... Sonnenaufgang.
local min2 = 60 -- Zeit in min. wo die Sonne Spaeter unter geht... Sonnenaufgang.
local zeitMaxAufgang = '06:00' --Fruestens wenn Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn Sonne unter geht.

print(min1,'Aufgesetzte zeit in minuten... Sonnen Aufgang.')
print(min2, 'Aufgesetzte zeit in minuten... Sonnen Untergang.')
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollershutter-Controller started for the first time (Ver.' .. version .. ')');
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---################# Hier Sonnenaufgang !!###############################################
-----------------------------------------------------------------------------------------
if (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) >= (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) == fibaro:getValue(1, "sunriseHour")) 
 or (os.date("%H:%M", os.time()) <= (zeitMaxAufgang)and os.date("%H:%M", os.time()+min1*60) == fibaro:getValue(1, "sunriseHour"))
 or (os.date("%H:%M", os.time()) == (zeitMaxAufgang ))))
 and rollershutter_runs == 0)
	then
  
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenaufgang... Opening rollershutters');
    	print('Sonnenaufgang '..sunriseHour)
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       fibaro:debug('Rollos wurden geoefnet.');
       fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------    
----------------- Hier Sonnenuntergang !! -----------------------------------------
-----------------------------------------------------------------------------------
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) <= (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) == fibaro:getValue(1, "sunsetHour")) 
 or (os.date("%H:%M", os.time()) >= (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) == fibaro:getValue(1, "sunsetHour"))
 or (os.date("%H:%M", os.time()) == (zeitMaxUntergang))))
 and rollershutter_runs == 0)
	then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1'); 
       fibaro:debug('Sonnenuntergang... Closing rollershutters');
		print('Sonnenuntergang '..sunsetHour)
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       fibaro:debug('Rollos wurden geschlossen.');
       fibaro:setGlobal('rollershutter_runs', '0');
    
end
---##############################################################################################
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end
----------------------------------------------------------------------------------
----------- Wird geschaut ob tag oder nacht ist. ---------------------------------
----------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > fibaro:getValue(1, "sunriseHour"))
and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then
    print('Es ist Tag');
else
    print('Es ist Nacht');
end

Bitte entschuldigt die Fehler aber ich habe Rollos erst seit Sonntag 5 Tage.

Nicht vergessen mit den +,- erreicht man einen VOR oder NACH geschaltete Zeit.
os.time()+min160)
oder
os.time()-min160)

Hallo,

@parip69 Dein Programm ist nun aktiv in meiner Steuerung.

Noch zu meiner Frage:
Was würdet Ihr empfehlen.
Ich möchte mit einem Befehl das alle Rolläden auf oder zu fahren.
Alarm z.B. Rauchmelder.
Würdet Ihr ein LUA Script empfehlen?
Grafische Scene
oder gibt es eine Steuerung dafür?

Danke.

cu
karlk

Da bin ich wieder.
Ich habe Tage gebraucht und die aufgesetzte Zeit im Debug dar zu stellen.
Wenn man die Minuten ein gibt am Anfang des Scriptes, dann kann mann die Uhrzeit im Debug sehen wann die Sonnenaufgang oder Sonnenuntergang sein wird.

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

local min1 = 15 -- Zeit in min. wo die Sonne Frueher auf geht... Sonnenaufgang.
local min2 = 60 -- Zeit in min. wo die Sonne Spaeter unter geht... Sonnenaufgang.
local zeitMaxAufgang = '06:00' --Fruestens wenn Sonne auf geht.
local zeitMaxUntergang = '22:00' --Spaetestens wenn Sonne unter geht.
---------------------------------------------------------------------------------
----#########################################################################----
---------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
--------------------------------------------------------------------------------

local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
    debug('gold', ""..Sonnenaufgang.." Sonnenaufgang")

debug('gold', ""..min1.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+min1*60));
debug('yellow',VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")

--------------------------------------------------------------------------------

    local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
    debug('orangered',""..Sonnenuntergang.. " Sonnenuntergang")

debug('red', ""..min2.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+min2*60));
debug('crimson',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")

--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollershutter-Controller started for the first time (Ver.' .. version .. ')');
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---################# Hier Sonnenaufgang !!###############################################
-----------------------------------------------------------------------------------------
if (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) >= (zeitMaxAufgang)and os.date("%H:%M", os.time()-min1*60) == fibaro:getValue(1, "sunriseHour")) 
 or (os.date("%H:%M", os.time()) <= (zeitMaxAufgang)and os.date("%H:%M", os.time()-min1*60) == fibaro:getValue(1, "sunriseHour"))
 or (os.date("%H:%M", os.time()) == (zeitMaxAufgang ))))
 and rollershutter_runs == 0)
	then
  
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sonnenaufgang... Opening rollershutters');
    	
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       debug('yellow',"Rollos wurden geoefnet.");
       fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------    
----------------- Hier Sonnenuntergang !! -----------------------------------------
-----------------------------------------------------------------------------------
elseif (((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((os.date("%H:%M", os.time()) <= (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) == fibaro:getValue(1, "sunsetHour")) 
 or (os.date("%H:%M", os.time()) >= (zeitMaxUntergang)and os.date("%H:%M", os.time()-min2*60) == fibaro:getValue(1, "sunsetHour"))
 or (os.date("%H:%M", os.time()) == (zeitMaxUntergang))))
 and rollershutter_runs == 0)
	then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1'); 
       fibaro:debug('Sonnenuntergang... Closing rollershutters');
		
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       debug('royalblue',"Rollos wurden geschlossen.");
       fibaro:setGlobal('rollershutter_runs', '0');
    
end
---##############################################################################################
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end
----------------------------------------------------------------------------------
----------- Wird geschaut ob tag oder nacht ist. ---------------------------------
----------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > fibaro:getValue(1, "sunriseHour"))
and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then
    debug('yellow',"Es ist Tag");
else
    debug('royalblue',"Es ist Nacht");
end


Hallo karlk
ich habe heute Früh bemerkt das es 06:00 auf gemacht hat und er musste 06:15 mit aufgesetzte zeit auf machen.
Da bemerkte ich das mir wieder ein Fehler unterlaufen ist. Da dieser teil des codes (os.date("%H:%M", os.time()) == (zeitMaxAufgang ) vor allen andern bedingungen kommt macht er nicht das was er machen soll.
Habe noch einmal Den Code schlanker gemacht und ein Zeitfenster eingepflegt und meine Fehler korrigiert soweit ich das beurteilen kann.

Um dieses Forum nicht zu überfüllen möchte ich nur noch einmal meinen überarbeiteten Script reinstellen.
Wen bedarf sein sollte dann fragen.

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

local minSonAuf = 5 	-- Zeit in min. wo die Sonne Frueher auf geht... Sonnenaufgang.
local minSonUnt = 60 	-- Zeit in min. wo die Sonne Spaeter unter geht... Sonnenaufgang.
local zeitFruehstensAuf = '06: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.

---------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
---------------------------------------------------------------------------------------

	local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
    debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")

debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
-------     Hier nur das - oder + aendern    --->----v---->----v
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")

----------------------------------------------------------------------------------------

    local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
    debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")

debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
-------     Hier nur das - oder + aendern     --->-----v---->----v
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")

----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
debug('lavender',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---#################   Sonnenaufgang !!  ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
 or (VersetzteSonnenaufgang <= zeitSpaetestensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang))
 and rollershutter_runs == 0)
	then	
	
       debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
           fibaro:setGlobal('rollershutter_runs', '1');
    	
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       debug('yellow',"Rollos wurden geoefnet.");
       fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------------    
---################    Sonnenuntergang !!  ##########################################---
-----------------------------------------------------------------------------------------	
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and (VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
 and rollershutter_runs == 0)
	then
	
       debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
           fibaro:setGlobal('rollershutter_runs', '1');
		
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       debug('royalblue',"Rollos wurden geschlossen.");
       fibaro:setGlobal('rollershutter_runs', '0');
    
end
---#######################################################################################
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > fibaro:getValue(1, "sunriseHour"))
and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then
    debug('yellow',"Es ist Tag");
else
    debug('royalblue',"Es ist Nacht");
end
---###############################################################################

Im Kommentar …nicht das jemand in die irre gefürt wird, gleich die 2 zeile.
local minSonUnt = 60 – Zeit in min. wo die Sonne Spaeter unter geht… SonnenUntergang.

Hallo,

@parip69 jetzt ist Deine neue Version aktiv.
Bitte schreibe weiter - da kann ich einiges lernen.

Vielen Dank.

cu
karlk

Rollos.jpg

Ok
ich kann zwar nicht aus dem stand Programmieren aber Code schnipsel kann ich gut interpretieren um Problem fälle wie mit den stunden zusammen zählen war eine harte nuss. Habe noch ein paar Tip fehler und par Farben im debug.

Einfach austauschen.

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

local minSonAuf = 5 	-- Zeit in min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = 30 	-- Zeit in min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06: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.

---------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
---------------------------------------------------------------------------------------

	local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
    debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")

debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
-------     Hier nur das - oder + aendern    --->----v---->----v
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")

----------------------------------------------------------------------------------------

    local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
    debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")

debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
-------     Hier nur das - oder + aendern     --->-----v---->----v
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")

----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
debug('darkgreen',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
 
function rollershutter()
   local version = '2.0';
    local sunriseHour = fibaro:getValue(1,'sunriseHour');
   local sunsetHour = fibaro:getValue(1,'sunsetHour');
    local currentDate = os.date('*t');
   local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
-----------------------------------------------------------------------------------------
---#################   Sonnenaufgang !!  ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
 or (VersetzteSonnenaufgang <= zeitSpaetestensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang))
 and rollershutter_runs == 0)
	then	
	
       debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
           fibaro:setGlobal('rollershutter_runs', '1');
    	
                fibaro:call(98, 'open');
                fibaro:call(100, 'open');

       debug('yellow',"Rollos wurden geoefnet.");
       fibaro:setGlobal('rollershutter_runs', '0');
-----------------------------------------------------------------------------------------    
---################    Sonnenuntergang !!  ##########################################---
-----------------------------------------------------------------------------------------	
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and (VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
 and rollershutter_runs == 0)
	then
	
       debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
           fibaro:setGlobal('rollershutter_runs', '1');
		
                fibaro:call(98, 'close');
                fibaro:call(100, 'close');

       debug('royalblue',"Rollos wurden geschlossen.");
       fibaro:setGlobal('rollershutter_runs', '0');
    
end
---#######################################################################################
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
    debug('coral',"Es ist Tag");
else
    debug('royalblue',"Es ist Nacht");
end
---###############################################################################

Habe auch noch ein Waschmaschinen Scene da im Forum.hier
Habe auch ein Backup VD von der ganten Heizung zusammen gebastelt aber beisse mir immer noch die zähne aus mit dem aus lesen aus einer Variable die zirka ein DIN A4 gros ist

Habe noch eine Bedingung rein weil beide Zeiten die Uhrzeit und die Aufgesetzte zeit irgend wann die Nächten tage vor 06:00 Uhr liegen und dann machen sie nicht mehr auf.
Kannst Du nur diesen teil Code austauschen? Kannst Du das nachvollziehen? damit ich nicht alles rein stelle.

-----------------------------------------------------------------------------------------
---#################   Sonnenaufgang !!  ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((VersetzteSonnenaufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
 or (VersetzteSonnenaufgang <= zeitSpaetestensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
 or (VersetzteSonnenaufgang <= zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
 and rollershutter_runs == 0)
	then

So ist das mit denen die noch lernen.

Hallo
das braucht du nicht mehr austauschen da ja auch das vor der zeit ist .
Ich überleg mir was und poste nicht mehr voreilig.

Hi Parip69.

Ich habe deinen Code mal eingebaut und die Rolläden gehen auch hoch. Aber:
Mein Ziel war es, dass die Rolläden morgens frühenstens zu einer bestimmten Uhrzeit aufgehen und spätestens zu einer anderen Uhrzeit zu. Z.B. morgens frühestens um 7:00 Uhr auf, obwohl Sonnenaufgang tatsächlich um 6:00 Uhr ist. Und abends sollen die Rolläden um 21:00 Uhr in den Schlafräumen schließen, obwohl Sonnenuntergang z.B. 21:30 Uhr ist.

Ich dachte nun, dass ich das in deinem Skript bei ZeitFruehstensAuf bzw. zeitMaxUntergang eingeben kann? Aber es wird nicht umgesetzt?!

Das war auch mein ziel, aber habe auch meine Probleme mit de Annäherung der Uhr zeit und Sonnenaufgangs zeit.
Poste nur noch wenn ich es im griff habe.

Hallo,

bei mir hat er die Sommerzeit nicht genommen?
Warum ?

Danke für Hilfe.

cu
karlk

Info_Szene_Rollos.png

API_27_03_16.png

Hi,
bei mir gab es keine Probleme.
Hast Du mal einen neustart gemacht?

VG Hoggle

Hallo,

so habe jetzt einen Neustart der Szene gemacht.
Laut debug werden jetzt die richtigen Zeiten angezeigt.

Ich werde berichten.

cu
karlk

2016-03-27-19_20_21-Home-Center-2.jpg