Hallo zusammen
Bin neu hier im Forum und habe versucht die LUA Lichtsteuerung auf meine Bedürfnisse anzupassen.
Habe drei Bewegungsmelder und zwei Zwischenstecker. Möchte dass das Licht nur nach Sonnenuntergang angeht und von jeweils einem der
drei BM gesteuert wird. Momentan schaltet bei Sonnenuntergang das Licht ein (ohne dass jemand den BM auslöst)und löscht erst wenn einer der BM auslöst (nicht gut wenn niemand zu Hause ist) Vielleich könnte mir jemand von euch Spezialisten einen Tipp geben wo ich den Fehler eingebaut habe.
Vielen Dank im Voraus, Gruss Willi
–[[
%% properties
109 value
101 value
96 value
10 value
14 value
%% globals
Sonnenstand
–]]
– VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene= 77 – ID dieser Szene
local motion1= 109 – ID des Bewegungssensors
local motion2= 101 – ID des Bewegungssensors
local motion3= 96 – ID des Bewegungssensors
local switch1= 10 – ID des Relay Switches
local switch2= 14 – ID des Relay Switches
– Lösche doppelte Szene(n)
if (fibaro:countScenes()>1)
then
fibaro:abort();
end
– Tageszeit prüfen / Licht aus
if (fibaro:getGlobalValue(“Sonnenstand”) == “Sonnenaufgang”)
and(tonumber(fibaro:getValue(switch1, “value”))) > 0
or (tonumber(fibaro:getValue(switch2, “value”))) > 0
then
timer=1;
fibaro:call(switch1, “turnOff”);
fibaro:call(switch2, “turnOff”);
fibaro:debug(“Prüfe Tageszeit”);
fibaro:debug(“Es ist (Sonnenaufgang), Licht ausgeschaltet!”);
timer=timer-1;
fibaro:sleep(10000);
fibaro:abort();
fibaro:killScenes(scene);
– Tageszeit prüfen
elseif
(fibaro:getGlobalValue(“Sonnenstand”) == “Sonnenaufgang”)
then
fibaro:debug(“Prüfe Tageszeit”);
fibaro:debug(“Es ist (Sonnenaufgang), Szene angehalten!”);
fibaro:abort();
fibaro:killScenes(scene);
else
– Schalte bei Sonnenuntergang Licht ein / aus
if (tonumber(fibaro:getValue(motion1, “value”)) > 0 ) and (tonumber(fibaro:getValue(switch1, “value”))) < 1 or (tonumber(fibaro:getValue(switch2, “value”))) < 1
or (tonumber(fibaro:getValue(motion2, “value”)) > 0 ) and (tonumber(fibaro:getValue(switch1, “value”))) < 1 or (tonumber(fibaro:getValue(switch2, “value”))) < 1
or (tonumber(fibaro:getValue(motion3, “value”)) > 0 ) and (tonumber(fibaro:getValue(switch1, “value”))) < 1 or (tonumber(fibaro:getValue(switch2, “value”))) < 1
then
fibaro:call(switch1, “turnOn”);
fibaro:call(switch2, “turnOn”);
local timer = (starttimer);
fibaro:debug(“Schalte Licht ein”);
end
– Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
if (tonumber(fibaro:getValue(switch1, “value”))) > 0
or (tonumber(fibaro:getValue(switch2, “value”))) > 0
then
local starttimer = 900;
local timer = (starttimer);
fibaro:debug(“Starte Timer”);
repeat
fibaro:sleep(1000);
– Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 10 Sekunden, um ein
– versehentliches (erneutes) Aktivieren der Szene zu verhindern
if (tonumber(fibaro:getValue(switch1, “value”))) < 1
or (tonumber(fibaro:getValue(switch2, “value”))) < 1
then
timer=1;
fibaro:call(switch1, “turnOff”);
fibaro:call(switch2, “turnOff”);
fibaro:sleep(10000);
break
end
timer=timer-1;
– Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(motion1, “value”))) > 0
or (tonumber(fibaro:getValue(motion2, “value”))) > 0
or (tonumber(fibaro:getValue(motion3, “value”))) > 0
then
timer=starttimer;
fibaro:debug(“Bewegung erkannt, Timer zurückgestellt!”);
end
until (timer<1)
– Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(switch1, “turnOff”);
fibaro:call(switch2, “turnOff”);
fibaro:debug(“Timer abgelaufen/Schalte Licht aus”);
fibaro:killScenes(scene);
end
end