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
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
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
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.
Hoffentlich passt die Logik auch für nach 0:00 Uhr.