Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Time cron

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Problem mit Time cron

    Ich fahre die Rollläden abhängig vom Sonnenaufgang mit astro auf und ab, das funktioniert perfekt. Allerdings will ich an Werktagen nicht, dass sie von 06:20 hochfahren. Dazu habe ich einen Switch ‚gEinstellungen_Rolladen_MF_frei ‘ definiert, der ON sein muss, damit das astro-Kommando durchkommt. Der Switch wird über eine rule geschaltet:


    // ROLLLADEN FREI (Rollladen darf hochgefahren werden) ---------------------------------------------------

    rule "Rollladen frei Mo-Fr" // Montag - Freitag
    when
    Time cron "0 20 6 * * MON-FRI" // Rollladen soll nicht vor 06:20 hochfahren
    then
    sendCommand(gEinstellungen_Rolladen_MF_frei, ON) // Switch, der in ON das Hochfahren freigibt
    end

    Der Schalter bleibt immer auf OFF. Wenn ich keine Wochentage vorgebe, also ‚MON_FRI‘ durch ‚?‘ ersetze, wird er korrekt geschaltet.

    Im rules-File importierte Libraries sind
    import org.openhab.core.library.types.*
    import org.openhab.core.persistence.*
    import org.openhab.model.script.actions.*
    import org.openhab.core.library.types.DecimalType
    import org.joda.time.*

    Was mache ich falsch? Was muss ich ändern, damit mein Switch ‚gEinstellungen_Rolladen_MF_frei ‘ nur von Montag bis Freitag geschaltet wird?

    #2
    Ich hoffe, Du hast auch eine Rule, die Dein Item wieder auf OFF setzt

    Die Cron-Expression muss so aussehen: "0 20 6 * * MON-FRI *" (evtl. auch "0 20 6 ? * MON-FRI *" steht bei mir so, erinnere mich grad nicht dran was der Unterschied zum * ist...)
    Das hintere Sternchen ist für das Jahr, welches mit dem ? am Ende wegfallen kann, aber eben nicht, wenn Du die Cron-Expression wochentagsabhängig haben willst.


    EDIT:

    Grad doch nochmal nachgeschaut, da heißt es in der Doku:
    The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify "no specific value". This is useful when you need to specify something in one of the two fields, but not the other. See the examples below (and CronTrigger JavaDoc) for clarification.
    Es ist also so, dass entweder sowohl Tag-im-Monat als auch Wochentag konkrete Inhalte haben müssen, oder aber eines der Felder mit einem ? 'übersprungen' werden muss, falls im anderen Feld ein konkreter Wert gesetzt ist. Wobei der * ja für jede gültige Zahl steht, also im Fall vom Tag 1-31/30/29/28. Naja, so verstehe ich das jedenfalls.

    Korrekt müsste es also so aussehen: "0 20 6 ? * MON-FRI", sollte also auch ohne * für's Jahr gehen.
    Zuletzt geändert von udo1toni; 24.02.2016, 13:10.

    Kommentar


      #3
      Ich fahre bei mir abends die Rollos helligkeitsgesteuert runter und am nächsten Tag zeitgesteuert hoch.
      Ist das mit dem Freigabeitem überhaupt nötig? Du kannst die Rollos doch direkt aus der Rule heraus um 06:20 hochfahren.

      Kommentar


        #4
        Vielen Dank, udo1toni, mit "0 20 6 ? * MON-FRI" klappt es tatsächlich. Da habe ich etwas gelernt. Den Switch setze ich natürlich wieder zurück, aber unabhängig vom Wochentag um 12:00. Da gab es bisher schon keine Probleme.

        @thoern: Abends fahre ich auch nur nach Helligkeit herunter, morgens habe ich aber eine Reihe von Rollladengruppen, die je nach Sonnenstand zu unterschiedlichen Zeiten hochfahren sollen, aber nicht vor 06:20. Da erscheint mir so eine Freigabe recht praktisch.

        Kommentar

        Lädt...
        X