Rollladen-Steuerung (Sonnenaufgang/-untergang)

Ich habe mal etwas mit Blockszenen rumprobiert.
Kann das so funktionieren?
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()+30*60) == fibaro:getValue(1, "sunsetHour") and string.format('%02d', currentDate.hour) … ':' … string.format('%02d', currentDate.min) == sunsetHour)) and rollershutter_run == 0 and tonumber(temp)>=0)

Bei mir gibt es Probleme mit dem nächtlichen Neustart der Szene.

Welche Szenen-Einstellung für die maximal ausführbaren Instanzen der Szene ist denn für die Rollladen-Steuerung notwendig - 1 oder ein höherer Wert?

Wieso “Neustart”?
Bzw was genau meinst du damit?

Ich lasse meine ab und an mit 2 laufen. Versuch es, kannst ja nichts kaputt machen…

Danke. Ich hatte die Variante des Codes am Laufen, bei der nachts um 2:00 Uhr die gesamte Szene rebootet wurde mittels einer Funktion SceneReboot. Warum das gemacht wurde, weiss ich nicht, hatte es aus einer der Vorlagen. Damit hatte ich ein paar Probleme, u.a. lief die so neugestartete Szene scheinbar in den Zweig, wo sourceTrigge[‘type’]=‘other’ war und gar kein rollerShutter aufgerufen wurde. Daher meine Frage nach der Anzahl der Instanzen.

Halte den Szenen-Reboot nun für überflüssig und habe heute den Code umgestellt und den Szenen-Reboot auskommentiert, so dass die Szene bei Autostart wie im letzten Code-Beispiel auf dieser Seite nur noch einmal die Unterfunktion rollerShutter aufruft, und diese Unterfunktion restartet sich dann alle 60 Sekunden. Damit läuft die Szene bisher okay. Anzahl Instanzen der Szene habe ich dabei auf 1 gesetzt.

Ich muss es noch ein paar Tage beobachten, ob damit alle Funktionen funktionieren (Öffnen/Schließen, Wochenende/Feiertag, Sonnenschutz).

“Szenen-Reboot” - habe ich noch nie genutzt…

Hi, ich haben den langen Script in Version 2.3 seit dem Frühjahr im Einsatz. Alles funktioniert bestens.
Seit den letzten heißen Tagen habe ich aber einige Probleme. Ist das bei euch auch so?
Falls ja seht es einfach als Verbesserungsvorschlag für den ansonsten wirklich genialen Rolloscript.

  1. Wenn ich ein Fenster über Nacht offen lassen bleiben alle Rollos am nächsten Morgen unten.
    Weil die Variable RolloUnten0Oben1 aufgrund des geöffneten Fensters anzeigt dass die Rollos schon oder noch oben sind.
    Ich kann die Szene dann zwar manuell starten aber dann steht abends die rollershutter_runs Variable falsch und die Rollos schließen nicht.
    Am nächsten Tag läuft dann wieder alles bis man wieder ein Fenster offen lässt .

  2. Obwohl nur ein Fenster offen ist bleiben alle Rollos der nachfolgenden “while”-Schleifen ebenfalls oben. Schließt man das Fenster gehen alle restlichen Rollos auch zu.
    Eigentlich wollte ich alle Fenster mit Kontakten versehen, aber das wäre dann ja blöd wenn alle Rollos oben bleiben nur weil das Schlafzimmerfenster noch offen ist.

  3. Der Sonnenschutz hält sich nicht an den “Zeitpunkt, an dem am Wochenende und an Feiertagen die Rolläden öffnen (fixer Zeitpunkt)”.
    Obwohl die Rollos erst um 10.00 öffnen sollen, macht der Sonnenschutz die Rollos heute z.B. schon um 7.30 teilweise hoch weil es schon sehr warm war.
    Um 10.00 gehen sie dann wirklich komplett auf, um 5 Minuten später wieder in Sonnenschutz Postion zurück zu fahren. Klar könnte ich den Sensorort und die Einstellungen ändern, aber eigentlich funktioniert es ja an den anderen Tagen perfekt.

Vielen Dank

Hi,
meine szene macht auch schwierigkeiten.
an manchen tagen gingen die rolläden abends nicht runter. lt debug wurde die szene nicht zur festgelegten Uhrzeit (22 uhr) gestartet.
daraufhin habe ich die szene mal deaktiviert und danach wieder aktiviert. i.d.r. hat dann wieder alles funktioniert.

seit gestern bekomme ich aber folgenden debug

DEBUG] 15:06:07: line 2: unexpected symbol near ‘%’

Line 2 sieht folgendermassen aus

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

die zeile mit autostart wäre die line 2.

ich sehe da keinen fehler, auch habe ich die komplette szene per copy/paste aus meinem archiv nochmals ins HC2 geladen und wollte die speichern.selber fehler…
hab dann versucht den header aus einer anderen aktiven szene (die weiterhin funktioniert) zu kopieren und im Rolloskript eingefügt.
auch das funktioniert nicht…

ich bin mit meinem latein am ende…

danke für hinweise wo ich noch suchen könnte.

Mit freundlichen Grüßen
bademeister

Fehler ist in Linie 1. 3 anstatt 2 -

Gruß

arg…

danke

#autsch :smiley:

Hi,
nachdem mir mit meinem vorherigen problem so super geholfen wurde :wink: jetzt mal ne härtere nuss…
meine szene öffnet nur noch die rolläden zur gewünschten Zeit und macht den Sonnenschutz, aber geschlossen werden die rolläden nicht…
die scene startet einfach nicht zur bestimmten zeit…

--[[
%% autostart
%% properties
%% globals
--]]
-- Bisherige Hauptarbeiten an dem Skript: http://www.Siio.de,  boomx, parip69 und thebrain. Kleine Modifikationen von alando22
-- Version 2.3
-- Dieses Skript realisiert eine Rolladen-Steuerung zum Sonnenaufgang und - untergang mit Verzögerungszeiten und einer
-- Temperaturschwelle, die zum schließen der Rolläden unterschritten werden muss.
-- Zusätzlich ist eine zufällige Verzögerung von 1-30 Minuten eingebaut, um die Aktivitäten nicht nachvollziehbar zu machen.
-- Zudem ist ein Sonnenschutz über einen Helligkeitssensor integriert. Eine Prüfung ggf. offener Türen ist ebenfalls enthalten.
-- Bei morgendlichen Öffnen wird zwischen Werktagen und Wochenenden & Feiertagen unterschieden.
-- Wochentags wird nach Sonnenaufgang geöffnet, am Wochenende & an Feiertagen zu fester Uhrzeit.
-- Dazu ist das Skript "Variable für Feiertage" von https://www.siio.de/board/thema/variable-fuer-feiertage/#post-42440 notwendig.
-- Ohne Verwendung des Feiertagsscripts bitte die Zeile 89 auskommentieren!!!
-- Notwendige globale Variablen (vorher anlegen!):
--
--	SunFirstMaxTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SunFirstMinTimeLux	Startwert = 0 (Interne Zeitvariable)
--	SonnenSchutz		Startwert = 0 (Variable gibt an, ob der Sonnenschutz aktiv '1' oder inaktiv '0' ist
--	RolloUnten0Oben1	Startwert = 1 (Variable gibt an, ob Rolladen unten '0' oder oben '1' ist

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

local minSonAuf = '-15' 				-- Verzögerungszeit in Minuten zum öffnen der Rolläden bei Sonnenaufgang.
local minSonUnt = '15' 					-- Verzögerungszeit in Minuten zum schließen der Rolläden bei Sonnenuntergang.
local zeitFruehstensAuf = '06:00'  		-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitSpaetestensAuf = '08:30'  	-- Zeitpunkt ab dem die Rolläden frühestens öffnen (Nicht am WE & Feiertag).
local zeitWeFtAuf = '08:30'				-- Zeitpunkt, an dem am Wochenende und an Feiertagen die Rolläden öffnen (fixer Zeitpunkt)
local zeitMaxUntergang = '22:00'    	-- Spätester Zeitpunkt, an dem die Rolläden schließen
-- local maxTempStart = 7					-- Temperatur unterhalb der die Rolladen abends schließen sollen

local startSunLux = 10000 				-- über 10.000 Lux für zu
local startSunDelay = 5					-- 5 Min bis zu
local endSunLux = 8000					-- unter 1.000 Lux für auf
local endSunDelay = 20					-- 20 Min bis auf
local sunProtectPosition = 25;			-- Sonnenschutzposition für Rolladen
local sunProtectPosition1 = 0;   -- Sonnenschutzposition für Raffstores
local sunProtectLamella = 25;    -- Sonnenschutzposition Lamellen

local luxSensor = 404				-- ID des Helligkeitssensors
-- local tempSensor = 11					-- ID des Temperatursensors (Außentemperatur)
local rebootSceneID = 86	   	    	-- ID der eigenen Scene die rebotet wird.
local meldungenDebug = 0				-- Hilfsvariable um die Meldungen nicht andauernd zu wiederholen.

local rs_wohnraum1 = 50;			   -- Schiebetür Raffst.
local rs_wohnraum2 = 52;        -- Fenster Raffst.
local rs_wohnraum3 = 54;        -- Wohnzimmer Fenster Raffst.
local rs_arbeitszimmer1 = 58;   -- Büro
local rs_bad1 = 60;             -- G-WC
local rs_bad2 = 42;             -- Bad
local rs_kueche1 = 44;          -- Fenster Garage
local rs_kueche2 = 46;          -- Fenster Garten Raffst.
local rs_kueche3 = 48;          -- Tür Garten Raffst.
local rs_theo = 40;             -- Fenster Theo
local rs_flurEG = 62;           -- Fenster Flur EG
local rs_ankleide = 32          -- Fenster Ankleide
local rs_elternGarten = 36      -- Fenster Eltern Garten

local doorID1 = 278;					-- ID des Türkontakts Schiebetür
local doorID2 = 338;				  -- ID Balkontür Küche
local doorID3 = 408;					-- ID Tür Terrasse Eltern (siehe WHILE-Schleifen bei ca. Zeile 275)
-------------------------------------------------------------------------------------------------------------------------
--################################ ab hier nichts mehr ändern! ##########################################################
-------------------------------------------------------------------------------------------------------------------------

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 Szene!")
              fibaro:sleep(1*60*1000)
              fibaro:startScene(rebootSceneID);
        end
        setTimeout(sceneReboot, 1*60*1000)
end
--########## Berechnung versetzter Sonnenaufgang und versetzter Sonnenuntergang ############
    debug('gold', ""..fibaro:getValue(1,'sunriseHour').." ...  Sonnenaufgang")
    debug('steelblue', ""..minSonAuf.." min... Zeitverzögerung zum Sonnenaufgang.")
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
    debug('yellow',""..VersetzterSonnenAufgang.." Öffnen der Rolladen.")
----------------------------------------------------------------------------------------
    debug('orangered',""..fibaro:getValue(1,'sunsetHour').. " ... SonnenUntergang")
    debug('steelblue', ""..minSonUnt.." min. Zeitverzögerung Sonnenuntergang.")
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
    debug('orangered',""..VersetzterSonnenUntergang..' schließen der Rolladen')

--############################## Feststellung ob Wochenende oder Feiertag ##################
local Feiertag_heute = tonumber(fibaro:getGlobalValue("Feiertag_heute")) -- Diese Zeile auskommentieren, wenn kein Feiertagsscript genutzt wird
local currentDate = os.date("*t")
local werktag = 1

---------------------------------------------------------------------------------------
--############ Prüfung wann Rolladen tatsächlich öffnen werden ########################
            if werktag == 0 then
				debug ('yellow', "Die Rolladen werden um "..zeitWeFtAuf.." öffnen.")
			elseif
			VersetzterSonnenAufgang > zeitFruehstensAuf and VersetzterSonnenAufgang < zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..VersetzterSonnenAufgang.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang < zeitFruehstensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitFruehstensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              elseif VersetzterSonnenAufgang > zeitSpaetestensAuf then
                debug('yellow',"Die Rolladen werden um "..zeitSpaetestensAuf.. " zuzüglich einer zufälligen Verzögerung öffnen.")
              end
            --------------------------------------------------------------------------------------------
            if VersetzterSonnenUntergang > zeitMaxUntergang then
                debug('steelblue',"Die Rolladen werden um "..zeitMaxUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen')
			  else
                debug('steelblue',"Die Rolladen werden um "..VersetzterSonnenUntergang.. ' zuzüglich einer zufälligen Verzögerung geschlossen')
              end
--#########################################################################################
	  debug('darkgreen',"Rolladen-Controller startet das erste mal!");

function rollerShutter()

--######## Berechnung der Variablen  ########
    local a, b = fibaro:getValue(1,'sunriseHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenAufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
----------------------------------------------------------------------------------------
    local a, b = fibaro:getValue(1,'sunsetHour'):match("([^,]+):([^,]+)")
    local VersetzterSonnenUntergang = 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.3';
	local currentDate = os.date('*t');
	local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutter_runs'));
	local random = math.random(5);			-- Hier wird die zufällige Verzögerung beeinflusst.
	local min = math.floor((random*100)/60);
--------------------------------------------------------------------------------------------

	if ((Feiertag_heute == 1 or currentDate.wday == 7 or currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 6))
	then
		werktag = 0
		-- debug('grey', "Heute ist Wochenende oder ein Feiertag.")
	else
		werktag = 1
		-- debug('grey',"Heute ist ein Werktag und kein Feiertag.")
	end
------------------------------------------------------------------------------------------
---#################   SonnenSchutz... Rolladen runterfahren !!   #########################---
------------------------------------------------------------------------------------------

if  ( tonumber(fibaro:getValue(luxSensor, "value")) > startSunLux )
	-- and sunProtectTempMin <= tonumber(fibaro:getValue(tempSensor, "value"))
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
      ---------------- Rolladen eintragen  ----------------------------------------

    --fibaro:call(rs_wohnraum2, "setValue", sunProtectPosition1); --Fenster Esszimmer
    --fibaro:call(rs_wohnraum2, "setValue2", sunProtectLamella); --Lamellen
		--fibaro:call(rs_wohnraum3, "setValue", sunProtectPosition1); --Fenster Wohnzimmer
    --fibaro:call(rs_wohnraum3, "setValue2", sunProtectLamella); --Lamellen
    fibaro:call(rs_arbeitszimmer1, "setValue", sunProtectPosition); --Fenster Büro
		fibaro:call(rs_bad1, "setValue", sunProtectPosition); -- Fenster G-WC
		-- fibaro:call(rs_bad2, "setValue", sunProtectPosition); --Fenster Bad
		fibaro:call(rs_kueche1, "setValue", sunProtectPosition); --Fenster Garage
    --fibaro:call(rs_kueche2, "setValue", sunProtectPosition1); --Fenster Garten
    --fibaro:call(rs_kueche2, "setValue2", sunProtectLamella); --Lamellen
    --fibaro:call(rs_kueche3, "setValue", sunProtectPosition1); --Tür Garten
    --fibaro:call(rs_kueche3, "setValue2", sunProtectLamella); --Lamellen
    -- fibaro:call(rs_theo, "setValue", sunProtectPosition); --Fenster Theo
    fibaro:call(rs_flurEG, "setValue", sunProtectPosition); --Fenster Flur
    --fibaro:call(rs_ankleide, "setValue", sunProtectPosition); --Fenster Ankleide
    --fibaro:call(rs_elternTerrasse, "setValue", sunProtectPosition) --Fenster Terrasse

      ---------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Lux  ... Die Rolladen 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 Rolladen 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... Rolladen hochfahren !!  ###########################---
------------------------------------------------------------------------------------------
elseif ( tonumber(fibaro:getValue(luxSensor, "value")) < endSunLux )
    and (os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
    and (os.date("%H:%M", os.time()) < VersetzterSonnenUntergang)
    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
---------------- Rolladen eintragen  --------------------------------------------------

    --fibaro:call(rs_wohnraum1, 'open');
    --fibaro:call(rs_wohnraum2, 'open');
    --fibaro:call(rs_wohnraum3, 'open');
		fibaro:call(rs_arbeitszimmer1, 'open');
		fibaro:call(rs_bad1, 'open');
		-- fibaro:call(rs_bad2, 'open');
		fibaro:call(rs_kueche1, 'open');
    --fibaro:call(rs_kueche2, 'open');
    --fibaro:call(rs_kueche3, 'open');
    -- fibaro:call(rs_theo, 'open');
    fibaro:call(rs_flurEG, 'open');
    --fibaro:call(rs_ankleide, "open");
    --fibaro:call(rs_elternTerrasse, "open");

--------------------------------------------------------------------------------------
        debug('greenyellow', fibaro:getValue(luxSensor, "value")..' Die Rolladen fahren hoch!!!')
        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 Werktags!!  ###############################################--
------------------------------------------------------------------------------------------
elseif werktag == 1 and ((VersetzterSonnenAufgang > zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzterSonnenAufgang)
 or (VersetzterSonnenAufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf)
 or (VersetzterSonnenAufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('gold', 'Sonnenaufgang... öffne Rolladen');
		debug('gold', 'Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);

		fibaro:call(rs_wohnraum1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_arbeitszimmer1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad2, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_kueche1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche3, 'open');
    fibaro:sleep(math.random(5000,10000));
    -- fibaro:call(rs_theo, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, 'open');
    fibaro:sleep(math.random(5000,10000));

      debug('yellow',"Rolladen wurden geöfnet.");
      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()) >= VersetzterSonnenAufgang) then
          debug('coral',"Es ist Tag.");
      end
------------------------------------------------------------------------------------------
---#################   Sonnenaufgang Wochenende und Feiertags!!  ###################################--
------------------------------------------------------------------------------------------
elseif werktag == 0 and ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == zeitWeFtAuf)
 and (tonumber(rollershutter_runs) == 0))
    then
		debug('green', 'Werktag = '.. werktag)
        debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('yellow','Es ist '..zeitWeFtAuf..'Uhr, Öffne Rolladen');

		fibaro:call(rs_wohnraum1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_arbeitszimmer1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad1, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_bad2, 'open');
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_kueche1, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche3, 'open');
    fibaro:sleep(math.random(5000,10000));
    -- fibaro:call(rs_theo, 'open');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, 'open');
    fibaro:sleep(math.random(5000,10000));

      debug('yellow',"Rolladen wurden geöfnet.");
      fibaro:setGlobal('SunFirstMaxTimeLux', '0');
      fibaro:setGlobal('SunFirstMinTimeLux', '0');
      fibaro:setGlobal('SonnenSchutz', '0'); --SonnenSchutz wurde entfernt.
      fibaro:setGlobal('rollershutter_runs', '0');
      fibaro:setGlobal('RolloUnten0Oben1', '1');

	  debug('coral',"Es ist Tag.");

-----------------------------------------------------------------------------------------
---################    SonnenUntergang !!  ###########################################---
-----------------------------------------------------------------------------------------
elseif (tonumber(rollershutter_runs) == 0) and ((VersetzterSonnenUntergang < zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzterSonnenUntergang)
 or (VersetzterSonnenUntergang > zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
    then

       	debug('darkkhaki',"Rolladen-Controller ist gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutter_runs', '1');
		debug('steelblue', 'Sonnenuntergang... schließe Rolladen')
		-- debug('sttelblue', 'Die Temperatur beträgt '..tonumber(fibaro:getValue(tempSensor, "value"))..'°C.')
		debug('steelblue', 'Die zufällige Verzögerung beträgt ' .. min .. ' min.');
		fibaro:sleep(random*100000);

		fibaro:call(rs_arbeitszimmer1, 'close')	--ID für close ohne prüfung eines offenen Fensters
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_bad1, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_bad2, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche1, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_kueche2, 'close');
    fibaro:call(rs_kueche2,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    --fibaro:call(rs_kueche3, 'close');
    --fibaro:call(rs_kueche3,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
		fibaro:call(rs_wohnraum2, 'close');
    fibaro:call(rs_wohnraum2,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_wohnraum3, 'close');
    fibaro:call(rs_wohnraum3,'setValue2', '0')
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_theo, 'close');
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_flurEG, "close");
    fibaro:sleep(math.random(5000,10000));
    fibaro:call(rs_ankleide, 'close')
    fibaro:sleep(math.random(5000,10000))
    fibaro:call(rs_elternGarten,'close')
    fibaro:sleep(math.random(5000,10000))

		while
			(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_wohnraum1, 'close');
      fibaro:call(rs_wohnraum1,"setValue2", '0')

		while
			(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_kueche3, 'close');
      fibaro:call(rs_kueche3, "setValue2","0")

		--while
		--	(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird Rolladen nicht geschlossen
		--	fibaro:sleep(10*1000)
		--end
 		--	fibaro:call(rs_wohnraum1, 'close');

      debug('royalblue',"Rolladen 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()) >= VersetzterSonnenUntergang) 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
  debug('orangered', 'Source device = ' .. sourceTrigger['deviceID'])
elseif (sourceTrigger['type'] == 'global') then
  debug('orangered', 'Global variable source = ' .. sourceTrigger['name'])
elseif (sourceTrigger['type'] == 'other') then
        ---------------- Rolladen eintragen  ----------------------------------------
      if(os.date("%H:%M", os.time()) > VersetzterSonnenAufgang)
        and(os.date("%H:%M", os.time()) < VersetzterSonnenUntergang) then

       fibaro:call(rs_wohnraum1, 'open');
    fibaro:call(rs_wohnraum2, 'open');
    fibaro:call(rs_wohnraum3, 'open');
		fibaro:call(rs_arbeitszimmer1, 'open');
		fibaro:call(rs_bad1, 'open');
		fibaro:call(rs_bad2, 'open');
		fibaro:call(rs_kueche1, 'open');
    fibaro:call(rs_kueche2, 'open');
    fibaro:call(rs_kueche3, 'open');
    fibaro:call(rs_theo, 'open');
    fibaro:call(rs_flurEG, 'open');
    fibaro:call(rs_ankleide, "open");
    fibaro:call(rs_elternTerrasse, "open");
        debug('coral',' Die Rolladen 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
      ---------------------------------------------------------------------------
  debug('orangered', 'Other source.')
end
--###########################################################################################

debug sieht wie folgt aus…

[DEBUG] 02:00:15: Neustart der Szene!
[DEBUG] 02:01:15: 05:27 … Sonnenaufgang
[DEBUG] 02:01:15: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:15: 05:12 Öffnen der Rolladen.
[DEBUG] 02:01:15: 21:45 … SonnenUntergang
[DEBUG] 02:01:15: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:15: 22:00 schließen der Rolladen
[DEBUG] 02:01:15: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:15: Die Rolladen werden um 22:00 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:15: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:15: Es ist Nacht.
[DEBUG] 02:01:15: Other source.
[DEBUG] 06:00:19: Werktag = 1
[DEBUG] 06:00:19: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 06:00:19: Sonnenaufgang… öffne Rolladen
[DEBUG] 06:00:19: Waiting 6 min
[DEBUG] 06:08:18: Rolladen wurden geöfnet.
[DEBUG] 06:08:19: Es ist Tag.

mehr passiert nicht… ich habe nichts geändert, die rolläden schliessen einfach nicht selbststätig…

danke
Mit freundlichen Grüßen
bademeister

Das passiert bei mir immer wenn ich mal wieder am Script gespielt oder neu gestartet habe. Backup oder Neustart etc.
Keine Fehlermeldung, aber Rollos schließen nicht. Bei mir hat dann rollershutter_runs den falschen Startwert.

Es sind nur 4 der 5 verwendeten Variablen in der Anleitung aufgeführt, rollershutter_runs fehlt:
– SunFirstMaxTimeLux Startwert = 0 (Interne Zeitvariable)
– SunFirstMinTimeLux Startwert = 0 (Interne Zeitvariable)
– SonnenSchutz Startwert = 0 (Variable gibt an, ob der Sonnenschutz aktiv ‘1’ oder inaktiv ‘0’ ist
– RolloUnten0Oben1 Startwert = 1 (Variable gibt an, ob Rolladen unten ‘0’ oder oben ‘1’ ist
– rollershutter_runs Startwert = 0 (Rollos schließen nur bei Wert 0)

Wird z.B. in Zeile 244 abgefragt.

rollershutter_runs Startwert = 0 (Rollos schließen nur bei Wert 0)

Grundsätzlich ja. Diese Prüfung ist aber auch in den anderen if-Abfragen mit drin. Ergo passiert gar nichts, sofern die Var den falschen Wert hat.

Gruß

Bei mir ist fast immmer die RolloUnten0Oben1 oder rollershutter_runs Variable die Ursache wenn die Rollos nicht hoch oder runter fahren.

Heute Nacht z.B., ein Fenster war noch offen, daher ein Rollo noch offen. Habe Backup gemacht und schon hatte RolloUnten0Oben1 den falschen Wert.
Da die Szene wegen des Backups ja nicht komplett bis Ende gelaufen ist, blieb die Variable wegen des noch offenen Fenster auf OBEN1 hängen.
Schließe ich das Fenster nach dem Backup ändert das nicht mehr die Variable RolloUnten0Oben1.
Hätte ich nicht manuell auf UNTEN0 korrigiert wären die Rollos heute Morgen nicht hochgefahren.

Hallo

Wenn ihr andere Vareable in euer skript aufnehmt oder Verändert dann vergest nicht, am endes des skriptes die Vareablen einzutragen die in Die Grunstelung gesetzt werden müssen dann habt ihr immer eine saubere ausgangs sitzation. Einfach auf “START” drücken dann wird (sourceTrigger[‘type’] == ‘other’) ausgelöst und alle Rollos und Vorallen die Vareablen erden dem entsprechend gesetzt.

Gruss

hi, das funktioniert bei mir auch nicht.

folgende fehlermeldung kommt

[DEBUG] 17:58:52: 05:27 … Sonnenaufgang
[DEBUG] 17:58:52: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 17:58:52: 05:12 Öffnen der Rolladen.
[DEBUG] 17:58:52: 21:45 … SonnenUntergang
[DEBUG] 17:58:52: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 17:58:52: 22:00 schließen der Rolladen
[DEBUG] 17:58:52: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 17:58:52: Die Rolladen werden um 22:00 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 17:58:52: Rolladen-Controller startet das erste mal!
[DEBUG] 17:58:52: line 334: attempt to concatenate local ‘deviceID’ (a nil value)

RolloUnten0Oben1 steht auch noch auf 0= unten
die Rolladen sind allerdings hoch gefahren.

danke
Mit freundlichen Grüßen
bademeister

Prüf die IDs nochmal. Hier kommt es zu einem Fehler, eine ID ist nil.

Gruß

hi,
zur info, ich habe nichts geändert seit meinem post oben…

[DEBUG] 17:58:52: 05:27 … Sonnenaufgang
[DEBUG] 17:58:52: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 17:58:52: 05:12 Öffnen der Rolladen.
[DEBUG] 17:58:52: 21:45 … SonnenUntergang
[DEBUG] 17:58:52: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 17:58:52: 22:00 schließen der Rolladen
[DEBUG] 17:58:52: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 17:58:52: Die Rolladen werden um 22:00 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 17:58:52: Rolladen-Controller startet das erste mal!
[DEBUG] 17:58:52: line 334: attempt to concatenate local ‘deviceID’ (a nil value)
[DEBUG] 02:00:05: Neustart der Szene!
[DEBUG] 02:01:05: 05:28 … Sonnenaufgang
[DEBUG] 02:01:05: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:05: 05:13 Öffnen der Rolladen.
[DEBUG] 02:01:05: 21:44 … SonnenUntergang
[DEBUG] 02:01:05: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:05: 21:59 schließen der Rolladen
[DEBUG] 02:01:05: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:05: Die Rolladen werden um 21:59 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:05: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:05: Es ist Nacht.
[DEBUG] 02:01:05: Other source.
[DEBUG] 06:00:09: Werktag = 1
[DEBUG] 06:00:09: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 06:00:09: Sonnenaufgang… öffne Rolladen
[DEBUG] 06:00:09: Waiting 5 min
[DEBUG] 06:06:25: Rolladen wurden geöfnet.
[DEBUG] 06:06:25: Es ist Tag.
[DEBUG] 21:59:39: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 21:59:39: Sonnenuntergang… schließe Rolladen
[DEBUG] 21:59:39: Die zufällige Verzögerung beträgt 3 min.
[DEBUG] 22:04:29: Rolladen wurden geschlossen.

[DEBUG] 22:04:30: Es ist Nacht.
[DEBUG] 02:00:33: Neustart der Szene!
[DEBUG] 02:01:33: 05:29 … Sonnenaufgang
[DEBUG] 02:01:33: -15 min… Zeitverzögerung zum Sonnenaufgang.
[DEBUG] 02:01:33: 05:14 Öffnen der Rolladen.
[DEBUG] 02:01:33: 21:44 … SonnenUntergang
[DEBUG] 02:01:33: 15 min. Zeitverzögerung Sonnenuntergang.
[DEBUG] 02:01:33: 21:59 schließen der Rolladen
[DEBUG] 02:01:33: Die Rolladen werden um 06:00 zuzüglich einer zufälligen Verzögerung öffnen.
[DEBUG] 02:01:33: Die Rolladen werden um 21:59 zuzüglich einer zufälligen Verzögerung geschlossen
[DEBUG] 02:01:33: Rolladen-Controller startet das erste mal!
[DEBUG] 02:01:33: Es ist Nacht.
[DEBUG] 02:01:33: Other source.
[DEBUG] 08:30:39: Werktag = 0
[DEBUG] 08:30:39: Rolladen-Controller ist gestartet (Ver.2.3)
[DEBUG] 08:30:39: Es ist 08:30Uhr, Öffne Rolladen
[DEBUG] 08:31:59: Rolladen wurden geöfnet.
[DEBUG] 08:31:59: Es ist Tag.

der fehler mit der DeviceID kommt nicht mehr, stattdessen sieht es so aus, als ob die szene wieder ohne probleme läuft (gestern habe ich die rolläden schon vor 22 uhr manuell geschlossen, daher kann man nur vom debug ausgehen).

ich werde heute abend mal abwarten und beobachten.

Mit freundlichen Grüßen
bademeister

rolladen schliessen wieder automatisch…

muss man nicht verstehen…

schönen abend
bademeister

Moin Moin, mal 'ne andere Frage zur “Steuerung”. Gibt es eine Möglichkeit das Blockieren eines Rollladen zu bemerken und eine Benachrichtiung zu versenden?

Hatte das Phänomen nämlich heute, dass ein Rollladen normal geschlossen hat und ein anderer nicht. Erst nach einem manuellen Betätigen der Schalter lief wieder alles problemlos (was jetzt hoffentlich auch so bleibt).

Das der Rollladen nicht richtig geschlossen wurde muss man doch irgendwo gemeldet bekommen und weitergeben können.

Dabei kann mir doch sicher wer helfen. :slight_smile:

Grüße
Cannon