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
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!
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
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
--[[
%% 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