zeitgesteuert Variablen setzen und Szenen auslösen

Hallo Ihr Lieben,
Ich überlege mir gerade ein Skript, welches zu bestimmten Zeiten gewisse Variablen ändert.
Habe dazu das hier gefunden:
https://www.siio.de/lichtsteuerung-teil-2-fibaro-tageszeiten-variable-via-lua-setzen/
Ich will aber als Trigger nicht wie beschrieben Bewegungssensoren verwenden, sondern gewisse Zeiten!
Dazu hab ich mir mal eine Blockszene angelegt und diese in ein LUA Skript verwandelt, siehe unten.

Die Herausforderung ist nun dieses Skript so zu erweitern, dass es die Variable “DayState” nicht nur um 7:00 Uhr sondern MEHRMALS am Tag verändert wird.
Ziel ist dass es in bestimmten Abständen die Zeit prüft und dann 5-6 mal am Tag entsprechend die Variable verändert

Habe das Skript unten leider noch nicht vollständig verstanden.
Speziell der Teil nach dem END des Funktionsaufruf erschließt sich mir nicht so ganz :wink:
könnt ihr mir hier eventuell etwas “Starthilfe” geben?
Oder gibt es schon ein Beispiel das ich als Basis verwenden kann?

--[[
%% autostart
%% properties
%% 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) == "07:00") )
		)
	then
		fibaro:setGlobal("DayState", "Tag")
	end
	setTimeout(tempFunc, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
	tempFunc()
else
	local currentDate = os.date("*t")
	local startSource = fibaro:getSourceTrigger()
	if (
		startSource["type"] == "other"
	)
	then
		fibaro:setGlobal("PresentState", "")
	end
end

Wer genau liest ist klar im Vorteil, sorry habe den Artikel nicht bewußt zu ende gelesen! :wink:
Habe gerade >Hier weiter unten
noch ein Skript gefunden, dass besser passt!

Werde mal selbst probieren ob ich es um 2-3 weitere “Tageszeiten” erweitern kann…
Über Tipps dazu freue ich mich trotzdem :wink:

Hey @pblacky,
ich habe selbst schon mal eine etwas “intelligentere” variante des Scripts mit erklärung gepostet, das könntest du dir noch ansehen.
https://www.siio.de/board/thema/tageszeiten-automatik-event-trigger-script-universell/

Viele Grüße

Oder das hier:
https://forum.fibaro.com/index.php?/topic/23510-scene-main-scene-for-time-based-events-control-v-125/

Danke @danielboe und @hoggle !
Ich habe mich etwas inspirireren lassen und seit einigen Tagen ein kleines Skript im Test das mir eine Variable “DayState” mit 4 Zeiten setzt.
Mir war wichtig zumindest 4 Zeiten definieren zu können!
Läuft schon ganz gut!
Wenn ich jetzt noch den Sonnen auf und Untergang als Option dazubekomme, dann ist es perfekt :wink:

--[[
%% autostart
%% properties
%% globals
--]]
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end
local sourceTrigger = fibaro:getSourceTrigger()

function varTime() 
  local morning  = {7, 00}
  local day  = {9, 00}
  local evening  = {19, 00}
  local night  = {23, 59}
  local morning = os.date("%H:%M", -3600+ morning[1]*60*60 + morning[2]*60)
  local day = os.date("%H:%M", -3600+ day[1]*60*60 + day[2]*60)
  local evening = os.date("%H:%M", -3600+ evening[1]*60*60 + evening[2]*60)
  local night = os.date("%H:%M", -3600+ night[1]*60*60 + night[2]*60)
  local ostime = os.date("%H:%M", os.time())
  local TimeofDayState = fibaro:getGlobal("DayState")

  if (night > morning and (ostime >= night or ostime < morning))
    or (night < morning and ostime >= night and ostime < morning) then
        if not (TimeofDayState == "Night") then
          Debug("Blue",(os.date("%d.%m.%Y - Nacht")))
          fibaro:setGlobal("DayState", "Night")
        else
          --Debug('grey',"ist noch gleich")
        end
  end

  if  ((ostime >= evening or ostime < night) and night < evening)
    or (ostime >= evening and ostime < night) then
        if not (TimeofDayState == "Evening") then
          Debug("lightblue",(os.date("%d.%m.%Y - Abend")))
          fibaro:setGlobal("DayState", "Evening")
        else
        --Debug('grey',"ist noch gleich")
        end
  end

  if ostime >= day and ostime < evening then
        if not (TimeofDayState == "Day") then
          Debug("orange",(os.date("%d.%m.%Y - Tag")))
          fibaro:setGlobal("DayState", "Day")
        else
        --Debug('grey',"ist noch gleich")
        end
  end

  if ostime >= morning and ostime < day then
        if not (TimeofDayState == "Morning") then
          Debug("yellow",(os.date("%d.%m.%Y - Morgen")))
          fibaro:setGlobal("DayState", "Morning")
        else
          --Debug('grey',"ist noch gleich")
        end
  end
  setTimeout(varTime, 60*1000)
end
 
if (sourceTrigger["type"] == "autostart") then
	varTime()
end