Ankündigung

Einklappen
Keine Ankündigung bisher.

Rule: Timer ablaufen lassen

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

    #16
    Wichtig ist zuerst einmal, dass alle imports und globale Variablen außerhalb der eigentlichen Rule, und zwar vor der ersten Rule in der Datei definiert werden.
    if(equal) wird mit zwei Gleichheitszeichen geschrieben
    Weiterhin fehlt noch die Abschaltbedingung (wenn UEBERGREIFEND_Laden auf OFF wechselt und aktLeistungberechnet.state kleiner 2500 dann abschalten)

    Es gibt eigentlich auch keinen Grund, das Ganze in einer Rule abzuwickeln, das macht die Abfragen innerhalb der Rule nur unnötig kompliziert, um alle Fälle korrekt zu berücksichtigen.
    Das Triggern auf update ist in diesem Fall auch ungünstig, die Rule soll ja nur bei Wertänderungen reagieren.
    Code:
    import org.joda.time.DateTime  
    
    var Timer Timerladeeinheit= null
    
    rule "Laden erzwingen"
    when
        Item UEBERGREIFEND_Laden changed
    then
        if (UEBERGREIFEND_Laden.state==ON) {
            sendCommand(UEBERGREIFEND_Ladeeinheit, ON)
            if (Timerladeeinheit!=null) {
                Timerladeeinheit.cancel
                Timerladeeinheit = null
            }
        }
        else if (aktLeistungberechnet.state < 2500)                         //Typo korrigiert
             sendCommand(UEBERGREIFEND_Ladeeinheit, OFF)
    end
    
    rule "Laden automatisch"
    when
        Item aktLeistungberechnet changed
    then
        if (UEBERGREIFEND_Laden.state==OFF) {
            if (aktLeistungberechnet.state > 2500) {
                sendCommand(UEBERGREIFEND_Ladeeinheit, ON)
                if (Timerladeeinheit!=null) {
                    Timerladeeinheit.cancel
                    Timerladeeinheit = null
                }
            }
            else if (aktLeistungberechnet.state < -500 && Timerladeeinheit==null) {  //Typo korrigiert
                Timerladeeinheit = createTimer(now.plusSeconds(300)) [|
                    sendCommand(UEBERGREIFEND_Ladeeinheit, OFF)
                ]
            }
        }
    end
    Bleibt noch zu erwähnen, dass, falls die berechnete Leistung über 2500 liegt, wenn UEBERGREIFEND_Laden auf OFF wechselt, die Ladeeinheit erst abgeschaltet wird, wenn die zweite Rule greift (also bei Sinken der berechneten Leistung unter -500), und dann mit Verzögerung.
    Zuletzt geändert von udo1toni; 13.12.2015, 23:31.

    Kommentar


      #17
      So weit ich es bis jetzt sehe funktioniert es. Nur bei dem "elseif" wollte openhab "else if" haben. Vielen Dank Udo für die Rule und dass ich wieder was dazu gelernt habe.

      Kommentar

      Lädt...
      X