Wer kann mir helfen ?
Habe einen Fehler in Reihe sowie und 21
Hier einmal das script
–[[
%% properties
259 value
130 value
%% globals
–]]
— VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 80 — ID dieser Szene
local motion = 259 — ID des Bewegungssensors
local switch = 130 — ID des Relay Switches
— Lösche doppelte Szene(n)
if (fibaro:countScenes()>1) then
fibaro:abort();
end
— SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, „value“)) > 0 ) and (tonumber(fibaro:getValue(switch, „value“))) 0 then
local starttimer = 300;
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(switch, „value“))) 0 then
timer=starttimer;
fibaro:debug(„Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)“);
end
until (timer<1)
— Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(switch, “turnOff”);
fibaro:debug(“Timer abgelaufen/Schalte Licht aus”);
fibaro:killScenes(scene);
end
--[[
%% properties
259 value
130 value
%% globals
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 80 -- ID dieser Szene
local motion = 259 -- ID des Bewegungssensors
local switch = 130 -- ID des Relay Switches
-- Lösche doppelte Szene(n)
if (fibaro:countScenes()>1) then
fibaro:abort();
end
-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (tonumber(fibaro:getValue(switch, "value"))) < 1 then
fibaro:call(switch, "turnOn");
fibaro:debug("Schalte Licht ein");
end
-- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
if (tonumber(fibaro:getValue(switch, "value"))) > 0 then
local starttimer = 300;
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(switch, "value"))) < 1 then
timer=1;
fibaro:call(switch, "turnOff");
fibaro:sleep(300);
break
end
timer=timer-1;
-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(motion, "value"))) > 0 then
timer=starttimer;
fibaro:debug("Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)");
end
until (timer<1)
-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(switch, "turnOff");
fibaro:debug("Timer abgelaufen/Schalte Licht aus");
fibaro:killScenes(scene);
end
Danke, jetzt passt es. Leider kann ich in den besagten Zeilen keinen Fehler sehen. Daher vermute ich dass es sich um ein Problem mit den Motion und Switch IDs handelt. Dass solltest Du nochmal überprüfen ob die stimmen!
Mich wundert das der Fehler in Zeile 16 nicht mehr vorhanden ist!
Der Fehler kommt aus Zeile 21, aber die ist auch korrekt. Was für ein Switch ist es denn? Sollte die ID stimmen, liefert die Abfrage trotzdem keinen Wert zurück (nil). Da sollte 0 oder 1 zurückgeliefert werden, was false oder true entspricht.
Kopier mal die Szene in eine neue und speichere sie ab.
Die Zeile “local scene = 80” kannst Du weg lassen und am Ende “fibaro:killScenes(scene);” durch “fibaro:abort()” ersetzen.
ich habe jetzt anstatt der Hue Leuchte mal einen RGB Controller als Switch genommen.
Nun kommt keine Fehlermeldiúng mehr, allerdings schaltet der RGB Controller auch nicht ein.
Habe das gleiche mit einem Schaltaktor gemacht, klappt bestens.
Welchen Befehl muss ich für den RGB Controller verwenden ?
Er sollte doch auch (turnOn) kennen.
Das gleiche für die Hue Birne.