Ich habe eine Szene erstellt und als Bild beigefügt.
Hintergedanke der Szene ist der:
In der Zeit von 4:45 und 5:45 soll bei Bewegung im Badezimmer die Beleuchtung im Bad, Wohnzimmer und Küche eingeschaltet werden. Diese Szene soll alle fünf Minuten geprüft werden.
Das ist die Zeit, wenn meine Frau morgens in der Frühschicht aufstehen muss.
Warum springt die Szene aber Nachmittags, Beispielhaft 13:00 Uhr an?
Ja, ist eine automatische Szene und Du hast mir (vermutlich) den Fehler im Ablauf schon gezeigt.
Ich wollte das eigentlich auf die Uhrzeit basierend schalten, aber das scheint nicht zu gehen, somit muss ich wohl einen Bewegungsmelder als Trigger verwenden. Wie kann ich dann die Uhrzeit in Abhängigkeit benutzen?
na durch die variable.
Eine zusätzliche szene (zeitgesteuert) setzt um 4:45uhr die Variable “Frühschicht” auf ein.
Eine andere um 5:45Uhr auf aus.
Dadurch kannst du deine Szene durch den Bewegungsmelder starten lassen, aber das Licht geht nur an wenn Bewegung erkannt und Variable Frühschicht auf ein steht (also zwischen 4:45 und 5:45Uhr).
criss, Dein Hinweis auf den Beitrag hat mir die Lösung gebracht. Ich habe das LUA-Script eingebunden:
--[[
%% properties
%% events
%% globals
--]]
--- ### Variablen ### ---
--- id = Lichtquelle ---
--- motion = Sensor ---
local id = 22;
local motion = 76;
---------------------- ### Code ### ----------------------
currentDate = os.date("*t");
if tonumber(fibaro:getValue(motion, "value")) > 0 then
fibaro:debug(' ' .. currentDate.hour..':'.. currentDate.min.. ' Uhr')
if ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) < "04:45") and
(string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) > "05:45")) then
fibaro:debug("Motion ausgelöst – aber es ist NICHT zwischen vier und sechs Uhr");
else
fibaro:debug ((os.date("Es ist %H:%M Uhr - Licht wird eingeschaltet")));
fibaro:call(id, "turnOn");
end
else
if ((string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) < "04:45") and
(string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) > "05:45")) then
fibaro:debug("Motion sicher – aber es ist NICHT zwischen vier und sechs6 Uhr");
else
fibaro:debug ((os.date("Es ist %H:%M Uhr - Licht wird ausgeschaltet")));
fibaro:call(id, "turnOff");
end
end
Das reagiert und schaltet das Licht am Tag aus und nun muss ich warten, ob meine Frau mich morgen Früh köpft oder ich weiter schlafen darf
Ja, danke, den hab ich dann auch so eingebunden, aber das Script reagiert nicht wie es soll, im Grunde reagiert es garnicht.
Im Debugger erscheint nur die Meldung:
[DEBUG] 21:07:46: 21:7 Uhr
[DEBUG] 21:07:46: Motion ausgelöst – aber es ist NICHT zwischen 16:00 und 06:45 Uhr
[DEBUG] 21:07:46: Badezimmer - Licht ausgeschaltet
Und nach etwa 30 Sekunden:
[DEBUG] 21:08:17: Motion sicher – aber es ist NICHT zwischen 16:00 und 06:45 Uhr
[DEBUG] 21:08:17: Blödsinn
Wobei ich den Auslöser am Rechner sehen kann, aber 21:07 Uhr ist definitiv im gewünschten Zeitrahmen.
wir können das Script nun gern auseinander nehmen, aber ich glaube du verstehst ja nicht was in dem Scrit steht und passiert.
Warum machst du es denn nicht über grafische Szenen?
Klar brauchst du dafür 3 grafische Blockszenen, aber es wär soviel einfacher für dich zu verstehen was dein Smart Home System da tut.