Ankündigung

Einklappen
Keine Ankündigung bisher.

openHAB 2 "Globale" Variable in den Regeln

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

    openHAB 2 "Globale" Variable in den Regeln

    Hallo, ich habe ein kleines Problem mit den Regeln in OH2. Ich habe zwei verscheidende Regel und muss eine Variable in der ersten Regel setzten und diese dann in der zweiten Regel lesen können. Ich habe bis jetzt herausgefunden das ich die Variable eig. so übergeben kann, nur es funktioniert bei mir nicht so. ich hoffe, dass mir eine von euch helfen kann.

    mfg, Max

    Code:
    rule "Regel_1"
    when
    Item Schalter1 changed
    then
    var Number uebergabe = 1
    end
    
    rule "Regel_2"
    when
    Item Schalter2 changed
    then
    if(uebergabe == 1)
    {
        //schalten...
    }
    end

    #2
    Hi,
    wenn Du eine Variable in mehreren Regeln nutzen möchtest, muss diese ausserhalb definiert sein.

    Versuch mal
    Code:
    var Number uebergabe = 0 
      rule "Regel_1" when Item Schalter1 changed then  uebergabe.postUpdate(1) end  rule "Regel_2" when Item Schalter2 changed then if(uebergabe == 1) {     //schalten... } end

    Kommentar


      #3
      Hi, erst einmal danke für deine Hilfe. Ich habe es jetzt geschafft. Es gab doch noch ein kleines Problem dabei aber jetzt läuft es.

      Das erste Problem war, das ich die Variable ganz oben über den Regeln definieren musste. Als ich das gemacht hatte hat dies funktioniert.
      Das zweite kleine Problem war, dass ich die Variable nicht mit "uebergabe.postUpdate(1)" sonder mit "uebergabe = 1" setzen kann.

      Kommentar


        #4
        Genau, Variablen sind Variablen, keine Items. Deshalb kann man auch weder die Actions noch die Methoden der Items verwenden.
        Andererseits kann es durchaus sinnvoll sein, anstatt einer Variablen ein Item als Zwischenspeicher zu verwenden. Zum Beispiel kann man problemlos den Persistence Service nutzen und Items gelten auch Rule-File-übergreifend. Natürlich muss man dann statt einer Variablendefinition ein Item anlegen...

        Kommentar

        Lädt...
        X