Gibt es ein funktionierendes Rolladenscript?

Hallo Gemeinde,
ich habe sowohl hier im Forum als auch im englischsprachigen Fibaro-Forum alles durchsucht.
Es gibt viele Ansätze für Rolladenscripte jedoch scheinen die meisten nicht gut zu funktionieren wenn man den letzten Einträgen glauben darf.

Ich selbst habe auch schon eines der Scripte hier genutzt. Die Rolladen fuhren zu wilden Zeiten oder überhaupt nicht :smiley:

Ich nutze die “Main Scene”, in der bereits Sonnenauf- und Untergang in einer VD gesetzt werden.
Dazu habe ich mir einen Sensative Stripe gekauft, der bis “unendlich” Lux messen kann.
Ich hätte gerne einen Sonnenschutz für bestimmte Rolladen. Die anderen sollen einfach nach den in der VD gesetzten Variablen fahren.

Hat jemand einen Tipp für mich wo ich so ein funktionierendes Script finde?

Du kannst mal dieses probieren:

Hilfreich wäre wenn Du Dich ein wenig mit LUA auskennst. Es ist modular aufgebaut und kann somit relativ einfach an eigene Bedürfnisse angepasst werden.
Ich habe das PDF (Anleitung) hier nicht mehr gefunden dass ich mal hochgeladen hatte.

Zum Sensative Strips, denn habe ich auch, da er aber sehr träge ist und nur bis 64.000 LUX geht nutze ich lieber einen alten 433 MHz Sensor (http request) der geht bis 120.000 und meldet den Wert jede 90 Sek.

hallo Benjamins,
die “wilden Zeiten” kommen vermutlich von Alerts im z-Wave Netz.
siehe auch “Geister im z-wave Netzwerk”.
Ansonsten sehe ich keinen Grund warum das in einem Skript nicht zuverlässig funktionieren soll.
Gruss - kro

1 „Gefällt mir“

Ich kann das Skript von @jeep empfehlen. Nutze ich seit mehr als einem halben Jahr und hatte bisher noch nie Probleme.
Ein großes Dankeschön nochmals an @jeep!

1 „Gefällt mir“

Hallo Jeep, wo finde ich das angehängte pdf Dokument? Suche schon verzweifelt danach :roll_eyes:
THX

Hi @skywiesel , keine Ahnung wo das verschollen ist. Muss mit der Umstellung des Forums zusammen hängen.
Ich lade es hier nochmal hoch.RollerShutterControl1.3.5a.pdf (451,7 KB)

Perfekt! Danke Dir vielmals!

Hallo Zusammen,

ich nutze auch das Script von @jeep nun würde ich es aber gerne ein wenig ändern und weiß noch nicht genau wie. Ich hätte gerne die Sonnenschutzfunktion OHNE das die Rolläden Abends und Morgens zu oder auf fahren, da ich für die Rolladen morgens und Abends eine eigene Szene habe. Also nur Sonnenschutz mit fahrt zur vorherigen Position etc.

Wie kann ich diese Funktionen aus dem Script deaktivieren ?

Ich wäre über eine Hilfe sehr dankbar.

Gruß
Fabian

Moin Gemeinde!

Hat einer von Euch vielleicht ein Rolladenscript, welches auf der HC3 läuft? Ich bin einfach zu dumm um zu verstehen, wie man sie von der HC2 auf die HC3 adaptiert.

Ich habe auf der HC2 diese hier benutzt und war bisher immer zufrieden. Was mir wichtig war, war das z.B. die Rollladen an den Türen erst zugingen wenn diese geschlossen wurden, damit man sich nicht aus Versehen aussperrt:

–[[
%% 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(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:call(590, ‚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(590, ‚close‘);
fibaro:call(571, ‚close‘);
fibaro:call(579, ‚close‘);
while (tonumber(fibaro:getValue(675, ‚value‘)) > 0) do
fibaro:sleep(101000)
end
fibaro:call(573, ‚close‘);
fibaro:call(575, ‚close‘);
fibaro:call(581, ‚close‘);
while
(tonumber(fibaro:getValue(672, ‚value‘)) > 0) do
fibaro:sleep(10
1000)
end
fibaro:call(569, ‚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

Viele liebe Grüße!

Christian

Moin Christian,
ich kann das Rolladenscript von @jeep sehr empfehlen. Ich selbst hatte mir mal das Script für die HC2 geladen und dann umgebastelt. Nach einigem hin und her funktioniert mittlerweise alles ohne Probleme. Dabei habe ich unheimlich viel über LUA gelernt, was ich gut für andere Scipte nutzen kann.

Zwischenzeitig wurde eine Version für die HC3 hochgeladen. Wie gesagt: Für mich absolut empfehlenswert.
Das Script hat eine „check4NC“ Funktion die z.B. eine geöffnete Tür überwacht. Erst wenn diese geschlossen ist, fahren auch die Rolläden. Ich nutze das bei einer Fliegentür an der Terrasse.
Gruß
Kai

Hallo zusammen,
ich habe mir auch gerade das Skript von @jepp angesehen und muss sagen das ist genau das was ich schon immer gesucht habe.
Ich bräuchte aber eine kleine Änderung im Skript, ich lasse meine Rolladen im Wohnzimmer spät Abends / Nachts nur zu 50 % geschlossen wegen Anwesenheitsbeleuchtung die bis zu einer bestimmten Uhrzeit eingeschaltet ist. Gibt es eine Möglichkeit wenn Abends alle Rolladen herunterfahren (rollerIDsN) zwei ID`s zu sezten die nur zu 50 % herunterfahren?
Ich kenne mich leider mit LUA nicht aus und bräuchte eure Hilfe.

Viele Grüße DickerDad

Diese Funktion ist ja bereits mit der Funktion goodEvening gegeben. Wenn hierzu bei rollerIDsE die entsprechenden Geräte eingetragen werden, werden diese zu Sonnenuntergang zur Hälfte geschlossen.
Meintest Du das?
Gruß
Kai

Hallo und Danke für deine Antwort,

Ja diese Fuktion ist mir gestern auch aufgefallen, die Rolladen die da eingtragen sind gehen aber nachher mit den anderen auch zu und das soll nicht der Fall sein. Ich habe diese beiden
den ganzen Tag auf und ab Sonnenuntergang die Nacht durch nur zu 50 % geschlossen. Mit der Morgenroutine gehen sie dann wieder zu 100 % auf.

Grüße

Dann könntest Du doch die Geräte lediglich bei rollerIDsE eintragen und entsprechend bei rollerIDsN nicht. Dann würden diese Geräte Abends zu 50% schließen und so über Nacht verbleiben.

Dann musst Du allerdings noch die Funktion earlymorning anpassen, da die Rolladen sich sonst morgens nicht öffnen und bei 50% verbleiben würden. Hier kannst Du (im Originalscript in Zeile 196) folgendes eintragen:
if (rollerStat == 0 or rollerStat == 50) then

Dadurch sollten dann morgen die entsprechenden Rolladen auf 100% öffnen.
Gruß
Kai

Ja genau das habe ich gerade auch gemacht, hatte ich gestern nicht auf dem Schirm.
und Danke für die Funktion earlyMorning.
Also das was da jetzt drin steht löschen und den neuen Eintrag einfügen.

Änderung EarlyMorning

Debug

bekomme aber jetzt diese Fehlermeldung

Grüße DickerDad

Das mit der Fehlermeldung wundert mich nicht.
Deine Zeile 196 sollte nicht da sein sondern in Zeile 198 stehen.
Das ganz müsste so aussehen:

local function earlymorning() -- 1.te Szene des Tages
   print('Funktion earlymorning gestartet. ') 
   --fibaro.call(lamp1ID, "turnOn"); 
   if (rollerIDsM[1] ~= nil) then
      for r=1, #rollerIDsM do
         if rollerIDsM[r] ~= nil then
             rollerStat = tonumber(fibaro.getValue(rollerIDsM[r], 'value'))
             if debug then print('Rollerstat :'.. rollerStat) end
             if (rollerStat == 0 or rollerStat == 50) then 
                if debug then print(rollerIDsM[r]..' ist noch geschlossen oder zur Hälfte geööfnet') end
                fibaro.call(rollerIDsM[r],'setValue', posHalf )
             end
          end
         fibaro.sleep(math.random(4000,10000)) ; --4 bis 10 Sek. warten 
      end --for
   end  
   print('Rolllaeden ' ..posQuarter..'% geoeffnet - ' .. os.date("%c"));
   
end  -- function earlymorning

Das Du die Rolläden dann alle nur zur Hälfte öffnest ist gewollt??
Gruß
Kai

Morgens sollten alle Rolladen zu 100 % öffnen.

Debug ohne Fehler

sieht jetzt gut aus

Dann nimm diesen Code:

local function earlymorning() -- 1.te Szene des Tages
   print('Funktion earlymorning gestartet. ') 
   --fibaro.call(lamp1ID, "turnOn"); 
   if (rollerIDsM[1] ~= nil) then
      for r=1, #rollerIDsM do
         if rollerIDsM[r] ~= nil then
             rollerStat = tonumber(fibaro.getValue(rollerIDsM[r], 'value'))
             if debug then print('Rollerstat :'.. rollerStat) end
             if (rollerStat == 0 or rollerStat == 50) then 
                if debug then print(rollerIDsM[r]..' ist noch geschlossen') end
                fibaro.call(rollerIDsM[r],'setValue', posOpen )
             end
          end
         fibaro.sleep(math.random(4000,10000)) ; --4 bis 10 Sek. warten 
      end --for
   end  
   print('Rolllaeden ' ..posOpen..'% geoeffnet - ' .. os.date("%c"));
   
end  -- function earlymorning

Gruß
Kai

Hab`s gerade geändert. Vielen Dank für deine Mühe, werde es testen und berichten.

Grüße DickerDad