Ankündigung

Einklappen
Keine Ankündigung bisher.

Per Rule gesetztes Sperrobjekt wird nicht an KNX gesendet

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

    Per Rule gesetztes Sperrobjekt wird nicht an KNX gesendet

    Hallo zusammen,

    seltsames Problem.
    Ich habe meine Fensterkontakte in eine Gruppe eingebunden:
    Code:
    //-- Fensterstatus
    Group:Switch:OR(ON,OFF)     FensterDG         
    Switch Dachgaube_gekippt    "Fenster Dachgaube gekippt"     <window>    (FensterDG)   {channel="knx:device:efc29b47:Fenster_DG_Gaube_kipp"}
    Switch Dachgaube_offen      "Fenster Dachgaube offen"       <window>    (FensterDG)   {channel="knx:device:efc29b47:Fenster_DG_Gaube_auf"}
    Switch Dachgiebel_gekippt   "Fenster Dachgiebel gekippt"    <window>    (FensterDG)   {channel="knx:device:bb4c1f04:Fenster_DG_Giebel_kipp"}
    Switch Dachgiebel_offen     "Fenster Dachgiebel offen"      <window>    (FensterDG)   {channel="knx:device:bb4c1f04:Fenster_DG_Giebel_auf"}
    Dazu gibt es ein Item für die Sperre der Heizung.
    Code:
    Switch Sperrobjekt_Heiz_DG  "Sperrobjekt Heizung DG"                                                                  ["Switchable"]          {channel="knx:device:ef98905c:Sperrobjekt_Heizung_DG"}
    über eine Rule möchte ich nun das Sperrobjekt aktivieren:
    Code:
    rule "Sperre Heizung"
    when
        Item FensterDG received update
    then
        Sperrobjekt_Heiz_DG.postUpdate(FensterDG.state)
    end
    Das funktioniert soweit, dass in openHAB beim Öffnen eines Fensters der Switch für das Sperrobjekt eingeschaltet wird.
    Auf dem Bus ist die Öffnung des Fensters zu sehen, das Sperrobjekt wird nicht angesprochen.

    Schalte ich das Sperrobjekt in openHAB manuell, wird dies aber an den Bus übergeben und der Heizungsaktor schaltet wie gewünscht ab.

    Weiß hier jemand Rat?

    Danke!

    #2
    Probiere mal

    Code:
    Sperrobjekt_Heiz_DG.postUpdate([COLOR=#e74c3c]ON[/COLOR])

    Kommentar


      #3
      Wie ist der Channel zum Sperrobjekt definiert? Vermutlich ist das ein switch Channel?
      Sperrobjekte sind gewöhnlich zwei Bit breit, das heißt, es reicht nicht, ON oder OFF zu senden, sondern es muss eine Zahl 0 bis 3 gesendet werden (wobei dann 2 "gesperrt aus" und 3 "gesperrt ein" bedeutet, während 0 "nicht gesperrt" bedeutet). Der DPT ist dann 2.xxx...
      Handelt es sich tatsächlich um ein 1-Bit Sperrobjekt und Du willst den Status der Gruppe übertragen, so muss unbedingt
      Sperrobjekt_Heiz_DG.sendCommand() verwendet werden, nicht .postUpdate() (es sei denn, Du hast den Channel als switch-control definiert)

      Es wäre auch besser, die Rule auf changed triggern zu lassen, bzw. überhaupt etwas anders vorzugehen:
      Code:
      rule "Sperre Heizung"
      when
          Member of FensterDG changed
      then
          if(Sperrobjekt_Heiz_DG.state != FensterDG.state)
              Sperrobjekt_Heiz_DG.sendCommand(FensterDG.state)
      end
      Der Unterschied: die Rule triggert nur, wenn sich der Zustand eines der beteiligten Items ändert.
      Die Rule prüft, ob der Zustand der Gruppe sich vom Zustand des Sperrobjekts unterscheidet. Ist das der Fall, so wird der Befehl gesendet, sonst nicht.
      Dieser Punkt ist wichtig, sonst wird Dein Bus nur unnötig zugemüllt.
      Zuletzt geändert von udo1toni; 16.11.2020, 21:39.

      Kommentar

      Lädt...
      X