If Then Abfrage klappt nicht

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 :frowning:

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 :wink: 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