while - Schleife wird nicht beendet

Hallo,

folgende Situation:
Die Alarmanlage ist scharf und man öffnet die Eingangstür.
Im RGBW Birne fängt rot an zu blinken. Das Blinken soll erlöschen, wenn man die Fernbedienung betätigt.
Leider funktioniert ist es nicht.
Das Programm springt in die while Schleife rein, aber beim entschärfen der Alarmanlage springt es nicht raus. Die Birne blinkt die ganze Zeit. Bin schon verzweifelt.
Hat jemand eine Idee? Mit kommt es vor, das in der Schleife der Zustand des Tür-Sensors nicht mehr überprüft wird.
Aber nach meinem Wissenstand, sollte das Programm richtig sein…

Gruss
Robert


--[[
%% properties
95 value
%% events
%% globals
--]]

local value = fibaro:getValue(95, "armed")
local value2 = fibaro:getValue(95, "value")

if 
  (tonumber(value) == 1) and (tonumber(value2) == 1) then
  fibaro:debug ( "Alarm scharf und Eingangstür auf"); 
 
  	while (tonumber(value) > 0) do
    fibaro:debug ("Licht blinkt");
    fibaro:call(149, "setColor", "200","0","0","0");
	fibaro:sleep(1*2000);
	fibaro:call(149, "turnOff");
	end

else 
    fibaro:debug ("keine Funktion");
    
end

Hi,

der Fehler ist eindeutig :slight_smile:

Du fragst zu Beginn den Status ab und schreibst diesen in eine Variable.

Diese wird aber nur am Anfang des Skripted abgefragt und ab dem Zeitpunkt bleibt der Wert immer gleich, egal ob sich was ändert. In der Whirlpool-Schleife musst du direkt das Modul Abfragen oder in der while-Schleife erneut die Variable setzen.

Gruß

Das macht Sinn.
Vielen Dank!

Gruß
Robert