NEWS
(gelöst)(Frage) Funktion und Cron ?
-
Hallo
ich verstehe noch nicht wie das genau funktioniert, bitte um Erklärung, vielen Dank!!
Aufgabe: ein externer Wert (Zeit) bestimmt wie oft der Cron ausgeführt wird
Bsp.: 15s = alle 15s den Cronzweig abarbeitenDie Regel setCycle macht da jetzt genau was?
Wenn der Wert geändert wird, stoppt das den Cronzyklus.
Warum anfangs das setCycle und nach dem stop nochmal setCycle? -
@humidor sagte: Warum anfangs das setCycle und nach dem stop nochmal setCycle?
Zu Anfang (bei Skriptstart) muss erst einmal der Zeitplan aktiviert werden.
Wenn dann die Zykluszeit im Datenpunkt "Regelzeit" geändert wird, muss erst der laufende Zeitplan gestoppt werden, damit nach Aktivieren des Zeitplans mit der neuen "Regelzeit" nicht zwei Zeitpläne gleichzeitig laufen. -
@paul53 ok verstanden.
setCycle -> bei Scriptstart und laufend wird dieses abgearbeitet
- darin ist die Erkennung der Änderung der Regelzeit
- ändert sich die Regelzeit, wird der aktuelle Cronjob gestoppt
-> warum dann nochmal das Blockly setCycle? soll das Anfang und Ende definieren?
nach setCycle -> Reihenfolge, zuerst das Blockly von setCycle, dann hier weiter
- Cronjob startet (neu) mit Regelzeit
so?
-
@humidor sagte: ändert sich die Regelzeit, wird der aktuelle Cronjob gestoppt -> warum dann nochmal das Blockly setCycle?
Damit der Cronjob mit der neuen Regelzeit gestartet wird.
-
@paul53 hmm
ich meine dieses Blockyl, warum steht es dort:
-
@humidor sagte: warum steht es dort:
Nach "stop Regelzyklus" läuft kein Cronjob mehr. Es muss mit diesem Funktionsaufruf ein neuer Cronjob gestartet werden.
-
Bin erst ganz neu aber vielleicht hilft dieses Video.
Trigger und ZeitsteuerungHaette da auch eine Frage die ich in meinem anderen Post auch stellte wo sind dieses Cron Jobs zu finden. (OS crontab??)
Und wenn das script gestoppt wird sind alle definierten weg ?
in dem Video wird bei 19:10 Minuten genau das behauptet.
-
@fred-freund sagte in (Frage) Funktion und Cron ?:
Bin erst ganz neu aber vielleicht hilft dieses Video.
Trigger und ZeitsteuerungWas hat das mit dem Thema hier zu tun?
Und wieso soll Paul sich ein Video ansehen?
-
@paul53 sagte in (Frage) Funktion und Cron ?:
@humidor sagte: warum steht es dort:
Nach "stop Regelzyklus" läuft kein Cronjob mehr. Es muss mit diesem Funktionsaufruf ein neuer Cronjob gestartet werden.
dh. eine Funktion "setCycle" wird nur 1x aufgerufen? Nein, sonst würde der Trigger nicht funktionieren. Also wozu muss ich dann dieses 2. setCycle Blockly anfügen? Wenn doch nach dem gerade gelaufenen setCycle (inkl. Triggerabfrage), der neue Conjob ja initialisiert und gestartet wird. Ich verstehe es weiter nicht.
@Homoran nana, ned so ruppig. Das Video sollte sicherlich mir helfen das Thema besser zu verstehen. Hab es noch nicht angesehen, werde ich aber, danke @Fred-Freund
-
@humidor sagte: Ich verstehe es weiter nicht.
Dann schau das Video an. Vielleicht verstehst Du es dann?
-
Der setCycle oben über dem Trigger ruft die Funktion setCycle auf und führt dann den darin liegenden Cronjob aus. Dieses bei Script START!
So, jetzt läuft das Script.
Würdest du hier kein Aufruf der Funktion haben, würde der Cronjob nicht laufen, erst wenn der Trigger auslöst!Änderst du jetzt die Zeit, die im Cronjob laufen soll, reagiert der Trigger stoppt den Cronjob "Regelzyklus" und ruft danach die Funktion setCyle wieder auf, damit der Cronjob mit der "neuen" Zeit wieder läuft.
Jetzt verstanden?
-
@paul53 habs grad probiert, ja es braucht diesen 2. setCycle. Warum, ich hoffe es mal zu verstehen.
Wenn ich nun eine Bedingung einfügen möchte...
in der Regel soll das mit dem Regelzyklus ablaufen
wenn aber eine Bedingung eintrifft, soll solange der Regelzyklus auf 1s gesetzt werden, das mache ich dann im "setCycle" Blockly vorr. -
@nordischerjung sagte in (Frage) Funktion und Cron ?:
Der setCycle oben über dem Trigger ruft die Funktion setCycle auf und führt dann den darin liegenden Cronjob aus. Dieses bei Script START!
So, jetzt läuft das Script.
Würdest du hier kein Aufruf der Funktion haben, würde der Cronjob nicht laufen, erst wenn der Trigger auslöst!Änderst du jetzt die Zeit, die im Cronjob laufen soll, reagiert der Trigger stoppt den Cronjob "Regelzyklus" und ruft danach die Funktion setCyle wieder auf, damit der Cronjob mit der "neuen" Zeit wieder läuft.
Jetzt verstanden?
welches Script, das eigene oder das andere... nicht eindeutig geschrieben
brechen wir das mal runter:
-
setCyle - wird nicht zyklisch aufgerufen nur bei Script Start und startet 1x den "nach setCyle" Blockly, wodurch der Cronjob initialisiert wird und mit der Zykluszeit läuft
-
der Trigger (Systemtrigger) läuft zyklisch und erkennt eine Änderung an der Zykluszeit
wird die Änderung erkannt, wird der eingetragene Cronjob gestoppt sprich gelöscht
dann braucht es einen erneuten Aufruf von "nach setCyle" mit der Funktion "setCyle"
der Cronjob wird wieder (inkl. kompletten Ablauf) mit der neuen Zykluszeit eingetragen.
OK, wenn ich nun eine weitere Abhängigkeit einbauen möchte:
nachdem die Regelzeit somit nur mit einem Trigger gesetzt wird, kann das 1. setCycle deaktiviert werden, oder? -
-
@humidor sagte: kann das 1. setCycle deaktiviert werden, oder?
Nur dann, wenn sich der Wert von "POWER" oft genug ändert, so dass kurze Zeit nach Skriptstart ein Cronjob gestartet wird.
Bei solchen Aufgabenstellungen würde ich nicht mit einem Cronjob, sondern mit Intervallen arbeiten. -
@paul53 hab mir das Video angeschaut
mein Script schaut nun so aus:
Power wird jede Sekunde aktualisiert, das reicht völlig zur Eintragung des Cronjobs. -
@humidor sagte: mein Script schaut nun so aus:
Du vergleichst die falsche Variable; es muss die Variable Regelzeit verglichen werden.
-
@paul53 richtig, danke