Zeitraumbasierte Szenen

Hallo Zusammen,

ich habe eine kleine Szene zur Steuerung meines Rollos (wenn ich ins Bett gehe und den Taster drücke, fährt das Rollo nicht ganz zu; ich muss also nicht daneben stehe bleiben und warten, um im richtigen Moment die Stop-Taste zu drücken). Das soll vor und nach 0:00 Uhr möglich sein, aber nicht den Rest des Tages.

Die Szene funktioniert im Zeitraum 21:00-23:59 gut.
Ich habe, weil die Zeitwerte in LUA verglichen werden, dass Ganze in zwei Schritten abgebildet.
Leider überspringt er aber die Bedingung 0:00-3:00, wenn es entsprechend spät ist.
Er überspringt das “elseif”, wenn es zwischen 0:00 und 3:00 ist:

Hat da jemand einen Hinweis?

--[[
%% properties
175 sceneActivation
%% globals
--]]

local currentTime = os.date("%H:%M");
local startSource = fibaro:getSourceTrigger();

if ( currentTime >= "21:00"  and currentTime < "23:59" and
   ( tonumber(fibaro:getValue(175, "sceneActivation")) == 20 ) ) 

 then
  fibaro:call(175, "setValue", "6")
  fibaro:debug("es ist zwischen 21:00-23:59 und SZ-rollo fährt Zu mit Schlitz");

elseif
  ( currentTime >= "0:00"  and currentTime < "3:00" and
  ( tonumber(fibaro:getValue(175, "sceneActivation")) == 20 ) )  
 then
  fibaro:call(175, "setValue", "6")
  fibaro:debug("es ist zwischen 0:00-3:00 und SZ-rollo fährt Zu mit Schlitz"); 
  
else
  fibaro:debug("No action");
  
end

Danke im Voraus

VG Hoggle

Wahrscheinlich habe ich die Lösung und nur zu komplex gedacht…:

local currentTime = os.date("%H:%M");
if ( currentTime >= "23:00"  and currentTime < "08:00" ) then
    ...
end

Geht es also jetzt?

:slight_smile:
Der Vor-0:00-Teil wird sich heute Abend zeigen.
Den Nach-0:00-Part - da muss ich mal sehen, wann ich das gefahrenfrei testen kann :slight_smile:

Aber davon mal abgesehen - hast Du eine Idee, warum er den elseif-Teil übersprungen haben könnte?

Hmmmm… Könnte es sein, dass die os.time im Format xx:xx gesetzt werden muss? Dann wäre es in der elseif nicht 0:00/3:00 sondern 00:00 und 03:00. Müsste ich aber selbst mal testen. Mach mal ein Fibaro:debug mit currentTime mit rein, dann sieht man, ob das sein könnte

Danke Dir!
Das Zeit-Format ist aber ein guter Hinweis…
Ich habe das debug mal eingebaut.

Schade, mit der Anpassung läuft es gar nicht mehr…

--[[
%% properties
175 sceneActivation
%% globals
--]]

local currentTime = os.date("%H:%M");
local startSource = fibaro:getSourceTrigger();

if ( (currentTime >= "21:00" and currentTime < "03:00") and
   ( tonumber(fibaro:getValue(175, "sceneActivation")) == 20 ) ) 

 then
  fibaro:call(175, "setValue", "6")
  fibaro:debug("es ist zwischen 21:00-23:59 und SZ-rollo fährt Zu mit Schlitz");
  fibaro:debug(currentTime)

else
  fibaro:debug("No action");
  fibaro:debug(currentTime);
end

Startet das Skript denn? Also debugget der das “No action”?

Ja, das kommt
Und die Zeit sieht auch gut aus.
Mir fehlt allerdings noch ein Neustart der HC2.

Der Neustart hat nicht geholfen.

Die Zeile

if ( currentTime >= "18:00" and currentTime < "03:00" and
   ( tonumber(fibaro:getValue(175, "sceneActivation")) == 20 ) ) 

nimmt er nicht

mit “23:59” geht das Rollo entsprechend runter.

Also habe ich es mit “oder” versucht:

if ( (currentTime >= "18:00" or currentTime < "03:59") and
   ( tonumber(fibaro:getValue(175, "sceneActivation")) == 20 ) ) 

Da fährt das Rollo jetzt runter.
Das sollte logisch auch passen, da der Wert größer 18 Uhr nicht zugleich kleiner 3 Uhr sein kann. :slight_smile:
Hoffentlich passt die Logik auch für nach 0:00 Uhr.

ok… Drücke die Daumen. :slight_smile: Kann es ansonsten auch nochmal testen.