Ankündigung

Einklappen
Keine Ankündigung bisher.

letzter Zustand von Item wiederherstellen

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

    letzter Zustand von Item wiederherstellen

    Hallo zusammen,


    ich habe folgende Situation.


    Ich habe folgende Items:

    Switch Item1
    Number Item2
    nun möchte ich folgendes:

    Code:
    //Ausgangswerte:
    // Item1 -> OFF
    // Item2 -> 50
    
    //Regel
    Wenn Item1 ==  ON
    Dann Item2 = 0
    
    Wenn Item1 == OFF
    Dann Item2 = 50 // Alter Zustand
    Nun habe ich folgenden Befehl gefunden
    <item>.previousState(AbstractInstant) - Retrieves the previous state of the item.

    Hat jemand hierfür ein passendes Codebeispiel?

    Ich hab folgendes versucht:

    Code:
    //speichern
    Item2.persit()
    
    //wiederherstellen
    Item2.previousState()
    Gibt aber leider nicht.
    Zuletzt geändert von milymat; 24.03.2016, 22:44.

    #2
    Mit persist bist Du schon auf dem richtigen Weg, aber OH nimmt Dir (wenn schon ) die Arbeit ab, dafür musst Du aber einmalig die persistence einrichten.
    Du brauchst mindestens ein persistence-Addon (je nach Anwendungsfall gibt es verschiedene, für Deinen Zweck wäre vermutlich rdd4j verwendbar, oder auch db4o)
    Dazu gehört eine Konfiguration im persistence-Verzeichnis. Naheliegenderweise ist diese Datei dann entsprechend benannt, also z.B. db4o.persist für das db4o-Addon. Darin werden zum einen die verschiedenen Persistence-Strategien definiert, everyUpdate, everyChange, everyMinute... zum anderen werden die Items definiert, und auf welche Weise sie persistiert werden sollen. Wahlweise kann OH auch automatisch den letzen Wert wiederherstellen, wenn es neu gestartet wird.

    Code:
    // persistence strategies have a name and a definition and are referred to in the "Items" section
    Strategies {
        // maybe we need a cron strategy
        everyMinute : "0 * * * * ?"
    }
    
    Items {
    Item2 : strategy = everyChange
    }
    Falls das Item nicht im Standard Persistence Service (wird in der openhab.cfg gesetzt) persistiert wird, muss in der Rule der Service genannt werden:
    Code:
    rule "Item2 setzen"
    when
        Item Item1 changed
    then
        if(Item1.state==ON)
            Item2.sendCommand(0)
        else if (Item1.state==OFF)
            Item2.sendCommand(Item2.previousState(false,"db4o").state.toString)
    end
    Hab's jetzt nicht ausprobiert, sollte aber so funktionieren. Falls Du nur einen Persistence Service einsetzt (oder das Item über den Standard Service persistierst, siehe oben), kannst Du den Teil(false,"db4o") auch weg lassen.

    Kommentar

    Lädt...
    X