Ankündigung

Einklappen
Keine Ankündigung bisher.

Switch item nach timerablauf zurücksetzen

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

    Switch item nach timerablauf zurücksetzen

    In der Sitemap habe ich ein
    Code:
    Switch item=itmSprinklerAutomatik mappings=[1="7 Min", 2="12 Min", 3="Stop"]
    um drei unterschiedlich lange Laufzeiten auszuwählen.
    Drücke ich einen der Buttons wird er rot und die unten stehende Rule wird ausgelöst.

    Allerdings wäre es schön, wenn das Switch item nach Ablauf des Programms zurück auf Stop wechselt, oder wenigstens keiner der drei Buttons rot bleibt.
    Kann mir jemand sagen, wie das funktioniert?
    Das postUpdate unten löst es jedenfalls nicht.

    In items ist itmSprinklerAutomatik definiert als

    Code:
    Number itmSprinklerAutomatik                "Sprinkler Automatik"
    Code:
    import org.joda.time.DateTime
    import org.openhab.model.script.actions.Timer
    
    
    var Timer timerStopVorne = null
    var Timer timerStopSeite = null
    var Timer timerStartGarten = null
    var Timer timerStopGarten = null
    
    rule "SprinklerAutomatik"
        when
            Item itmSprinklerAutomatik received command
        then
                  
            // Alle eventuell bestehenden Timer zurücksetzen
            if (timerStopVorne != null){
                timerStopVorne.cancel
                timerStopVorne=null
            }
            if (timerStopSeite != null){
                timerStopSeite.cancel
                timerStopSeite=null
            }
            if (timerStartGarten != null){
                timerStartGarten.cancel
                timerStartGarten=null
            }
            if (timerStopGarten != null){
                timerStopGarten.cancel
                timerStopGarten=null
            }
    
            var int iDauer = 0
            
            switch(receivedCommand) {
                case 1 : iDauer = 7
                case 2 : iDauer = 12
                }
    
            if (iDauer == 0) {
                itmSprinklerFront.sendCommand(OFF)
                itmSprinklerGarten.sendCommand(OFF)            
            }
            else
            {
                      
                // Sprinkler vorne nach ein paar Minuten stoppen und den hinteren starten
                timerStopVorne = createTimer(now.plusSeconds(5*iDauer)) [|
                    itmSprinklerFront.sendCommand(OFF)
                ]
                timerStopSeite = createTimer(now.plusSeconds(5*2*iDauer)) [|
                    itmSprinklerGarten.sendCommand(OFF)
                    itmSprinklerAutomatik.postUpdate(0) //keine sichtbare Wirkung
                ]
             }
    end

    #2
    Ein paar Dinge die du probieren könntest:
    • probiere mal postUpdate(ITEM,OFF) - so mach ich das bzw. so klappt es bei mir
    • ich frage mich ob du bei deinem item den Wert auf 0 setzen kannst, weil im Mapping ja nur 1-3 vorkommt. Sowas hab ich aber noch nicht ausprobiert.

    Kommentar


      #3
      Zitat von sheppard Beitrag anzeigen
      Ein paar Dinge die du probieren könntest:
      (..) ich frage mich ob du bei deinem item den Wert auf 0 setzen kannst, weil im Mapping ja nur 1-3 vorkommt. Sowas hab ich aber noch nicht ausprobiert.
      Das war die Lösung. Den Wert setzen kann man schon, aber das Switch Item passt sich dann nicht an.
      Hab die 3 in eine 0 geändert und es funktioniert.

      Vielen Dank!

      Kommentar

      Lädt...
      X