shortc-button

Cronjobs im Fibaro Home Center – Meine Lösung für wiederkehrende Aufgaben

Hier stellen wir Dir die Funktion der Cronjobs vor und wie Du diese in Deinem Home Center erstellen kannst.

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

Für genauere Details zu dem Script findest Du weitere Erklärungen in unserem Video.

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!

Die mobile Version verlassen