Rollladen-Steuerung (Sonnenaufgang/-untergang)

Hallo
So da ich meine Besuche hinter mir habe, habe ich weiter gemacht…
Probiert aus das sollte jetzt gehen mit dem Zeitfenster.
Ich hoffe das ich nichts übersehen habe.

Tauscht nur diesen teil des Codes aus.

-----------------------------------------------------------------------------------------
---#################   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 os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
 or (VersetzteSonnenaufgang <= zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf ))
 and rollershutter_runs == 0)
	then

Hallo parip69.
Habe den geänderten Code eben mal übertragen. Allerdings ergibt sich hier gemäß Debug keine Änderung der Zeiten:
Ich wollte ja, dass die Rolläden beim Befüllen von ZeitMaxUntergang und ZeitSpaetestensAuf entsprechend reagieren. Das tun sie leider nicht (sh. Anhang).

Normal müsste die tatsächliche Sonnenaufgangszeit auf 7:00 Uhr und die tatsächliche Sonnenuntergangszeit auf testweise 18:00 Uhr vorverlegt werden. Gemäß Debug tut sich da aber nix…

LUA-Code.jpg

Debug.jpg

Hi,
Bin auch gerade dabei, eine Jalousiesteuerung zu basteln. Dafür suche ich noch nach einer Möglichkeit, eine Vaiable zu ändern, wenn der bzw. die Rolläden manuell gesteuert wurden, damit diese Position nicht gleich wieder automatisch verändert wird. Hat jemand einen Tipp für mich?
Vielen Dank
Thorsten

Hallo Oceanman
du scheinst keine werte eingetragen zu haben. Im debug mit Blau dargestellt steht das du 0 minuten hast.
Dem entsprechent kann auch nichts aufgerechnet werden

local minSonAuf = 0 	-- Zeit in min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = 60 	-- Zeit in min. wo die Sonne Spaeter unter geht... SonnenUntergang.

mit dem letzten Post von mir sollte der Code Besser arbeiten.
Hier mein debug von Heute früh.

test.png

Ich möchte ja auch nichts aufrechnen, sondern dass der tatsächliche Sonnenauf- und Sonnenuntergangwert auf die entsprechenden Werte geändert wird, sofern sie über dem Soll liegen.

Also: Wenn Sonnenuntergang um 17:30 Uhr, dann sollen die Rolläden zu dieser Uhrzeit runtergehen. Sofern der Sonnenuntergang aber um 21:30 Uhr ist, dann sollen sie schon um (testweise) 18:00 Uhr runtergehen. Beim Sonnenaufgang genauso, nur umgekehrt… Sie sollen da frühestens um 07:00 Uhr hochgehen.

In dem Fall 0 eintragen. Vielleicht die hc2 neu starten

Hallo
Oceanman
für mich war das nicht wichtig.
Aber kier.

-----------------------------------------------------------------------------------------    
---################    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)
  or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
 and rollershutter_runs == 0)
	then

Hi Intersailor,

Der Shutter 2 kann Szenenaktivierung.
Sofern also jemand den Taster manuell drückt, kann man die Auto-Szene aussetzen.
Man könnte dann such eine globale Variable setzen und nach einer definierten Zeit wieder resetten.

VG Hoggle

Hallo
Jetzt kann man auch - + werte einsetzen. VersetzteSonnenuntergang vor oder nach dem Echten Sonnenaufgabg setzen.

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

local minSonAuf = '-5' 	-- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' 	-- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.

hhmm… also im Debug zeigt das keine Änderung. Dort schreibt er immer noch, dass der Sonnenuntergang und die versetzte Sonnenuntergangszeit 19:56 Uhr ist. Dabei müsste er das doch auf 18:00 Uhr runtersetzen, weil ich das als ZeitMaxUntergang gesetzt habe?!

Der wird nichts nicht auf 18:00 Uhr runtergesetzt setzen. Der Wert ist wächst oder fällt mit jedem tag. Die Uhrzeit wird verglichen mit in deinem fall 18.00 Uhr. Das alles andere ist ja die Idee das die sonnen Untergänge oder aufgänge dynamisch sind.

Hi Hoggle,
Vielen Dank für den Tipp, werde ich nachher mal versuchen einzubauen
VG
Intersailor

Hallo,

habe ich da etwas falsch Verstanden?
Die Szene wird noch modifiziert?
Das die Rollos nie nach 22:00 Uhr zu gehen!

Danke

cu
karlk

Rollos_41.jpg

Ja so ist es, nie nach aber spätestens bis 22:00 das ja das der Grenzwert ist. so wie in der Früh. Frühstens…
Gedacht ist das es mit der aufgesetzten Sonnenuntergang dynamisch runter geht aber spätestens 22:00.
Brauchst du was anders???
Wenn Du sie säter runter fahren willst dann setze den Grenzwert 23:00 oder mehr. Ich könnte so machen Wenn 00:00 drin steht soll er den Grenzwert ignorieren.

Hallo,

Ich habe es so verstanden das die Rollos bei zeitFruehstensAuf nicht früher aufgehen sollen.
Das gleiche auch bei zeitMaxUntergang = gebe ich 22:00 Uhr ein dann sollen die Rollos nicht später wie 22:00 Uhr runter gehen.

Kannst Du das noch so einbauen @parip69.

Danke

cu
karlk

Genau so wie du es verstanden hast so soll es sein. Und so ist es auch. Die aufgesetzte Sonnen Untergang wird zwar später angezeigt aber die maxSonnenuntergang wird eingehalten. Ersetze den code.

-----------------------------------------------------------------------------------------    
---################    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)
  or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
 and rollershutter_runs == 0)
	then

or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
Hier wird das erledigt.

Hallo,

geht noch nicht - oder bin ich da falsch?

cu
karlk

Rollos_411.jpg

Hallo parip69,

ich habe die Rolladensteuerung auch im Einsatz und bin damit aktuell sehr zufrieden. Kannst Du mir bitte einmal den kompletten LUA Code zu Verfügung stellen damit ich die Anpassungen für mich vornehmen kann? Ich habe drei Kontakte in eine Schleife, das muss ich bei dir sicher noch einbauen? Wenn Fenster offen, bleibt das Fenster/Tür offen, erst wenn geschlossen dann schließe Rollladen.

Besten Dank

Wenn Du den code ersetzt hast dann ist alles in Ordnung. Das was du Angezeigt bekommst ist doch nur die aufgerechnete zeit nichts anders. Diese zeit wird nur verglichen, befindet sich diese aufgerechnete zeit nach der zeitmaxUntergang dann wird die Uhrzeit mit der zeitMaxUntergang verglichen und wenn das past dann wird runter gefahren.

Das was du Siehst ist nur damit mann im Debug eine vorstellung bekommt mit wie fiele Minuten mann sich hin und her bewegt.

Hallo

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

local minSonAuf = '-10' 	-- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt A= '60' 	-- Vohrzeichen - + 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("([^,]+):([^,]+)")
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("([^,]+):([^,]+)")
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 os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
 or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
 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)
  or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
 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
---###############################################################################