Steuerung Heizung mit Lua

Hallo Community,

ich verwende Vera edge seit einigen Jahren. Nun versuche ich in einer Scene ein Script ablaufen zu lassen, das bei der Steuerung der Heizung hilft. Wegen der Bedienfreundlichkeit möchte ich die Zeiten ausserhalb des Ofens eingeben (es gibt hierzu eigene Anschlüsse am Ofen). Als Relais verwende ich ein FGS-222.
Mit Q1 soll eine Ausschaltverzögerung nach jedem Kontakt der Ein/Ausschaltzeit erfolgen.
Mit Q1 wird der Ofen Ein und Aus geschaltet
Mit S2 möchte ich den Ofen in Dauerbetrieb schalten.
Die Ein/Ausschaltzeiten auf Q2 funktionieren soweit. Leider funktioniert die Ausschaltverzögerung auf Q1 überhaupt nicht, genauso wenig wie wenn ich den S2 (Dauerbetrieb) betätige der nach dem Umschalten auch die Ausschaltverzögerung starten soll - diese schaltet bei jedem Programmdurchlauf wieder ein - wie ein Blinker. Ich lasse die Scene alle 30 Sekunden laufen
Wie ihr seht, bin ich kein Programmierer, aber könnt ihr mir bitte bei dem folgenden Code weiterhelfen? Ich komm nicht dahinter, was alles falsch ist :frowning:

– mehrere Zeiten ein/aus und pruefung ob schalter ein

local current_second = t.hour * 3600 + t.min * 60 + t.sec – number of seconds since midnight
local sw102_3a = 115 – ausschaltverzoegerung Q1
local sw102_3b = 116 – Gasofen ein/aus Q2 und S2
local Sekunden = 20
local switchOnOff = luup.variable_get(„urn:upnp-org:serviceId:SwitchPower1“, „Status“,116)

local min_time_in_seconds1 = 5 * 3600 + 00 * 60             -- 500
local max_time_in_seconds1 = 23 * 3600 + 59 * 60             -- 2359


local min_time_in_seconds2 = 22 * 3600 + 40 * 60             -- 2240
local max_time_in_seconds2 = 22 * 3600 + 45 * 60             -- 2245

local min_time_in_seconds3 = 22 * 3600 + 50 * 60             -- 2250
local max_time_in_seconds3 = 22 * 3600 + 55 * 60             -- 2255

local min_time_in_seconds4 = 23 * 3600 + 00 * 60             -- 2300
local max_time_in_seconds4 = 23 * 3600 + 05 * 60             -- 2305

if (current_second > min_time_in_seconds1) and (current_second < max_time_in_seconds1)

then

if (current_second > min_time_in_seconds2) and (current_second < max_time_in_seconds2) or
 	   (current_second > min_time_in_seconds3) and (current_second < max_time_in_seconds3) or
       (current_second > min_time_in_seconds4) and (current_second < max_time_in_seconds4)


then
   luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{newTargetValue ="1"},sw102_3b)
end

else
luup.call_action(„urn:upnp-org:serviceId:SwitchPower1“,„SetTarget“,{newTargetValue =„0“}, sw102_3b)
end

if (switchOnOff == „1“) then
luup.call_action(„urn:upnp-org:serviceId:SwitchPower1“,„SetTarget“,{newTargetValue =„1“},sw102_3a)
luup.call_delay( ‚switch_off‘, Sekunden) – Call the switch off function after a delay of Sekunden
function switch_off()
luup.call_action(„urn:upnp-org:serviceId:SwitchPower1“,„SetTarget“,{newTargetValue=„0“},sw102_3a)
end
end

Vielen Dank,
Andreas