NEWS
Scheduled Script - wann triggert es nach Neustart?
-
Hallo zusammen,
ich habe ein Skript was ich gerne alle 10 Tage getriggert haben möchte. Quasi eine Erinnerung an mich etwas zu tun :)
Ich habe mir nun ganz einfach ein solches Skript in blockly gebaut und als Trigger 'alle 10 Tage' angegeben. Soweit klingt das ja richtig.
Ich frage mich nun was passiert denn wenn die ioBroker Instanz einen Neustart hinlegt. Weiss die dann noch wann die letzte Ausführung des Skriptes war oder wir dann 'stumpf' ein neuer 10-Tages-Trigger gestartet?
Danke!
Fogg -
Hallo zusammen,
ich habe ein Skript was ich gerne alle 10 Tage getriggert haben möchte. Quasi eine Erinnerung an mich etwas zu tun :)
Ich habe mir nun ganz einfach ein solches Skript in blockly gebaut und als Trigger 'alle 10 Tage' angegeben. Soweit klingt das ja richtig.
Ich frage mich nun was passiert denn wenn die ioBroker Instanz einen Neustart hinlegt. Weiss die dann noch wann die letzte Ausführung des Skriptes war oder wir dann 'stumpf' ein neuer 10-Tages-Trigger gestartet?
Danke!
Fogg@Fogg
Hi,dein Blockly-Script ist in einer Instanz des JavaScript-Adapters.
Weiss die dann noch wann die letzte Ausführung des Skriptes war oder wir dann 'stumpf' ein neuer 10-Tages-Trigger gestartet
Zweiteres: Sobald die Adapter-Instanz oder ioBroker selbst neu gestartet wird, wird dein Blockly wieder gestartet und der Zähler von 10 Tagen startet wieder neu.
Um das zu vermeiden, könntest du dir in Blockly einen Datenpunkt anlegen und z.B. jeden Tag neu per Blockly setzen. Diesen Datenpunkt kann dann Blockly bei einem Neustart auslesen und die dortigen Anzahl Tage als Basis nehmen.
Zur Umsetzung kann ich dir leider nicht helfen, da ich Blockly nicht nutze, aber da sind genügend User hier, die helfen können :-)
-
Könnte so aussehen.

Überlebt einen Neustart von iobroker und Rechner. Objekte halt an deine Bedürfnisse anpassen.
@UweRLP Dankeschön!!
Ich habe es etwas anders gelöst weil ich im Datenpunkt gerne das Datum stehen haben möchte wann es soweit ist und nicht nur einen Zähler. Dazu braucht es dann leider zwei kleine Java-Script Funktionen da die standard Datumskonvertierung von US Datumsformat (MM/DD/YYYY) ausgeht. Wer damit leben kann braucht das nicht.

Die Funktionen selbst sind jedoch winzig:
parseDate:
var dateParts = datestring.split("."); // month is 0-based, that's why we need dataParts[1] - 1 var dateObject = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]); return dateObject;addTenDays:
var date = new Date(dt.valueOf()); date.setDate(date.getDate() + 10); return date; -
Das sieht spannend aus :)
Im Datenpunkt (Tagschichtzaehler) selbst hast aber immernoch nur eine einfache Zahl drin stehen. Was ja nicht falsch ist, funktioniert sicher. Heisst nur wenn ich den DP anschaue muss ich im Kopf rechnen wann das ist. Bei mir steht ein Datum drin - wobei ich dann ggf. auch überlegen muss wie weit weg von heute das noch ist :D -
Das sieht spannend aus :)
Im Datenpunkt (Tagschichtzaehler) selbst hast aber immernoch nur eine einfache Zahl drin stehen. Was ja nicht falsch ist, funktioniert sicher. Heisst nur wenn ich den DP anschaue muss ich im Kopf rechnen wann das ist. Bei mir steht ein Datum drin - wobei ich dann ggf. auch überlegen muss wie weit weg von heute das noch ist :D -
@Fogg im zweiten debug out Block wird aus dem TagschichtZaehler das Datum generiert im Format TT.MM.JJJJ. Anstatt debug out kannst du es einem Object übergeben.
