Seite 1 von 2
[V4.0 IP4] Verständnisfrage Cron Syntax als Trigger
Verfasst: Mo Sep 18, 2023 6:19 am
von Marino
Hi,
ich trigere gerade Logiken zu bestimmten Zeiten. Wöchentlich bekomme ich als Zeitplan ja hin, indem ich Montags und Sonntags um bestimmte Zeiten triggere. Bei Monat und Jahr müsste ich nun die Cron Syntax bemühen. Und genau dazu habe ich eine Verständnisfrage.
Ich habe mit minütlich begonnen zu spielen. Ich fand mehrere Cron-Generatoren, die aber unterschiedliche Ergebnisse ausgaben und ein Check im jeweils anderen ergab einen Fehler.
Getestet in der Logik funktionierte auch nur bestimmte von denen, nicht alle. Es gibt also irgendwie Unterschiede.
Mein wöchentlicher und täglicher Timer mit Cron Syntax funktionierte nicht. Also trug ich das im Trigger der Logik als Zeitpunkt ein und lies mir die Cron Syntax ausgebben. Was soll ich sagen? Sie sah anders aus, als die von einem Generator erzeugte von einer Website, die zum testen von stündlich aber eine funktionierende Syntax ausgab.
Ich erzeugte nun einen Trigger, der jeden Tag schalten sollte. Die Logik gibt dafür dann das hier aus: "0 0 0 * * 0,1,2,3,4,5,6".
Prüfe ich das in einem Generator, bekomme ich einen Fehler: "Day-of-Week values must be between 1 and 7", was ich nach meinem bisherigen Verständnis auch unlogisch finde…
Warum gibt die Logik vom TWS auch die 0 für Tag aus und nicht nur 1-7? Ist das ganze nicht richtig genormt? Warum gibt es Unterschiede? Ich möchte mir sicher sein, was ich hier eintrage, kann es aber nicht, da ich verschiedene und, wie ich finde, im letzten Fall mit der 0 (Tag) eine für mich unlogische Syntax bekomme.
Kann mir das jemand erklären?
Ich würde halt gerne wissen, was man angeben muss, damit es funktioniert, wenn es ja offensichtlich verschiedene Möglichkeiten zu geben scheint.
Viele Grüße
Nils
Re: Verständnisfrage Cron Syntax als Trigger [V4.0 IP4]
Verfasst: Mo Sep 18, 2023 7:23 am
von Robert_Mini
Der Cron Syntax ist hier beschrieben:
https://elabnet.atlassian.net/wiki/spac ... /431390748
Im Prinzip wurde die gebräuchliche Variante um Sekunden erweitert.
Lg
Robert
Re: Verständnisfrage Cron Syntax als Trigger [V4.0 IP4]
Verfasst: Mo Sep 18, 2023 7:45 am
von Marino
Moin Robert,
danke für den Link. Das habe ich im Wiki mit dem Begriff "cron" heute Nacht komischerweise nicht gefunden. Da gab es 1 Ergebnis und das war keineswegs zielführend. Nun sind es mehrere. Verstehe das, wer will.
Gibt es denn verschiedene Varianten/Notationen der Cron-Syntax?
Denn, die in der Logik wird mir für jeden Tag ja "0,1,2,3,4,5,6" am Ende erstellt. Das Wiki & Wikipedia sagen selber "Wochentag 0-6".
Cron-Generatoren können mit der 0 teils nichts anfangen und sagen, es gibt nur 1-7.
0-6 oder 1-7 macht ja schon einen Unterschied und man sieht, dass die Syntax nicht immer gleich ist.
Ich habe für den selben Zeitpunkt mit Generatoren mehrere verschiedene Ergebnisse bekommen. Einige wurde vom TWS einfach nur nicht ausgeführt. Kann ich irgendwo die Cron-Syntax testen oder muss ich das immer so versuchen zu ändern, dass ich es manuell testen kann und dann zurück wandeln? Ich dachte zuvor, ich lasse meine Eingabe in einem Generator prüfen und dann kann ich das verwenden, aber das stimmt so wohl nicht. So etwas wie "letzter Tag im Monat" oder "erster Sonntag im Monat" z.B. lässt sich halt schwer testen, daher die Frage nach Prüfungsmöglichkeit.
Viele Grüße
Nils
Re: Verständnisfrage Cron Syntax als Trigger [V4.0 IP4]
Verfasst: Mo Sep 18, 2023 8:06 am
von starwarsfan
Hallo Nils
Marino hat geschrieben: ↑Mo Sep 18, 2023 7:45 am
0-6 oder 1-7 macht ja schon einen Unterschied und man sieht, dass die Syntax nicht immer gleich ist.
Nein, das macht überhaupt keinen Unterschied. 1 ist immer Montag und ob nun 0 oder 7 den Sonntag markieren, spielt keine Rolle. Die
Wikipedia sagt dazu bspw. das Folgende:
Für „Tag der Woche“ (Feld 5) sind sowohl 0 als auch 7 für Sonntag erlaubt, obwohl einige Versionen von Unix wie AIX die Ziffer 7 in der Manpage nicht als zulässig auflisten.
Ansonsten wie Robert schon antwortete...
Re: Verständnisfrage Cron Syntax als Trigger [V4.0 IP4]
Verfasst: Mo Sep 18, 2023 8:44 am
von Robosoc
Um das Ende eines Monats zu bestimmen habe ich hier
viewtopic.php?f=65&t=3782&p=43750&hilit ... den#p43750
ein Workauround benutzt. Wenn ich mich richtig erinnere, dann ermittel ich dort, ob der nächste Tag jeweils der erste eines Monats ist und wenn ja, dann ist folglich der aktuelle Tag der letzte eines Monats.
Für sowas wie "den ersten Sonntag im Monat" müsstest du meines Erachtens auch ein wenig customlogik basteln.
Re: Verständnisfrage Cron Syntax als Trigger [V4.0 IP4]
Verfasst: Mo Sep 18, 2023 8:54 am
von Robosoc
Und vielleicht zur Ergänzung... In einem anderen Topic bist Du ja schon auf Roberts Modul 3 für Zählerstanderfassung aufmerksam gemacht worden.
Dort wird ein Zählerstand täglich gesendet und würde in einer Zeitreihe somit täglich verfügbar sein. Für eine Visu ist das optimal, willst Du aber stattdessen Monatswerte in Grafana darstellen, so ist das Problem heute, dass Grafana nicht auf Kalendermonate aggregieren kann... Dort hat ein Monat immer genau 30 Tage und das führt zu Ungenauigkeiten in der Darstellung, die teils recht blöd sind.
Deshalb habe ich mal einen Code geschaffen, der wirklich Kalendermonatsgerecht wenige Sekunden vor dem Ende eines Monats einen Wert sendet... Damit ist es in Grafana immernoch nicht so richtig perfekt, aber deutlich besser.
Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger
Verfasst: Mo Sep 18, 2023 9:59 am
von Marino
Moin Sven,
mich interessiert Stunde/Tag/Monat/Jahr. Bei dem Modul müsste ich mich also für das stündliche einarbeiten, da das noch nicht mit drin ist und ich mich mit der Custom-Logik nicht auskenne. Ist für mich also mal eben implementierter momentan. Das mit Grafana hatte ich auch schon rausbekommen und finde das nicht wirklich toll, daher dachte ich, schreibe ich es erst einmal "einfach" mit vorhandener Logik, bis ich darauf stieß, dass die cron-Syntax nicht immer gleich war und der TWS teils auf erstellte nicht reagierte und ich mich fragte, warum das so ist.
Den Code aus deinem Link hatte ich am Wochenende mal probiert und bekomme immer einen Fehler:
Code: Alles auswählen
Code inkorrekt
Logik konnte nicht angelegt werden, da der Code fehlerhaft ist.
1. Unbekannte Trigger oder Sendefilter in Ports: Zähler (A)Verbrauch Aktueller Tag (C)Verbrauch Aktuelle Woche (C)Verbrauch Aktueller Monat (C)Verbrauch Aktuelles Jahr (C)
Ich habe zwar schon Custom-Logiken genutzt, weiß also, wie ich diese einfüge. Allerdings kenne ich mich im Code nicht aus und daher habe ich an dieser Stelle das nicht weiter untersucht und weiter verfolgt.
Das und die für mich notwendige Änderung im Modul von Robert bewogen mich dazu, das mit vorhandenen Logiken zu nutzen.
Viele Grüße
Nils
Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger
Verfasst: Mo Sep 18, 2023 10:05 am
von gbglace
Ich habe es nicht ausprobiert inwieweit das auch auf einer influx1.9 funktioniert, in einer influx 2.x lassen sich mittlerweile auch ordentliche Monate bauen, sind dann aber ähnliche Formeln im SQL wie sie die Logikbausteine realisieren.
Und weil das die Tage auch diskutiert wurde, Rohdaten würde ich immer in UTC abspeichern, wie man das dann abfragt ob nach MEZ mit ohne Sommerzeit ist dann rein von der ausgebenden Software abhängig.
Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger
Verfasst: Mo Sep 18, 2023 4:01 pm
von Robosoc
Senden zum Ende einer Stunde kannst Du recht simple mit irgendeinem zusätzlichen Standard-Modul und einem Trigger Eingang realisieren. In meiner Logik wäre das jetzt ein wenig aufwändig und würde da nicht gut reinpassen. Ich würde es über - wenn ich den Bedarf selbst hätte - auch in einer extra Logik lösen.
Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger
Verfasst: Mo Sep 18, 2023 4:01 pm
von Robosoc
Marino hat geschrieben: ↑Mo Sep 18, 2023 9:59 am
Logik konnte nicht angelegt werden, da der Code fehlerhaft ist.
Habe es gerade bei mir ausprobiert... Ich bin auf der offiziellen Hauptversion V3.5.1 und konnte problemfrei eine neue Logik mit dem Code aus dem
verlinkten Post (also V5 des Code-Schnipsels) anlegen. Auf welcher TWS Version arbeitest Du?