Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX Befehl über Gruppe auslösen?

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

    KNX Befehl über Gruppe auslösen?

    Hallo zusammen,
    ist es möglich über eine aktive group bei änderung einen knx befehl auszulösen?
    folgendes ist vorhanden:

    Group:Contact:OR(OPEN, CLOSED) Windows "Fenster [(zu %d von 7)]" <fenster> (All)

    wenn sich der wert ändert soll ein bit telegramm oder ein Text telegram(Fensterstatus hat sich geändert) oder sowas in der art gesendet werden.
    hoffe mir kann jemand helfen.
    mfg alex

    #2
    Ja, natürlich geht das. Aber... (hach ja...)

    Grundsätzlich wird die Gruppe natürlich nur dann ihren Status ändern, wenn
    • openHAB neu gestartet wurde und eines der Fenster zum ersten Mal geöffnet oder geschlossen wird (Status ändert sich von NULL zu was auch immer)
    • alle Fenster geschlossen sind und ein Fenster geöffnet wird (Status ändert sich von CLOSED zu OPEN)
    • das letzte Fenster der Gruppe geschlossen wird (Status ändert sich von OPEN zu CLOSED)

    Weiterhin kann es sein, dass die Rule mehrfach getriggert wird (ich bin mir gerade nicht sicher, ob dieses Phänomen nur bei received update auftritt, oder auch bei changed).

    Eine passende Rule sähe so aus:
    Code:
    rule "Fenster Status"
    when
        Item Windows changed
    then
        if(Windows.state == OPEN)
            myKnxItem.sendCommand(ON)
        else if(Windows.state == CLOSED)
            myKnxItem.sendCommand(OFF)
    end

    Kommentar


      #3
      hallo,
      danke dafür scheint soweit zu klappen. wenn ich aber jetzt noch eine zweite abhängigkeit hinzufügen möchte(und) wie mache ich das?
      if (Light_Zufall_Abwesend.state == ON)
      rule "Fenster Status"
      when
      Item Windows changed
      then
      if (Light_Zufall_Abwesend.state == ON)
      if(Windows.state == OPEN)
      myKnxItem.sendCommand(ON)
      else if(Windows.state == CLOSED)
      myKnxItem.sendCommand(OFF)
      end
      nach changed ein and geht ja nicht.
      oder gibt es noch eine andere möglichkeit eine aktion auszulösen sobald sich irgendein fenster oder tür ändet?
      Zuletzt geändert von alexbn; 28.10.2017, 16:17.

      Kommentar


        #4
        Es kommt grundsätzlich darauf an, was Du erreichen willst. Du möchtest, dass die rule nur ausgeführt wird, wenn der Switch Light_Zufall_Abwesend auf ON steht? Dann ist der Code fast richtig. Man muss aber immer im Hinterkopf haben, dass bei allen Befehlen, die potentiell zu einem Sprung führen, immer nur ein Befehl berücksichtigt wird. Deshalb müssen alle Befehle in {Klammern} gesetzt werden.
        Code:
        rule "Fenster Status"
        when
            Item Windows changed
        then
            if (Light_Zufall_Abwesend.state == ON) {
                if(Windows.state == OPEN)
                    myKnxItem.sendCommand(ON)
                else if(Windows.state == CLOSED)
                    myKnxItem.sendCommand(OFF)
            }
        end
        Zur Erläuterung:
        Code:
        rule "test"
        when
            Item my1stItem changed
        then
            if(my2ndItem.state == ON)
                logInfo("test","test my2ndItem.state = ON")
            logInfo("test","test my1stItem.state changed to {}",my1stItem.state)
            else
                logInfo("test","test my2ndItem.state = OFF")
        end
        Die erste Logzeile wird nur ausgegeben, wenn der state vom Item ON ist.
        Die zweite Logzeile wird immer ausgegeben.

        Die else Anweisung ist an dieser Stelle nicht gültig, da es keine vorangestellte if Anweisung gibt(!!!) openHAB wird also einen Fehler ausgeben und die Bearbeitung der Rule abbrechen. Die dritte Logzeile wird deshalb nie ausgegeben.

        Das sollte zumindest theoretisch so passieren.
        Merken

        Kommentar

        Lädt...
        X