In unserem Tutorial zum Thema automatische Jalousiensteuerung bei Sonnenschein einrichten sind wir auf das die Thematik Cronjobs gestoßen. Für die Rollladensteuerung haben wir im Home Center eine Cronjob-Szene erstellt, sind dabei aber nur oberflächlich auf die Vorgehensweise eingegangen. Heute will ich Dir zeigen, wie Du Cronjobs umsetzen kannst.
Was sind Cronjobs?
Bei Cronjobs handelt es sich um das Umsetzung Deiner festgelegten, wiederkehrenden Bedingungen zu einer bestimmten Uhrzeit, die regelmäßig ausgeführt werden. Dabei werden sie einmal eingerichtet und danach immer automatisch ausgeführt. Ein Cronjob wird oft benötigt, das wirst Du auch noch in unseren zukünftigen Videos feststellen.
Viele andere Smart Home Systeme bieten für die Erstellung eines Cronjob direkte Möglichkeiten an. Beim Fibaro Home Center muss dies aber anderweitig umgesetzt werden. Ich zeige Dir heute, wie dies neben einer Umsetzung über grafische Szenen auch noch funktioniert.
Cronjobs zentral erstellen
Ich persönlich organisiere Schritte in meinem Home Center gerne zentral. Genauso habe ich es auch mit den Cronjobs gemacht. Dafür habe ich über Szenen im Browser meines Home Centers eine LUA Szene erstellt, die durchgehend läuft. Dabei stellt Fibaro die Funktion “tempFunc()” zur Verfügung, mit der eine Ausführung nach einer bestimmten Minutenanzahl umgesetzt wird beispielsweise nach einer Minute:
setTimeout(tempfunc, 60*1000)
Genauso können auch Aufgaben zu einem bestimmten Datum ausgeführt werden, also zum Beispiel einmal pro Monat. Es lassen sich einzelne Bedingungen für verschiedene Aufgaben erstellen – alles in einer Szene. So hast Du in einer Szene alle zeitgesteuerten Bedingungen stehen und kannst diese jederzeit ergänzen.
Unser LUA Script sieht beispielsweise im Ganzen dann wie folgt aus:
Update (05.08.2018): Danke an Udo. Jetzt gibt es zwei neue Bereiche die genutzt werden können. Einmal wenn die Sonne untergeht und einmal wenn Sie aufgeht. Da ich das so nicht nutze hatte ich garnicht auf dem Schirm das, dass für viele andere ja enorm praktisch wäre.--[[ %% autostart %% properties %% weather %% events %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local timestamp = os.time(); local now_time_min = os.date("%M", timestamp); local now_time_hour = os.date("%H", timestamp); local now_time_day = os.date("%d", timestamp); local now_time_month = os.date("%m", timestamp); local now_time_year = os.date("%Y", timestamp); local sunset_time= fibaro:getValue(1, "sunsetHour") local sunrise_time = fibaro:getValue(1, "sunriseHour") -- Hier alles hin was alle 1 Minute gemacht werden muss fibaro:debug('1 Minute'); fibaro:startScene(99); -- Sonnensteuerung! if(now_time_min == '00' or now_time_min == '05' or now_time_min == '10' or now_time_min == '15' or now_time_min == '20' or now_time_min == '25' or now_time_min == '30' or now_time_min == '35' or now_time_min == '40' or now_time_min == '45' or now_time_min == '50' or now_time_min == '55') then -- Hier alles rein was alle 5 Minuten gemacht werden muss fibaro:debug('5 Minuten'); fibaro:startScene(131); -- Pool Filter fibaro:startScene(167); -- Rolladensteuerung! end if(now_time_min == '00' or now_time_min == '10' or now_time_min == '20' or now_time_min == '30' or now_time_min == '40' or now_time_min == '50') then -- Hier alles rein was alle 10 Minuten gemacht werden muss fibaro:debug('10 Minuten'); end if(now_time_min == '00' or now_time_min == '15' or now_time_min == '30' or now_time_min == '45') then -- Hier alles rein was alle 15 Minuten gemacht werden muss fibaro:debug('15 Minuten'); end if(now_time_min == '02' or now_time_min == '32') then -- Hier alles rein was alle 30 Minuten gemacht werden muss fibaro:debug('30 Minuten'); end if(now_time_min == '05') then -- Hier alles rein was alle 60 Minuten gemacht werden muss -> wird immer um 5 nach stunde ausgeführt! fibaro:debug('60 Minuten'); end if(now_time_min == '10' and now_time_hour == '13') then -- Hier alles rein was einmal einmal Tag gemacht werden muss -> wird immer um 13.10 Uhr ausgeführt fibaro:debug('1 mal am Tag'); end if (os.date("%H:%M", timestamp) == sunset_time) then fibaro:debug('hier alles bei Sonnenuntergang'); end if (os.date("%H:%M", timestamp) == sunrise_time) then fibaro:debug('hier alles bei Sonnenaufgang'); end if(now_time_day == '01' and now_time_min == '00' and now_time_hour == '05') then -- Hier alles rein was einmal einmal im Monat am ersten tag ausgeführt werden soll fibaro:debug('1 mal am Tag'); end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then tempFunc() else end
Info
Du kannst hier nach Deinem Zeitplan die Aufgaben erstellen und Bedingungen zeitgebunden festlegen. Wenn Du noch weitere Fragen zum Erstellen der Cronjobs hast, teile uns dies gerne hier in den Kommentaren oder im Forum mit!