Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitmessung in einer Regel

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

    Zeitmessung in einer Regel

    Ich habe einen Schalter via digitalem Eingang auf ein Switch-Item gemapt. Ist es möglich, je nachdem wie lange der Schalter gedrückt wird, unterschiedliche Commands abzusetzen?

    Oder ist es alternativ möglich festzustellen, wie lange der letzte Statechange aus ist?

    Beispiel:

    Code:
    rule MyRule
    when
        Item MySwitch changed to ON
    then
        MyOutputSwitch.sendCommand(ON)
    end
    
    rule MySecondRule
    when
        Item MySwitch changed to OFF
    then
        if([letzter Statechange liegt mehr als zwei Sekunden zurück])
        {
            [warte x Sekunden]
            MyOutputSwitch.sendCommand(OFF)
        }
        else
        {
            MyOutputSwitch.sendCommand(OFF)
        }
    end
    Zur Info: Der Ausgang geht auf einen Motor für meine Rollläden. Wenn die Taste länger gedrückt bleibt, möchte ich, dass die Rollläden ganz herunter/hinauf fahren.

    #2
    Schau Dir mal die Persistence Services an. Alternativ könntest Du beim ersten Drücken auch einen Timer starten und den beimmzweiten mal Auswerten, ggf. über eine Hilfsvariable.

    Kommentar


      #3
      Danke für den Hinweis. Ein erster Test mit folgender Regel hat sehr gut funktioniert:

      Code:
      rule Rollershutter_Storeroom_Switch_Up_OFF
      when
          Item Rollershutter_GF_Storeroom_Up received command OFF
      then
          if(!Rollershutter_GF_Storeroom_Up.changedSince(now.minusSeconds(2)))
          {
              logInfo("test", "Button was pressed 2 or more seconds...")
              Thread::sleep(5000)
              
              if(!Rollershutter_GF_Storeroom_Down.changedSince(now.minusSeconds(5)) &&
                  !Rollershutter_GF_Storeroom_Up.changedSince(now.minusSeconds(5)))
              {
                  Rollershutter_GF_Storeroom_Move_Up.sendCommand(OFF)
              }
          }
          else
          {
              Rollershutter_GF_Storeroom_Move_Up.sendCommand(OFF)        
          }
      end

      Kommentar


        #4
        Hallo PairOfOldShoes,

        evtl. hilft die der folgenden Beitrag weiter um deine gewünschte Funktionen zu realisieren.

        https://knx-user-forum.de/openhab/24...derzimmer.html


        Gruß
        mepi0011

        Kommentar


          #5
          Sehr schön, danke. Die Verwendung von Timern erspart mir die umfangreiche Nutzung der Persistence.

          Kommentar

          Lädt...
          X