Weihnachtsbeleuchtungsscript

Hallo,

in Abwandlung einiger Scripts hier aus dem Forum habe ich mir für Weihnachten eine etwas komplexere Lichtsteuerung erstellt. Und da gefühlt nach Weihnachten das nächste Weihnachtsfest schon wieder in den Startlöchern steht, möchte ich letzte Fehler vor dem Abbau der Lichterketten beseitigen. Ich hoffe hier auf Eure Hilfe.

Insgesamt 6 Wall Plugs steuern im gesamten Haus jeweils eine Lichterkette und schalten diese an unterschiedlichen Tagen zu unterschiedlichen Zeiten an und aus. Das Wall Plug mit der ID 86 im Kinderzimmer tanzt hier etwas aus der Reihe. Es schaltet sich wie im Abschnitt “–Lichter Haus und Garten” und “–Lichter Kinderzimmer” zu den angegebenen Zeiten ein und entsprechend aus. So weit so gut. Kurz nach dem es sich um 07:00 Uhr bzw. 20:00 Uhr ausgeschaltet hat, macht es sich selbstständig und schaltet sich wieder ein, so dass es dann manuell abgeschalten werden muss. Könnt Ihr Euch einen Reim darauf machen? Habe ich irgend einen Denkfehler im Script?

--[[
%% properties
%% autostart
%% globals
--]]
fibaro:debug('Erstmalig gestartet')
-- Sonntag ist 1
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();

local az = 82 --arbeitszimmer
local ku = 88 --küche
local wz = 90 --wohnzimmer
local fl = 84 --flur
local kz = 86 --kinderzimmer
local ga = 77 --garten

--Lichter Haus und Garten
--Mo-Fr, Licht um 05:50 Uhr an und 07:00 Uhr aus
if ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "05:50") ))
 then
    fibaro:call(ku, "turnOn");
    fibaro:call(wz, "turnOn");
    fibaro:call(fl, "turnOn");
    fibaro:call(az, "turnOn");
    fibaro:call(ga, "turnOn");
    fibaro:call(kz, "turnOn");
    fibaro:debug("Haus und Garten: Mo-Fr, Licht um 05:50 Uhr an");
elseif ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "07:00") ))
 then
    fibaro:call(ku, "turnOff");
    fibaro:call(wz, "turnOff");
    fibaro:call(fl, "turnOff");
    fibaro:call(az, "turnOff");
    fibaro:call(ga, "turnOff");
    fibaro:call(kz, "turnOff");
    fibaro:debug("Haus und Garten: Mo-Fr, Licht um 07:00 Uhr aus");
end

--Lichter Erdgeschoss und Garten
--Mo-Fr, Licht um 15:00 Uhr an und Mo-Do sowie So 22:00 Uhr aus
if ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "15:00") ))
 then
    fibaro:call(ku, "turnOn");
    fibaro:call(wz, "turnOn");
    fibaro:call(fl, "turnOn");
    fibaro:call(az, "turnOn");
    fibaro:call(ga, "turnOn");
    fibaro:debug("Erdgeschoss und Garten: Mo-Fr, Licht um 15:00 Uhr an");
elseif ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 1) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "22:00") ))
 then
    fibaro:call(ku, "turnOff");
    fibaro:call(wz, "turnOff");
    fibaro:call(fl, "turnOff");
    fibaro:call(az, "turnOff");
    fibaro:call(ga, "turnOff");
    fibaro:debug("Erdgeschoss und Garten: Mo-Do und So, Licht um 22:00 Uhr aus");
end

--Lichter Kinderzimmer
--Mo-Fr, Licht um 15:00 Uhr und Sa-So 14:00 Uhr an und Mo-So 20:00 Uhr aus
if ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "15:00") ))
 then
    fibaro:call(kz, "turnOn");
    fibaro:debug("Kinderzimmer: Mo-Fr, Licht um 15:00 Uhr an");
elseif ( (((currentDate.wday == 7 or currentDate.wday == 1) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "14:00") ))
 then
    fibaro:call(kz, "turnOn");
    fibaro:debug("Kinderzimmer: Sa-So, Licht um 14:00 Uhr an");
elseif ( (((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7 or currentDate.wday == 1) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "20:00") ))
 then
    fibaro:call(kz, "turnOff");
    fibaro:debug("Kinderzimmer: Mo-So, Licht um 20:00 Uhr aus");
end

--Lichter Erdgeschoss
--Sa-So, Licht um 14:00 Uhr an und Fr-Sa um 23:00 aus
if ( (((currentDate.wday == 7 or currentDate.wday == 1) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "14:00") ))
 then
    fibaro:call(ku, "turnOn");
    fibaro:call(wz, "turnOn");
    fibaro:call(fl, "turnOn");
    fibaro:call(az, "turnOn");
    fibaro:debug("Haus und Garten: Sa-So, Licht um 14:00 Uhr an");
elseif ( (((currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "23:00") ))
 then
    fibaro:call(ku, "turnOff");
    fibaro:call(wz, "turnOff");
    fibaro:call(fl, "turnOff");
    fibaro:call(az, "turnOff");
    fibaro:debug("Erdgeschoss: Fr-Sa, Licht um 23:00 Uhr aus");
end

--Lichter Garten
--Sa-So, Licht um 14:00 Uhr an und Fr-Sa um 22:00 aus
if ( (((currentDate.wday == 7 or currentDate.wday == 1) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "14:00") ))
 then
    fibaro:call(ga, "turnOn");
    fibaro:debug("Haus und Garten: Sa-So, Licht um 14:00 Uhr an");
elseif ( (((currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "22:00") ))
 then
    fibaro:call(ga, "turnOff");
    fibaro:debug("Garten: Fr-Sa, Licht um 22:00 Uhr aus");
end

setTimeout(tempFunc, 60*1000)
end
 
if (sourceTrigger["type"] == "autostart") 
 then tempFunc()
end

Gruß Andreas

Hallo Andreas,

mal abgesehen davon, das Kinderzimmer “kz” abzukürzen…: hast du vielleicht ein weiteres Script, welches die ID 86 steuert?

Hmm, war schon spät. Denk Dir für das z ein i.

Die ID 86 habe ich erstmalig in dem o.a. Script vergeben. Zumal ich alle Wall Plugs nach dem Update auf Version 4.062 neu hinzufügen musste und damit die ID 86 neu generiert wurde. Dennoch habe ich zur Sicherheit noch mal geschaut, konnte aber nichts entdecken.