Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere "Time cron" in .rules - nicht alle werden ausgeführt

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

    Mehrere "Time cron" in .rules - nicht alle werden ausgeführt

    Hallo OpenHAB-User,

    für folgendes Problem habe ich trotz langwieriger Suche keine Lösung gefunden. Möglicherweise habe ich Tomaten auf den Augen ;-)

    Bei folgendem Eintrag in einem .rules File:

    Code:
    rule "Kind1 Komfort Modus"
    when
         Time cron "0 20 6 ? * MON-FRI" or
         Time cron "0 0 7 ? * SAT,SUN" or
         Time cron "0 0 16 ? * MON-FRI"
    then
        postUpdate(Kind1_Modus, 3)
        logInfo("R_Kind1","Cron Komfort")
    end
    werden der erste und der dritte Cron-Eintrag zuverlässig ausgeführt, der zweite (Samstag und Sonntag) jedoch nie. Woran es liegt - keine Ahnung, ich bin ratlos. Gibt es eine Möglichkeit, solche Szenarien systematisch zu debuggen?

    Danke für die Unterstützung!


    PS: Ich importiere folgendes:
    Code:
    import org.openhab.core.library.types.*
    import org.openhab.model.script.actions.*
    import java.lang.Math
    import java.util.Calendar
    import java.util.Date
    import java.util.TimeZone
    import java.text.SimpleDateFormat
    import org.joda.time.*

    #2
    Moin,

    Zitat von ssifue Beitrag anzeigen
    Hallo OpenHAB-User,

    für folgendes Problem habe ich trotz langwieriger Suche keine Lösung gefunden. Möglicherweise habe ich Tomaten auf den Augen ;-)

    Bei folgendem Eintrag in einem .rules File:

    Code:
    rule "Kind1 Komfort Modus"
    when
         Time cron "0 20 6 ? * MON-FRI" or
         Time cron "0 0 7 ? * SAT,SUN" or
         Time cron "0 0 16 ? * MON-FRI"
    then
        postUpdate(Kind1_Modus, 3)
        logInfo("R_Kind1","Cron Komfort")
    end
    werden der erste und der dritte Cron-Eintrag zuverlässig ausgeführt, der zweite (Samstag und Sonntag) jedoch nie. Woran es liegt - keine Ahnung, ich bin ratlos. Gibt es eine Möglichkeit, solche Szenarien systematisch zu debuggen?
    Also ich würde die 3 Cron Zeilen in einzelne rules schreiben , mit einem eindeutigen log eintrag versehen und nur jeweils einen trigger setzen der dann die eigentliche Aktion (in einer separaten rule) auslöst, so kann man sich dem Problem evtl. systematischer nähern ohne gleich den Debugger anwerfen zu müssen. Vergiss aber nicht den trigger nach getaner Arbeit wieder zurück zu setzen.

    Gruss
    Falk

    Kommentar


      #3
      Aloha,

      ich habe das gleiche Problem. Die OR Verknüpfung mit Time Cron funktioniert nicht. Ist das vielleicht buggy?

      Code:
      rule "Open lamelle"
      when
              Time cron "0 38 6 ? * MON-FRI" or
              Time cron "0 29 7 ? * SAT-SUN"
      then
              logWarn("FILE", "+++Open Lamelle in the morning.")
              var int outDelay = callScript("randomTime5")
              logWarn("FILE", "+++Open Lamelle in the morning - Timer scheduled "+outDelay+" minutes.")
              createTimer(now.plusMinutes(outDelay)) [|
                      postUpdate(Kueche_Sued_Lamelle, 50)
                      postUpdate(Kueche_West_Lamelle, 50)
                      postUpdate(Essen_Sued_Lamelle, 60)
                      postUpdate(Essen_West_Lamelle, 80)
                      postUpdate(Bad_West_Lamelle, 50)
                      postUpdate(Bad_Ost_Lamelle, 50)
                      postUpdate(Flur_Ost_Lamelle, 50)
                      postUpdate(Kamin_Nord_Lamelle, 50)
                      postUpdate(Wohnzimmer_Nord_Lamelle, 50)
                      postUpdate(Wohnzimmer_West_Lamelle, 50)
              ]
      end
      Ehrlich gesagt möchte ich jetzt auch nicht alle Regeln doppelt haben oder vervielfachen.....das sollte ja eigentlich der Vorteil von Programmierung sein, dass man nicht den gleichen Code doppelt und dreifach v schreiben muss.
      gtx, Manolo

      Kommentar


        #4
        Hallo,

        mir ist gestern auch was aufgefallen zu dem Thema.

        Ich habe eine Rule, die auf mehrere Item received changed Aktionen hört und auf genau eine Time cron Trigger.

        Die Rule funktioniert bei jedem geändertem Item, zündet aber nie über den Time cron Trigger. Dieser ist korrekt formuliert, wenn ich den in einen einfache kleine Rule mit nur einer Log Ausgabe übertrage, zündert er zum erwarteten Zeitpunkt.

        Ich habe auch das Gefühl, dass da ein Bug versteckt ist. Seid ihr an dem Thema dran geblieben, hat jemand ähnliche Beobachtungen gemacht?

        Gruß
        Dennis

        Kommentar


          #5
          Hi,

          ich habe auch eine Rule, die nicht ausgeführt wird.
          Ganz simpel eigentlich:
          Code:
          rule "Switch Taster on"
          when
                  Time cron "20 1 2 * * ?" or
                  Time cron "0/15 1 4 * * ?"
          then
                  logWarn("FILE","Switch Taster on")
                  sendCommand(Taster_Bad_OG, ON)
                  sendCommand(Taster_Eltern, ON)
                  sendCommand(LedSleepingRoom, ON)
                  logWarn("FILE","Switch Taster on...done.")
          end
          Aber Sie wird nicht ausgeführt.
          Muss doch ein Bug sein oder?
          gtx, Manolo

          Kommentar


            #6
            Hi,

            die Time Cron OR Verknüpfung macht bei mir immer noch Probleme.
            Zwei einfache Time Cron Einträge mit OR Verknüpfung werden nicht ausgeführt.
            Code:
            [SIZE=14px][FONT=courier new][COLOR=#000000]rule "Sonos Alarm Dining"
            when
                Time cron "0 45 6 ? * MON-FRI" or
                Time cron "0 32 8 ? * SAT-SUN"
            then
                .
                .
                .
            end[/COLOR][/FONT][/SIZE]
            Wenn ich openHAB dann neu starte funktionieren Sie irgendwann. Was ist da kaputt? Bin ich der einzige der dieses Problem hat?
            Danke, Manolo
            Zuletzt geändert von pheno; 15.04.2015, 09:18.

            Kommentar


              #7
              Aloha,

              ich muss sagen so langsam ist es recht frustrierend mit openHAB. Die o.g. Rule hat schon wieder nicht funktioniert, obwohl meines Wissen die obige Rule ausgeführt werden müsste, aber in den Logs taucht nichts auf!

              Es kann doch nicht sein, dass solch eine Grundfunktionalität nicht zuverlässig funktioniert??? Oder bin ich der einzige openHAB User mit diesem Problem?

              Verstehe das alles nicht mehr.....

              Kommentar


                #8
                Da Du ja schon gemerkt hast, dass mehrere geoderte Time cron Expressions nicht richtig funktionieren...
                Keine Frage, ist nicht schön, aber mach doch einfach einen Issue dazu auf.

                Ich habe schon mal ähnliche Probleme gehabt (allerdings hab ich nie probiert, mehrere Time crons zu verwenden, meine Rule sollte nur beim Systemstart und um 0 Uhr triggern. Wenn die Time cron an zweiter Stelle stand, ging es nicht, wohl aber an erster Stelle. Und seit ich System started als zweite Bedingung stehen habe, klappt es ohne Schwierigkeiten.

                Für Dein konkretes Problem rate ich Dir zu dem Weg, den fstec in der ersten Antwort schon angedeutet hat. Das mag nicht elegant sein, funktioniert dafür aber. Alternativ kann es natürlich einfacher sein, den "then"-Teil der rule dreimal hinzuschreiben (wenn es eh nur 2 oder drei Befehle sind, lohnt sich das extra Item ohne Binding mit manuellem Triggern nicht...) auch wenn das ebenfalls nicht schön ist.

                Kommentar


                  #9
                  So ich habe jetzt ein Issue geraised. Schöne englisch :-)
                  Falls jemand noch etwas hinzufügen möchte: https://github.com/openhab/openhab/issues/2524

                  Eigentlich das so eine Grundfunktion nicht korrekt arbeitet. Mit diesem Bug ist openHAB eigentlich nicht nutzbar. Gott sei Dank sind meine Rules zur Steuerung des Windalarms nicht davon betroffen!

                  Kommentar

                  Lädt...
                  X