Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Finde den Fehler in Rule mit "while and"

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

    Finde den Fehler in Rule mit "while and"

    Hallo Freunde,

    was ist hier falsch:

    Code:
    rule BadHalbWiederHoch
    when
        Item JAL_Bad_Halb received command 0 and Time cron "0 0 9-20 * * ?"
    then
        createTimer(now.plusMinutes(30)) [|
            sendCommand(JAL_OG_Bad_Links, UP)
        ]
    end
    Die Zeit-Einschränkung 9-20 Uhr wird ignoriert

    Danke

    #2
    das "and"

    Trigger (also der "when-Block") können nur geordert werden …

    Gruß,

    Thomas E.-E.
    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

    Kommentar


      #3
      Wie müsste das dann also aussehen?

      Kommentar


        #4
        so?

        Code:
        rule BadHalbWiederHoch
        when
            Item JAL_Bad_Halb received command 0 OR
            Time cron "0 0 9-20 * * ?"
        then
            createTimer(now.plusMinutes(30)) [|
                sendCommand(JAL_OG_Bad_Links, UP)
            ]
        end
        Zuletzt geändert von teichsta; 09.04.2015, 23:09.
        Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

        Kommentar


          #5
          Die erste Frage ist, ob Du wirklich möchtest, dass die Jalousie wirklich ausschließlich zur halben Stunde hoch fährt (cron "0 0 ..." plus createTimer). Falls nicht...
          Code:
          import org.joda.time.DateTime
          
          [FONT=Courier][SIZE=12px]rule "BadHalbWiederHoch"[/SIZE][/FONT]
          when
              Item JAL_Bad_Halb received command 0
          then
              if (now.plusHours(4).getHourOfDay > 12) {
                  createTimer(now.plusMinutes(30)) [|
                      sendCommand(JAL_OG_Bad_Links, UP)
                  ]
              }
          end
          sobald das Item getriggert wird, überprüft die if-Bedingung, ob die Zeit zwischen 9 und 20 Uhr liegt.
          Zu beachten ist, dass Du jodaTime importieren musst. Aber die benötigst Du ohnehin für CreateTimer
          Zuletzt geändert von udo1toni; 09.04.2015, 22:48.

          Kommentar


            #6
            Ich musste kurz nachdenken über die Logik... Aber ja, dass brauche ich! Danke!
            Trotzdem verstehe ich meinen Fehler noch nicht...
            "Wenn GA update UND Uhrzeit zwischen 9-20 Uhr dann..." sollte doch gehen oder nicht?

            Kommentar


              #7
              für einen UND Trigger müsstest Du den Status beider Elemente zum gleichen Zeitpunkt eintreffen. Die Wahrscheinlichkeit dafür ist = 0. Die Rule Engine ist Ereignis basiert und diese Ereignisse werden gefeuert und dann "vergessen". Damit das UND wahr werden würde, müsste in dem Augenblick, in dem Jal_Bad_Halb das command "0" empfängt auch das Cron Ereignis feuern, was vermutlich nie (bis äußerst selten) passieren dürfte.

              Klarer geworden?
              Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

              Kommentar


                #8
                Jo - jetzt habe ich es verstanden. Das hilft mir auch bei anderen Rules. Vielen Dank noch mal an Euch Beiden.

                Kommentar

                Lädt...
                X