Hi Leute,
Auf meiner HC2 liefen bis vor Kurzem ca. 10 Skripte mit einem Minuten Timer um diverse wiederkehrende Sachen auszuführen.
Ich habe nun im Netz ein Skript gefunden das die Linux Leute als cronjob bezeichnen würden.
Da ich hier im SIIO Forum bei meiner Suche dazu nichts gefunden hab möchte ich meine Idee gerne teilen.
Ich habe inzwischen ALLE meine Zeitgesteuerten Skripte abgelöst und hier reingebaut. Es klappt hervorragend.
Gibt es von euch irgendwelche Erfahrungen warum es keine gute Idee ist das EIN ZENTRALES Skript machen zu lassen?
Freue mich auf euer Feedback!!
Im Anhang ein Beispiel Skript mit Debug Einträgen zur Erweiterung wie es euch gefällt …
--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]
if (fibaro:countScenes()>1) then fibaro:debug("zu viele Szenen, gelöscht!!") fibaro:abort() end
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end
sourceTrigger = fibaro:getSourceTrigger()
function DT(DATETIME)
-- Erstellt eine Variable mit deutschsprachigem Wochentag und Monat
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME)))
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday = WD[tonumber(tableDT.wday)]
return tableDT.wday ..' ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '
end
function tempFunc()
-- erstellt die benötigten Variablen für die Zeitberechnung
timestamp = os.time()
now_time = os.date("%X", timestamp)
now_min = os.date("%M", timestamp)
now_hour = os.date("%H", timestamp)
now_day = os.date("%d", timestamp)
now_day_long = os.date("%A", timestamp)
now_month = os.date("%m", timestamp)
now_month_long = os.date("%B", timestamp)
now_year = os.date("%Y", timestamp)
sunset = fibaro:getValue(1, "sunsetHour")
sunrise = fibaro:getValue(1, "sunriseHour")
temp_weather = tonumber(api.get('/weather')['Temperature'])
temp_Sensor1 = fibaro:getValue(115, "value")
--------------------------------------------------- jede Minute -----------------------------------------------
--fibaro:debug('JEDE Minute 1 x')
--------------------------------------------------- jede Minute -----------------------------------------------
-- Variable für Sonnenumtergang prüfen & setzen
local sunset = fibaro:getValue(1, "sunsetHour")
local sunrise = fibaro:getValue(1, "sunriseHour")
local gSunState = fibaro:getGlobal("SunState")
if os.date("%H:%M", os.time()) >= sunset then
if not (gSunState == "Sonnenuntergang") then
Debug("green",(os.date("%d.%m.%Y - Sonnenuntergang um "..sunset.." ")))
fibaro:setGlobal("SunState", "Sonnenuntergang")
else
--Debug('grey',"SonnenUNTERgang ist noch gleich")
end
elseif os.date("%H:%M", os.time()) >= sunrise then
if not (gSunState == "Sonnenaufgang") then
Debug("magenta",(os.date("%d.%m.%Y - Sonnenaufgang um "..sunrise.." ")))
fibaro:setGlobal("SunState", "Sonnenaufgang")
else
--Debug('grey',"SonnenAUFgang ist noch gleich")
end
end
------------------------------------------------- 5-60 Minuten Skripte ---------------------------------------------------------------
if(now_min == '00' or now_min == '05' or now_min == '10' or now_min == '15' or now_min == '20' or now_min == '25' or now_min == '30' or now_min == '35' or now_min == '40' or now_min == '45' or now_min == '50' or now_min == '55') then
--fibaro:debug('alle 5 Minuten')
end
if(now_min == '01' or now_min == '11' or now_min == '21' or now_min == '31' or now_min == '41' or now_min == '51') then
--fibaro:debug('alle 10 Minuten')
end
if(now_min == '05' or now_min == '20' or now_min == '35' or now_min == '50') then
--fibaro:debug('alle 15 Minuten')
end
if(now_min == '02' or now_min == '32') then
--fibaro:debug('alle 30 Minuten')
end
if(now_min == '03') then
--fibaro:debug('alle 60 Minuten')
end
--------------------------------------------- 0:01 Uhr -----------------------------------------------------------------------------
-- tägliches Setzen der Datumsvariable auf deutsch!
if(now_hour == '00' and now_min == '01') then
fibaro:setGlobal("DatumVar",DT(os.date()))
fibaro:sleep(2000)
DatLang = fibaro:getGlobal("DatumVar")
Meldung = "Heute ist: "..DatLang.." "
Debug('lightblue', "Täglich um "..now_hour.. " Uhr "..now_min.." ")
end
--------------------------------------------- 4:20 Uhr -----------------------------------------------------------------------------
if(now_hour == '04' and now_min == '20') then
Debug('orange', "Täglich um "..now_hour.. " Uhr "..now_min.." ")
end
--------------------------------------------- 5:30 Uhr -----------------------------------------------------------------------------
if(now_hour == '05' and now_min == '30') then
Debug('orange', "Täglich um "..now_hour.. " Uhr "..now_min.." ")
end
--------------------------------------------- 6:53 Uhr und weniger als 1 Grad außentemperatur-----------------------------------------------------------------------------
if(now_hour == '06' and now_min == '53' and tonumber(fibaro:getValue(115, "value")) < 1) then
Debug('orange', "Täglich um "..now_hour.. " Uhr "..now_min.."wenn Sensor 115 unter 1 Grad anzeigt ")
end
----------------------------------------- täglich um 9:00 Uhr -----------------------------------------------------------------------------
-- Variable "DayState" auf "Day" setzen
if(now_hour == '09' and now_min == '00') then
Debug("orange",(os.date("%d.%m.%Y - Tag")))
fibaro:setGlobal("DayState", "Day")
end
---------------------------------------------9:30 Uhr und mehr als 30 Grad Außentemperatur-----------------------------------------------------------------------------
if(now_hour == '09' and now_min == '30' and tonumber(fibaro:getValue(115, "value")) > 30) then
Meldung = "Es hat mehr als 30 Grad Außentemperatur"
Debug('orange', "Täglich um "..now_hour.. " Uhr "..now_min.." ")
end
---------------------------------------------15:32 Uhr -----------------------------------------------------------------------------
if(now_hour == '15' and now_min == '32') then
Debug('orange', "Täglich um "..now_hour.. " Uhr "..now_min.." ")
end
----------------------------------------- täglich um 19:00 Uhr -----------------------------------------------------------------------------
-- Variable "DayState" auf "Evening" setzen
if(now_hour == '19' and now_min == '00') then
Debug("lightblue",(os.date("%d.%m.%Y - Abend")))
fibaro:setGlobal("DayState", "Evening")
end
---------------------------------------- täglich um 23:59 Uhr -----------------------------------------------------------------------------
-- Variable "DayState" auf "Night" setzen
if(now_hour == '23' and now_min == '59') then
Debug("Blue",(os.date("%d.%m.%Y - Nacht")))
fibaro:setGlobal("DayState", "Night")
end
--------------------------------------------- am 01. Tag des Monats um 01:30 Uhr -----------------------------------------------------------------------------
if(now_day == '01' and now_hour == '01' and now_min == '30') then
fibaro:startScene(001) -- Szene für Verbrauchsstatistik gestartet..
Debug('lightgreen', "Monatlich am "..now_day..".Tag, um "..now_hour.. " Uhr "..now_min.."")
end
-----------------------------------------------------------------------------------------------------------------------------------------------------
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
end