Hat einer 10 Min Zeit der LUA kann?

Hallo zusammen,

hat einer von Euch 10 Min Zeit der LUA kann und würde sich mal das folgende mal anschauen und mir verständlich mitteilen wo der Fehler liegt bzw. was ich zu korrigieren habe?

Folgendes sollte passieren:
An jedem Wochentag sollen die Ambiente leuchten links & rechts um 21:50 (+60 und 120 sek) ausgehen, vorausgesetzt der SONOS hat keinen Strom.
Hat der SONOS an einem Tag um 21:50 Uhr Strom, dann sollen die Leuchten erst dann ausgehen (Verzögerung 60 und 120sek) wenn der SONOS manuell ausgeschaltet wird.

FERTIG

image

UNd hier der LUA Code zur grafischen Szene:

–[[
%% autostart
%% properties
290 value
%% weather
%% events
%% globals
–]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) … „:“ … string.format("%02d", currentDate.min) == „21:50“) )
and
( tonumber(fibaro:getValue(290, „value“)) == 0 )
)
then
setTimeout(function()
fibaro:call(276, „turnOff“);
end, 60000)
setTimeout(function()
fibaro:call(274, „turnOff“);
end, 120000)
end

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

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( (currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) )
and
( tonumber(fibaro:getValue(290, „value“)) == 0 )
or
startSource[„type“] == „other“
)
then
setTimeout(function()
fibaro:call(276, „turnOff“);
end, 60000)
setTimeout(function()
fibaro:call(274, „turnOff“);
end, 120000)
end

end

Wenn ich das richtig lese fehlt dir ja der zweite Teil, wenn der Sonos nach 21:50 ausgemacht wird dann mache die Lichter aus. Sonst passt doch alles - oder?
Dafür könntest du doch einfach eine zweite Szene machen, wenn nach 21:50 und Sonos geht aus, dann mach auch die Lichter aus.

Geht so was nur mit einer weiteren separaten Szene, kann man das nicht da rein packen?
Ich tu mich schwer mit den triggern und vermute das ich da auch ein Problem damit habe, oder passt das so?
Und wieviel ausgeführte Instanzen darf es in diesem Fall geben?

So wie es aktuell ist, gehen die Leuchten normal aus wenn der SONOS keinen Strom hat.
hat der SONOS Strom bleiben die leuchten an, gehen aber auch nicht aus wenn der SONOS keinen Strom mehr hat.

Hatte tatsächlich 10 Min Zeit.
Den Sonos als Trigger braucht man nicht da man ja auf Zeit überprüft. Sonos ist ja nur eine Bedingung.
Wenn’s nicht funktioniert nochmal melden.

--[[
%% autostart
%% properties
%% events
--]]
 
local sourceTrigger = fibaro:getSourceTrigger();
local Deko1 = 276
local Deko2 = 274
local Sonos = 290
local LichtAus = "21:50"
function DekoLichterAus()
  local currentDate = os.date("*t");
  local actionTime  = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);
  if (actionTime == LichtAus  and  tonumber(fibaro:getValue(107, "value")) == 0) 
     or (actionTime > LichtAus and tonumber(fibaro:getValue(107, "value")) == 0)
  then
  setTimeout(function()
    fibaro:call(Deko1, "turnOff");
  end, 60000)
  setTimeout(function()
    fibaro:call(Deko2, "turnOff");
  end, 120000)
end

setTimeout(DekoLichterAus, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
  DekoLichterAus()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if (( tonumber(fibaro:getValue(Sonos, "value")) == 0 )
    or startSource["type"] == "other" )
  then
    setTimeout(function()
      fibaro:call(Deko1, "turnOff");
    end, 60000)
    setTimeout(function()
      fibaro:call(Deko2, "turnOff");
    end, 120000)
  end
end

Hey Jeep,

besten Dank für den Lösungsweg.
ich habe das Script nun mal in eine neue Szene eingesetzt und werde morgen berichten ob es funzt.

Bei Deinem Script gibt es im Reiter „Allgemein“ gar nicht die Option „Starten, wenn HomeCenter 2 startet“ braucht man das nicht zwingend damit die Szenen nach einem Neustart wieder aktiv sind?

So, gestern getestet und es hat nicht funktioniert.
Die LED Leuchten sind weiterhin an geblieben nachdem der SONOS um ca. 22:15 Uhr vom Strom getrennt wurde. Um 23:30 Uhr habe ich die LED Leuchten dann manuell ausgeschaltet.

Noch eine Idee?

Muss statt der 107 nicht sonos da hin?

Wenn mir was nicht klar ist mache ich immer ein paar Debug Statements mit rein, da kann man wunderbar sehen woran es liegt…

Du meinst da kommt „290“ anstatt „107“ rein???
Wo kommt denn die 107 her. In dem Originalen finde ich die zahl 107 nirgends.

107 war mein Testdevice. Natürlich muss dort Sonos rein. Wahrscheinlich waren die 10 Min. schon um. :wink:

Also so:

Kann noch jemand was zu meinen Fragen bzgl. Autostart und Anzahl der möglichen Instanzen sagen?
passt das so wie es in den Screenshots in den vorherigen Einträgen zu sehen ist ?

Automatisch, dann läuft ja die Instanz und checkt jede Minute.

Die maximale Anzahl Instanzen ist, soweit ich das durchblickt habe, nur relevant wenn die Szene einen Auslöser hat. Einfach auf Standard 2 lassen.

Und anstatt da 290 hinzuschreiben ist es schöner und lesbarer wenn du da sonos hinschreibst, hast ja oben extra eine Variable definiert die sonos heisst und den Wert 290 enthält!

Zauberei!!!:hugs:.
Es funzt!
Besten Dank für das Script und die Korrektur.

Bleibt gesund und nochmals danke für den Support.