Ich bekomme eine if then Abfrage nicht hin.
Ganz zum Schluss des Codes soll die Lampe wieder in den Zustand geschaltet werden die vor dem ausführen des Skriptes war.
Es kommt aber die Fehlermeldung:
[DEBUG] 20:31:32: 2019-01-14 20:31:32.449480 [ fatal] Unknown exception: /opt/fibaro/scenes/40.lua:50: unexpected symbol near ‘then’
Wenn ich den if then else Teil rausnehme läuft das Skript.
Kann eigentlich nur ein Schreibfehler sein, aber ich sehe ihn nicht
Gruß und danke
Stefan
--[[
%% properties
%% weather
%% events
%% globals
TrocknerSignal
--]]
local startSource = fibaro:getSourceTrigger();
-- Feststellen ob Lampe an und Werte speichern
arrayWerte = {fibaro:getValue(188, "ui.onOff.value"),fibaro:getValue(188, "ui.brightness.value"),fibaro:getValue(188, "ui.saturation.value"),fibaro:getValue(188, "ui.hue.value")}
fibaro:debug(arrayWerte[1]) --> ONOFF
fibaro:debug(arrayWerte[2]) --> Helligkeit
fibaro:debug(arrayWerte[3]) --> Sättigung
fibaro:debug(arrayWerte[4]) --> Farbtemperatur
if
(fibaro:getGlobalValue("TrocknerSignal") == "Trockner_fertig")
then
fibaro:call(188, "changeSaturation", 255);
fibaro:call(188, "changeBrightness", 255);
fibaro:call(188, "changeHue", 42717);
fibaro:call(188, "turnOn");
fibaro:call(188, "changeHue", 40);
fibaro:sleep(2000) -- in Millisekunden 60000 = 1 min
fibaro:call(188, "changeHue", 8418);
fibaro:sleep(2000) -- in Millisekunden 60000 = 1 min
fibaro:call(188, "changeHue", 40);
fibaro:sleep(2000) -- in Millisekunden 60000 = 1 min
fibaro:call(188, "changeHue", 8418);
fibaro:setGlobal("TrocknerSignal", "Aus");
end
-- Stehlampe auf Ursprungswet setzen
fibaro:call(188, "changeSaturation", arrayWerte[3]);
fibaro:call(188, "changeBrightness", arrayWerte[2]);
fibaro:call(188, "changeHue", arrayWerte[4]);
If
((arrayWerte[1]) == 1)
then
fibaro:call(188, "turnOn");
else
fibaro:call(188, "turnOff");
end
Guten Abend…darf ich fragen was das Programm machen soll? Auf jeden Fall liegt Dein Fehler in Zeile 47 (If) schreib beide Buchstaben klein und gut ist…Grüße Sven
P.s. tue dir selber einen gefallen und setze in Zeile 8 “local hueID = 188” und ersetze alle “188” mit “hueID”
Danke, jetzt klappts.
if
((arrayWerte[1]) == "1")
then
fibaro:call(188, "turnOn");
else
fibaro:call(188, "turnOff");
end
Das Skript läßt die Stehlampe kurz 2x Rot leuchten wenn der Trockner fertig ist.
Dann schaltet es die Lampe wieder in den Ausgangszustand.
Gruß, Stef
ja, jetzt nur die ID der Lampe als Variable und schon ist es auch für andere gut zu gebrauchen jetzt mit “((arrayWerte[1]) == “1”)” macht es auch Sinn
Ist mein erstes LUA Skript.
Habe es jetzt auf das wesentliche reduziert. Es wird von einer Blockszene gestartet.
--[[
%% properties
%% weather
%% events
%% globals
--]]
idLampe = 188 -- <-- id der HUE Lampe hier eintragen!
-- Feststellen ob Lampe an und Werte für später speichern
arrayWerte = {fibaro:getValue(idLampe, "ui.onOff.value"),fibaro:getValue(idLampe, "ui.brightness.value"),fibaro:getValue(idLampe, "ui.saturation.value"),fibaro:getValue(idLampe, "ui.hue.value")}
fibaro:call(idLampe, "changeSaturation", 255);
fibaro:call(idLampe, "changeBrightness", 255);
fibaro:call(idLampe, "changeHue", 42717);
fibaro:call(idLampe, "turnOn");
fibaro:call(idLampe, "changeHue", 40); -- Farbe auf Rot ändern
fibaro:sleep(2000) -- Warten in Millisekunden (60000 = 1 min)
fibaro:call(idLampe, "changeHue", 8418); -- Farbe auf Weiß ändern
fibaro:sleep(2000) -- Warten in Millisekunden (60000 = 1 min)
fibaro:call(idLampe, "changeHue", 40); -- Farbe auf Rot ändern
fibaro:sleep(2000) -- Warten in Millisekunden (60000 = 1 min)
fibaro:call(idLampe, "changeHue", 8418); -- Farbe auf Weiß ändern
-- Stehlampe wieder auf Ursprungswet setzen
fibaro:call(idLampe, "changeSaturation", arrayWerte[3]);
fibaro:call(idLampe, "changeBrightness", arrayWerte[2]);
fibaro:call(idLampe, "changeHue", arrayWerte[4]);
if
((arrayWerte[1]) == "1")
then
fibaro:call(idLampe, "turnOn");
else
fibaro:call(idLampe, "turnOff");
end