Problem mit einer Scene

Hallo,
ich brauch mal eure Hilfe. Ich habe eine Scene die nur manchmal funktioniert.
Über einen Schalter löse ich eine Scene aus, die das Heizungsventil für 30 Minuten auf 28°C stellt.
Die Variable bad_heizung_e_a fragt ab, ob der elektrische Heizstab der Heizung an ist.
Damit ich sehe ob das Heizventil schaltet, also die Scene funktioniert, schaltet das Licht für 2 Sekunden an und dann wieder aus, bzw. wenn es schon an ist dimmt es für 2 Sekunden ab und wird dann wieder hell.
So weit die Theorie.
Was passiert ist:

  • Manchmal macht es tatsächlich das was es soll
  • Manchmal macht es das was es soll, aber das Licht schaltet oder dimmt für bis zu 30 Sekunden,nicht 2 Sekunden.
  • Manchmal schaltet das Licht aus und geht nicht wieder an
  • Manchmal schltet das Licht an und aus, aber das Ventil schaltet nicht
  • usw., usw.

Mit anderen Worten, diese Scenen macht was sie will. Hier mal der Code. Was mache ich da falsch?

–[[
%% autostart
%% properties
%% weather
%% events
276 CentralSceneEvent 4 HeldDown
%% globals
–]]

local startSource = fibaro:getSourceTrigger();
if (
( (startSource[„type“] == „event“ and startSource[„event“][„type“] == „CentralSceneEvent“) )
or
startSource[„type“] == „other“
)
then
bad_1 = fibaro:getGlobalValue(‚bad_heizung_e_a‘)
–(‚bad_heizung_e_a‘) für Heizung aktiv/inaktiv - für Schleife unten Heat oder nicht Heat verwenden
bad = tonumber(bad_1)
lampe_wert_1 = fibaro:getValue(400, „value“)
lampe_wert = tonumber(lampe_wert_1)
fibaro:debug(lampe_wert);
fibaro:debug(bad);
if (lampe_wert > 5) then
if (bad == 1) then
print „an“
fibaro:call(400, „setValue“, „40“);
setTimeout(function()
fibaro:call(400, „setValue“, „100“);
end, 2000)
fibaro:call(203, „setMode“, „1“);
fibaro:call(201, „setThermostatSetpoint“, „1“, „28“);
setTimeout(function()
fibaro:startScene(336);
end, 1800000) – end, 1800000)
end
elseif (lampe_wert < 5) then
if (bad == 1) then
print „aus“
fibaro:call(400, „turnOn“);
setTimeout(function()
fibaro:call(400, „turnOff“);
end, 2000)
fibaro:call(203, „setMode“, „1“);
fibaro:call(201, „setThermostatSetpoint“, „1“, „28“);
setTimeout(function()
fibaro:startScene(336);
end, 1800000)
end
else print „mist“
end
end

Habt ihr eine Idee oder einen Tipp?