Rollladen-Steuerung (Sonnenaufgang/-untergang)

Anbei eine Rollladen-Steuerung, welche die Rollläden anhand des Sonnenaufgangs/-untergangs steuert. Es gibt in dem Skript eine random()-Zeit, welche das Skript wartet, bis es den Befehl absendet. Zusätzlich ist eine Prüfung eingebaut, ob die Temperatur unter 0° ist. So werden Schäden bei festgefrorenen Rollladenmotoren verhindert. Ihr müsst nur die ID’s der Geräte anpassen :slight_smile:

Es wird eine Variable rollershutter_runs benötigt.

--[[
%% autostart
%% properties
%% globals
--]]
 
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollladen-Steuerung erstmalig gestartet (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"));
  	local random = math.random(35);
  	local min = math.floor((random*100)/60);
 
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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
  			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug(Sonnenaufgang. Öffne Rollladen');
      		fibaro:debug('Warte ' .. min .. ' min');
          fibaro:sleep(random*100000);
      		fibaro:call(48, "open");
      		fibaro:debug('Rollladen geöffnet');
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1"); 
      		fibaro:debug('Sonnenuntergang... Schließe Rollladen');
      		fibaro:debug('Waiting ' .. min .. ' min');
          fibaro:sleep(random*100000);
      		fibaro:call(48, "close");
      		fibaro:debug('Rollladen 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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
  			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sonnenaufgang... Temperatur < 0... Rollladen bleibt geschlossen.');
          fibaro:call(98, "sendPush", "Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen", "rollershutter");
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sonnenuntergang... Temperatur < 0... Rollladen bleibt offen.');
          fibaro:call(98, "sendPush", "Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen", "rollershutter");
      		fibaro:setGlobal("rollershutter_runs", "0");
end
  	setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger["type"] == "autostart") then
	rollershutter();
end

Das Script hat paar Tippfehler…

ich hab hier meines mit meinen Rollädenshuttern.

Leider läuft es nicht. Es zeigt an das es erstmalig gestartet wurde. Das wars dann aber schon.

Die random 100000 ist ja eine verzögerung, wenn ich das richtig verstanden hab. 100000 als wert sind wieviel max. verzögerung in Minuten?
Woher holt das Script die Temperatur?

--[[
%% autostart
%% properties
%% globals
--]]
 
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
fibaro:debug('Rollladen-Steuerung erstmalig gestartet (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(41, "Temperature"));
  	local rollershutter_runs = tonumber(fibaro:getGlobalValue("rollershutter_runs"));
  	local random = math.random(35);
  	local min = math.floor((random*100)/60);
 
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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
  			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sonnenaufgang. Offne Rollladen');
      		fibaro:debug('Warte ' .. min .. ' min');
          fibaro:sleep(random*100000);
      		fibaro:call(8, "open");
            fibaro:call(17, "open");
           	fibaro:call(14, "open");
            fibaro:call(28, "open");
            fibaro:call(26, "open");
            fibaro:call(24, "open");
      		fibaro:debug('Rollladen geöffnet');
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1"); 
      		fibaro:debug('Sonnenuntergang... Schließe Rollladen');
      		fibaro:debug('Waiting ' .. min .. ' min');
          fibaro:sleep(random*100000);
      		fibaro:call(8, "close");
            fibaro:call(17, "close");
           	fibaro:call(14, "close");
            fibaro:call(28, "close");
            fibaro:call(26, "close");
            fibaro:call(24, "close");
      		fibaro:debug('Rollladen 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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
  			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sonnenaufgang... Temperatur < 0... Rollladen bleibt geschlossen.');
          fibaro:call(98, "sendPush", "Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen", "rollershutter");
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
			then
      		fibaro:debug('Rollladen-Steuerung gestartet (Ver.' .. version .. ')');
          fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sonnenuntergang... Temperatur < 0... Rollladen bleibt offen.');
          fibaro:call(98, "sendPush", "Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen", "rollershutter");
      		fibaro:setGlobal("rollershutter_runs", "0");
end
  	setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger["type"] == "autostart") then
	rollershutter();
end

Und eine Frage noch. Der Satz: “es wird eine Variable xy benötigt” macht mich ein wenig stutzig. Muss man da noch etwas machen oder wird einfach eine Variable mit dem Namen verwendet?

Also der Fehler war die Fehlende Variable. Die man erst anlegen muss. Nun läuft das Script durch…

Hi,

steht ja auch im Eingangspost, dass die Variable benötigt wird. Diese verhindert, dass die Open-Befehle mehrmals gesendet werden.

Die Temperatur holt er sich aus der API vom HC2. Werde es aber demnächst auf mein Aussenmodul vom Netatmo umstellen. Die sleep-Zeit wird durch Zufall (zwischen 1 und 60 min) generiert und wird dir im Debüt angezeigt.

Wo waren da Schreibfehler? :smiley:

Gruß

[ERROR] 10:52:29: line 26: expected near char(195)
es fehlt ein ’ vor Sonnenaufgang
[ERROR] 10:54:28: line 42: unexpected symbol near ‘=’
das leerzeichen muss weg fast am ende der zeile: temp)< =0)

Wenn es für Dich ok ist, würde ich das script ändern/anpassen und als mod dann veröffentlichen.

Hi,

dachte ich hätte mein Skript direkt von dem HC2 kopiert. Hatte es dann wohl doch nochmal geändert. :frowning: sorry. Ja, kannst du gern Posten.

Gruß

Hey BoomX!

Wie weit bist Du mit dem Auslesen der Außentemperatur über Netatmo? Kann sich das schon sehen lassen? :wink:
Interessant wäre auch, wenn man einzelne Rollläden durch einen Fensterkontakt “stoppen” könnte. Z.B. ein Geburtstag - man sitzt auf der Terrasse, die Tür ist geöffnet, der Kontakt "weiß dies - so dass der Rolladen erst dann runter fährt, wenn die Tür geschlossen wird, oder aber der Schalter manuell betätigt wird…

Geht sowas?

Und wie verwende ich das Script, wenn ich quasi mit Sonnenauf- und Untergang, die Außenbeleuchtung steuern möchte?

Viele Grüße

Christian

Hi,

kann gerne mal so ein Skript schreiben. Werde ich im Laufe der nächsten Woche mal in Angriff nehmen :slight_smile:

bzgl. deiner anderen Frage:

Würde das oben genannte Skript so Coden, dass du da dann auch Lampen mit steuern kannst, da hab ich auch noch welche draußen. Mache also ein Skript, zur Steuerung der Aktionen von Sonnenauf & Untergang.

Gruß

Du bist der Beste - danke! Ich bin also gespannt! :slight_smile:

Gruß zurück!

Hey zusammen!

Bei mir läuft die Szene leider noch nicht. Das hier ist der Fehlercode:

[DEBUG] 21:58:52: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
[DEBUG] 21:59:03: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
[DEBUG] 21:59:04: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
[ERROR] 07:37:58: LUA error: /opt/fibaro/scenes/517.lua:22: attempt to compare number with nil

Was habe ich denn jetzt wieder nicht hinbekommen?

Grüße

Christian

Hi,

hast du Variable rollershutter_runs eingerichtet?

Gruß

Guten Morgen!

Ja, habe ich. Ich hänge aber sicherheitshalber gleich mal ein Bild davon dran…

Hier das Script - adaptiert auf meine IDs:

–[[
%% autostart
%% properties
%% globals
–]]

local sourceTrigger = fibaro:getSourceTrigger();
local version = ‘2.0’;

fibaro:debug(‘Rollladen-Steuerung erstmalig gestartet (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(41, “Temperature”));
local rollershutter_runs = tonumber(fibaro:getGlobalValue(“rollershutter_runs”));
local random = math.random(35);
local min = math.floor((random
100)/60);

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 string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
then
fibaro:debug(‘Rollladen-Steuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“rollershutter_runs”, “1”);
fibaro:debug(‘Sonnenaufgang. Offne Rollladen’);
fibaro:debug(‘Warte ’ … min … ’ min’);
fibaro:sleep(random100000);
fibaro:call(569, “open”);
fibaro:call(571, “open”);
fibaro:call(579, “open”);
fibaro:call(573, “open”);
fibaro:call(575, “open”);
fibaro:call(581, “open”);
fibaro:debug(‘Rollladen geöffnet’);
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 string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
then
fibaro:debug(‘Rollladen-Steuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“rollershutter_runs”, “1”);
fibaro:debug(‘Sonnenuntergang… Schließe Rollladen’);
fibaro:debug(‘Waiting ’ … min … ’ min’);
fibaro:sleep(random
100000);
fibaro:call(569, “close”);
fibaro:call(571, “close”);
fibaro:call(579, “close”);
fibaro:call(573, “close”);
fibaro:call(575, “close”);
fibaro:call(581, “close”);
fibaro:debug(‘Rollladen 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 string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
then
fibaro:debug(‘Rollladen-Steuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“rollershutter_runs”, “1”);
fibaro:debug(‘Sonnenaufgang… Temperatur < 0… Rollladen bleibt geschlossen.’);
fibaro:call(531, “sendPush”, “Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen”, “rollershutter”);
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 string.format("%02d", currentDate.hour) … “:” … string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
then
fibaro:debug(‘Rollladen-Steuerung gestartet (Ver.’ … version … ‘)’);
fibaro:setGlobal(“rollershutter_runs”, “1”);
fibaro:debug(‘Sonnenuntergang… Temperatur < 0… Rollladen bleibt offen.’);
fibaro:call(531, “sendPush”, “Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen”, “rollershutter”);
fibaro:setGlobal(“rollershutter_runs”, “0”);
end
setTimeout(rollershutter, 60*1000);
end

if (sourceTrigger[“type”] == “autostart”) then
rollershutter();
end

Wahrscheinlich bin ich wieder zu mehlig und bekomme es nicht hin. Auf der einen Seite, meinen Sohn in den Schlaf wiegen, auf der Anderen der Laptop - Szenen umschreiben! :smiley:

Variable.jpg

Fehler.jpg

Hi,

nimm mal bitte folgenden Code. Deine Rollladen-IDs habe ich schon hinzugefügt :slight_smile:

--[[
%% autostart
%% properties
%% globals
--]]
 
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"));
  	local random = math.random(35);
  	local min = math.floor((random*100)/60);
 
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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
  			then
      		fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
          	fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sunrise... Opening rollershutters');
      		fibaro:debug('Waiting ' .. min .. ' min');
          	fibaro:sleep(random*100000);
                fibaro:call(569, “open”);
                fibaro:call(571, “open”);
                fibaro:call(579, “open”);
                fibaro:call(573, “open”);
                fibaro:call(575, “open”);
                fibaro:call(581, “open”);
      		fibaro:debug('Rollershutters opened');
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
			then
      		fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
          	fibaro:setGlobal("rollershutter_runs", "1"); 
      		fibaro:debug('Sunset... Closing rollershutters');
      		fibaro:debug('Waiting ' .. min .. ' min');
          	fibaro:sleep(random*100000);
                fibaro:call(569, “close”);
                fibaro:call(571, “close”);
                fibaro:call(579, “close”);
                fibaro:call(573, “close”);
                fibaro:call(575, “close”);
                fibaro:call(581, “close”);
      		fibaro:debug('Rollershutters closed');
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
  			then
      		fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
          	fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sunrise... Temperatur < 0... Rollershutters stay closed.');
      		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 string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
			then
      		fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
          	fibaro:setGlobal("rollershutter_runs", "1");
      		fibaro:debug('Sunset... Temperatur < 0... Rollershutters stay opened.');
      		fibaro:setGlobal("rollershutter_runs", "0");
end
  	setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger["type"] == "autostart") then
	rollershutter();
end

Klasse, Danke! :+1:t4::smiley:

Ich liebe dieses Forum! :-))))

Folgenden Fehler bekomme ich dann:

[ERROR] 10:09:53: line 29: unexpected symbol near char(226)

Ich muß ja immer die ID des Moduls (Roller Shutter) angeben und nicht die, des “untergeordneten” Z-Wave-Moduls, richtig?

Da hat er einfach beim Kopieren komische Zeichen eingesetzt :frowning:

Hier nochmal. Diesmal sollte es gehen.

EDIT:
Die IDs, welche du siehst, wenn du das device bearbeitest (siehe Bild)

--[[
%% autostart
%% properties
%% globals
--]]
 
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'));
   local random = math.random(35);
   local min = math.floor((random*100)/60);
 
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 string.format('%02d', currentDate.hour) .. ':' .. string.format('%02d', currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sunrise... Opening rollershutters');
       fibaro:debug('Waiting ' .. min .. ' min');
           fibaro:sleep(random*100000);
                fibaro:call(569, 'open');
                fibaro:call(571, 'open');
                fibaro:call(579, 'open');
                fibaro:call(573, 'open');
                fibaro:call(575, 'open');
                fibaro:call(581, 'open');
       fibaro:debug('Rollershutters opened');
       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 string.format('%02d', currentDate.hour) .. ':' .. string.format('%02d', currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
 then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1'); 
       fibaro:debug('Sunset... Closing rollershutters');
       fibaro:debug('Waiting ' .. min .. ' min');
           fibaro:sleep(random*100000);
                fibaro:call(569, 'close');
                fibaro:call(571, 'close');
                fibaro:call(579, 'close');
                fibaro:call(573, 'close');
                fibaro:call(575, 'close');
                fibaro:call(581, 'close');
       fibaro:debug('Rollershutters closed');
       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 string.format('%02d', currentDate.hour) .. ':' .. string.format('%02d', currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
   then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sunrise... Temperatur < 0... Rollershutters stay closed.');
       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 string.format('%02d', currentDate.hour) .. ':' .. string.format('%02d', currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
 then
       fibaro:debug('Rollershutter-Controller started (Ver.' .. version .. ')');
           fibaro:setGlobal('rollershutter_runs', '1');
       fibaro:debug('Sunset... Temperatur < 0... Rollershutters stay opened.');
       fibaro:setGlobal('rollershutter_runs', '0');
end
   setTimeout(rollershutter, 60*1000);
end
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end

roller.png

Hallo Daniel!

Es sieht ganz gut aus!:smiley::+1:t4:

Jetzt kann ich´s gar nicht abwarten bis es dunkel wird😁

Vielen lieben Dank!

Ich werde berichten!

Viele Grüße

Christian

boomx:
Danke. Dann werd ich daran mal arbeiten…

Guten Morgen zusammen!

Ich schrieb ja, ich werde berichten. Die gute Nachricht ist, ich bekomme bei der Szene keine Fehlermeldung. Die Schlechte: die Rollläden sind nach wie vor unten ;-( und ich weiß nicht warum…

Sonnenaufgang sollte um 07:37 sein. Ich habe schon den Zeitserver kontrolliert. Stimmt soweit alles.
Woher weiß die HC2 denn, wann der SA und SU ist? Vielleicht ist da der Fehler bei mir?

Viele Grüße

Christian