Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenHab2 Regel

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

    OpenHab2 Regel

    Hallo Zusammen,
    ich benötige eine Regel für OpenHAB 2.
    Ich habe ein Gerät, welches über Mosquitto beim Ein und Aus Schalten das Kommando "toggle" absetzt.
    Die Regel sollte jetzt folgendes machen.
    Wenn ITEM 1 das Kommando "toggle" empfängt.
    Dann soll ITEM 2 auf ON geschaltet werden wenn es gerade OFF ist.
    Wenn ITEM 1 das Kommando "toggle" empfängt.
    Dann soll ITEM 2 auf OFF geschaltet werden wenn es gerade ON ist.
    Der Hintergrund ist, dass ich manuelle Schaltzustände von diesem Gerät nur mit dem Kommando "toggle" bekomme. Also keinen wirklichen Status des Zustands.
    Ich bekomme nur die Info mit "toggle", das manuell geschaltet wurde.
    Es soll also, wenn ich im APP angeschaltet habe und das Licht geht an,
    auch im APP den Status umschalten wenn ich manuell am Taster schalte.
    Das würde ich dann über den Umweg eines zweiten ITEMS in dieser Regel steuern.
    Hat jemand eine Idee?
    Danke und Gruß
    Maik


    #2
    Hallo Maik,

    ich denke dass es so funktionieren sollte:

    rule "toggle"
    when
    item1 received update
    then
    if (item2.state == ON) {
    sendCommand(item2, OFF)
    } else {
    sendCommand(item2, ON)
    }
    end

    evtl. musst du noch auf item1 auf "toggle" prüfen, falls hier noch andere Werte gesendet werden...

    Oder ich hab die Frage falsch verstanden

    Beste Grüße,
    Bernhard

    Kommentar


      #3
      Die optimierte Variante:

      Code:
      rule "toggle"
      when
          item1 received command
      then
          item2.sendCommand(if(item2.state==ON)OFF else ON)
      end
      Auch hier gilt natürlich, dass die Rule auf jedes empfangene Kommando triggert. Falls es nur ein bestimmtes Kommando sein darf, kann das einfach hinter received command ergänzt werden, also z.B. received command ON. (Ich habe keine Geräte, die TOGGLE senden, aber vermutlich dies der passende State sein.)

      Weiterhin muss man natürlich beachten, dass beim ersten Schaltbefehl, nachdem openHAB gestartet wurde, eventuell item2 noch keinen gültigen Status hat, also undefined oder Null ist, in diesem Fall wird das Item ON geschaltet. Falls also der zugehörige Aktor schon vorher ON war, muss man beim ersten Mal eventuell zweimal drücken, damit er auf OFF wechselt.

      Noch eine weitere Bemerkung, warum ich die Methode der Action vorziehe: Die Methode Item.sendCommand(Value) gehört zum Item, damit weiß die Methode genau, welche Daten erwartet werden, während die Action sendCommand(Item,Value) nicht zum Item gehört und deshalb immer einen String als Value erwartet, manchmal funktioniert die Typwandlung und man bemerkt keinen Unterschied, manchmal klappt die Typwandlung nicht, und man sucht und sucht und sucht...

      Kommentar


        #4
        Hallo ihr beiden,
        vielen Dank. Beide Varianten funktionieren.

        Gruß
        Maik

        Kommentar

        Lädt...
        X