Ankündigung

Einklappen
Keine Ankündigung bisher.

Rule: Mit item Text den Wert eines anderen item ändern

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

    Rule: Mit item Text den Wert eines anderen item ändern

    Hallo,
    ich benötige eine rule um mit dem Text eines Items den Wert eines anderen items zu setzen.

    Also:

    Wert des item Programm_Heizung = HEIZEN
    dann
    Das item Heizung_Ein auf den Wert 20 setzen.
    sonst
    den Heizung_EIN auf den Wert 0 setzen

    habe jetzt schon vieles probiert aber es scheint die Rules möchten keine items verarbeiten.

    Kann mit hier jemand helfen?

    Gruß Mirco


    #2
    Also, Du hast zwei Items:
    Code:
    String Programm_Heizung "Programm Heizung" {...}
    Number Heizung_Ein "Heizung ein" {...}
    Zugehörige Rule:
    Code:
    rule "Heizung"
    when
        Item Programm_Heizung changed
    then
        if (Programm_Heizung.state.toString == "HEIZEN")
            Heizung_Ein.sendCommand(20)
        else
            Heizung_Ein.sendCommand(0)
    end
    Allerdings hast Du in Deinem Posting strenggenommen drei Items erwähnt. Heizung_EIN ist ein anderes Item als Heizung_Ein! Groß/Kleinscheibung ist in openHAB allgemein für jedes einzelne Zeichen wichtig! Ich gehe jetzt einfach mal davon aus, dass Du nur falsch getippt hast.

    Zur Erklärung der Rule:
    1. Die Rule triggert jedesmal, wenn sich der Status von Programm_Heizung ändert.
      Warum keine kein changed to "HEIZEN"? Weil diese Art Trigger (noch) nicht mit String Items funktioniert, sondern nur mit Switch oder Contact Items.
    2. Prüfung des Status auf einen bestimmten Inhalt.
      Warum das zusätzliche .toString? Damit stelle ich sicher, dass der Status wirklich als String betrachtet wird.
    3. Setzen des Number Items auf 20 oder 0.
      Warum .sendCommand() und nicht .postUpdate()? .sendCommand() sendet den Befehl zum angebundenen Binding, während .postUpdate() ausschließlich den Status des Items ändert.
    Falls mehr als eine Anweisung zu einem Block gehört (also z.B. hinter dem if oder hinter dem else), müssen die Befehle mit {} zu einem Block zusammengefasst werden. Hier ist es nur ein Befehl, man kann also auf die Klammern verzichten.
    Zuletzt geändert von udo1toni; 28.04.2018, 22:10.

    Kommentar


      #3
      DANKE!

      super kompetente Hilfestellung!

      Gruß Mirco

      Kommentar

      Lädt...
      X