FREIGEGEBENE HAUPTVERSION V 4.01 verfügbar!
LOGIK! VISU! IFTTT! FIXES!
Infos im Wiki: https://elabnet.atlassian.net/l/cp/TrZ03Nr7

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Beantwortet] [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Marino
Reactions:
Beiträge: 371
Registriert: Fr Jul 24, 2020 6:44 am
Wohnort: Hamburg
Hat sich bedankt: 150 Mal
Danksagung erhalten: 167 Mal

[V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

#1

Beitrag 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
Zuletzt geändert von Mibr85 am Mo Sep 18, 2023 9:47 am, insgesamt 3-mal geändert.
Viele Grüße
Nils


TWS 3500XL ID:1080 (VPN offen, Reboot nach Rücksprache)

Robert_Mini
Reactions:
Beiträge: 3767
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1177 Mal
Danksagung erhalten: 2082 Mal

#2

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
Marino
Reactions:
Beiträge: 371
Registriert: Fr Jul 24, 2020 6:44 am
Wohnort: Hamburg
Hat sich bedankt: 150 Mal
Danksagung erhalten: 167 Mal

#3

Beitrag 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
Viele Grüße
Nils


TWS 3500XL ID:1080 (VPN offen, Reboot nach Rücksprache)
Benutzeravatar

starwarsfan
Reactions:
Beiträge: 1215
Registriert: Mi Okt 10, 2018 2:39 pm
Hat sich bedankt: 778 Mal
Danksagung erhalten: 987 Mal

#4

Beitrag 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...
Kind regards,
Yves

- TWS 2500 ID:159 (VPN offen, Reboot nach Rücksprache) - PBM ID:401 - TWS 3500 ID:618 (VPN offen, Reboot nach Rücksprache) - ControlPro - ProxMox - Edomi (LXC / Docker) - ... -

Robosoc
Reactions:
Beiträge: 1898
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 641 Mal
Danksagung erhalten: 787 Mal

#5

Beitrag 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.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1898
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 641 Mal
Danksagung erhalten: 787 Mal

#6

Beitrag 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.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Marino
Reactions:
Beiträge: 371
Registriert: Fr Jul 24, 2020 6:44 am
Wohnort: Hamburg
Hat sich bedankt: 150 Mal
Danksagung erhalten: 167 Mal

#7

Beitrag 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
Viele Grüße
Nils


TWS 3500XL ID:1080 (VPN offen, Reboot nach Rücksprache)

gbglace
Reactions:
Beiträge: 3700
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1293 Mal
Danksagung erhalten: 1702 Mal

#8

Beitrag 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.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Robosoc
Reactions:
Beiträge: 1898
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 641 Mal
Danksagung erhalten: 787 Mal

#9

Beitrag 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.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1898
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 641 Mal
Danksagung erhalten: 787 Mal

#10

Beitrag 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?
Zuletzt geändert von Robosoc am Mo Sep 18, 2023 4:02 pm, insgesamt 1-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK
Antworten

Zurück zu „Logikengine & Logik-Editor“