Seite 1 von 1

[gelöst] Ich hasse CRON

Verfasst: 19. Nov 2018 19:04
von Hoggle
Wieso muß das so kryptisch sein? Ich lese die Uhrzeit doch auch nicht rückwärts :twisted:

Egal, kann mir jemand hier helfen? Ich möchte eigentlich etwas gaaaannnzzz einfaches:

Wenn der Lichtsensor unter 500 LUX geht, dann soll eine kleine Lampe im Flur angehen und das jeden Tag.
Das klappt auch so wie es soll.
Jetzt soll die Lampe in der Woche um 23.59, oder meinetwegen auch 0.00 Uhr aus gehen und Freitags und Samstags um 1.00 Uhr
Eeeeiiiiigentlich dachte ich, das das mit diesen Rules funktionieren sollte:

Code: Alles auswählen

rule "Licht im Flur in der Woche ausschalten"
    when
        Time cron "0 59 23 * * 0,1,2,3,4 ?"
    then
        ZWaveZeitschaltuhr_SwitchBinary.sendCommand(OFF)
	end

rule "Licht im Flur am Wochenende ausschalten"
    when
        Time cron "0 59 0 * * 5,6 ?"
    then
        ZWaveZeitschaltuhr_SwitchBinary.sendCommand(OFF)
	end
Aber es kommen die folgenden Fehler:

Code: Alles auswählen

2018-11-19 19:01:13.654 [ERROR] [e.internal.engine.RuleTriggerManager] - Cannot create timer for rule 'Licht im Flur in der Woche ausschalten': CronExpression '0 59 23 * * 0,1,2,3,4 ?' is invalid.

2018-11-19 19:01:13.658 [ERROR] [e.internal.engine.RuleTriggerManager] - Cannot create timer for rule 'Licht im Flur am Wochenende ausschalten': CronExpression '0 59 0 * * 5,6 ?' is invalid.
Das komische ist, das ich mir das mit dem Cron aus einem Blog "geliehen" habe und dort hieß es, alles sei super.
Jetzt war dieser Blog schon etwas älter, aber es hat sich doch nix an dem Cron-Befehl geändert, oder?

Re: Ich hasse CRON

Verfasst: 19. Nov 2018 20:10
von udo1toni
Ja, das ist kein Wunder, da Deine cron-Definition fehlerhaft ist.

Die Time cron, Definition hat 6 Werte, optional 7 Werte. Die Definition sieht so aus: "ss mm hh TT MM W JJJJ"
wobei ss für die Sekunde, mm für die Minute, hh für die Stunde, TT für den Tag im Monat, MM für den Monat im Jahr, W für den Wochentag und JJJJ für das Jahr steht. Das Jahr ist optional. Es muss exakt ein Fragezeichen in der Definition vorkommen, und zwar entweder für den Tag im Monat oder für den Wochentag. Man kann also keine Cron-Definition schreiben, die nur dann triggert, wenn (z.B.) der 3. des Monats auf einen Dienstag fällt.

Du schreibst das Fragezeichen an 7. Stelle, das ist das Jahr. Da Du den Wochentag vorgibst, muss zwingend an 4. Stelle ein Fragezeichen stehen, für den Tag.
Der Wochentag ist entweder als MON,TUE,WED,THU,FRI,SAT,SUN oder alternativ als 1-7 anzugeben. Korrekt wäre also

Code: Alles auswählen

Time cron "0 59 23 ? * 1-5"
und

Code: Alles auswählen

Time cron "0 59 0 ? * 6-7"

Re: Ich hasse CRON

Verfasst: 19. Nov 2018 23:07
von Stefan Otten
Ich kann das hier Empfehlen:
https://www.freeformatter.com/cron-expr ... uartz.html

Grüße

Re: [gelöst] Ich hasse CRON

Verfasst: 21. Nov 2018 15:09
von killercorny
Ich nutze immer http://www.cronmaker.com/
Das erstellt einen mit openhab kompatiblen cron Ausdruck. Ich hatte gestern das selbe Problem und es war dann auch ein Fragezeichen statt dem Stern zu verwenden.

Gesendet vom Redmi Note 5


Re: [gelöst] Ich hasse CRON

Verfasst: 21. Nov 2018 19:48
von udo1toni
Beide Generatoren sind wohl geeignet, allerdings sollte man sich auch die Doku von Quartz zumindest mal anschauen, um nette Spezialitäten nicht zu verpassen, z.B. vorletzter Freitag im Monat. http://www.quartz-scheduler.org/documen ... igger.html