Ankündigung

Einklappen
Keine Ankündigung bisher.

[SUCHE CODEBEISPIEL] Implementierung eines programmatischen KNX Logikbausteins in OH

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

    [SUCHE CODEBEISPIEL] Implementierung eines programmatischen KNX Logikbausteins in OH

    Hallo zusammen,

    ich habe im KNX 2 Adressen angelegt - die statt eines Logikbausteins - über OH basierend auf einem Eingangswert (0 oder 1) mit dem jeweiligen Gegenteil belegt werden sollen.

    Alle meine Versuche sind leider bisher gescheitert - gibt es jemanden der so etwas in OH umgesetzt hat?

    Sollte eigentlich nicht schwer sein:

    If KNXAdresseA.state == 1 dann KNXAdresseB.sendCommand(0) und umgekehrt.

    Aber ich bekomme die Werte nicht regelmässig ausgelesen und dargestellt. Das sollte doch irgendwie möglich sein.

    danke für die Hilfe

    Karsten

    #2
    Code:
    rule "B ist not (A)"
    when
        Item KNXadresseA received command
    then
        KNXAdresseB.sendCommand(1-(KNXadresseA.state as DecimalType))
    end
    ... ach nee... wenn es um Logik geht, sollte es ja OFF und ON heißen... also

    Code:
    rule "B ist not (A)"
    when
        Item KNXadresseA received command
    then
        if (receivedCommand==OFF)
            KNXAdresseB.sendCommand(ON)
        else
            KNXAdresseB.sendCommand(OFF)
    end
    sollte funktioneren.

    Kommentar


      #3
      wenn es um Mathematik ginge , wäre das aber auch falsch:

      Zitat von udo1toni Beitrag anzeigen
      Code:
          KNXAdresseB.sendCommand(1-(KNXadresseA.state as DecimalType))
      wenn dann mit -1 multiplizieren

      Code:
          KNXAdresseB.sendCommand(-1 * (KNXadresseA.state as DecimalType)
      oder negieren
      Code:
          KNXAdresseB.sendCommand(-(KNXadresseA.state as DecimalType)

      Kommentar


        #4
        Zitat von thoern Beitrag anzeigen
        wenn es um Mathematik ginge , wäre das aber auch falsch [...] wenn dann mit -1 multiplizieren
        Es ging mir ja darum, zwischen 0 und 1 zu toggeln, und da ist meine Formel schon korrekt, unter der Voraussetzung, dass KNXadresseA entweder 0 oder 1 liefert. :-)

        Kommentar


          #5
          Mathe oder net ich probiere es aus. Danke


          Sent from my Windows Phone 8X by HTC using Tapatalk

          Kommentar


            #6
            Zitat von udo1toni Beitrag anzeigen
            Es ging mir ja darum, zwischen 0 und 1 zu toggeln, und da ist meine Formel schon korrekt, unter der Voraussetzung, dass KNXadresseA entweder 0 oder 1 liefert. :-)
            alles klar

            Kommentar


              #7
              Eine Frage noch dazu - das Item wird getriggert aufgrund eines zustands beim Raumthermostat (Heizung aus) und nicht über einen switch.

              Sollte das dann auch so funktioneren mit received UPDATE anstelle von COMMAND?

              rule "B ist not (A)"
              when
              Item KNXadresseA received update
              then
              KNXAdresseB.sendCommand(1-(KNXadresseA.state as DecimalType))
              end


              Danke
              Karsten

              Kommentar


                #8
                Ja, das sollte auch mit received update funktionieren. Allerdings steht dann receivedCommand nicht zur Verfügung, weshalb es dann bei der Logikvariante (ON und OFF) nicht if (receivedCommand==OFF) heißen muss, sondern if (KNXadresseA.state==OFF).
                Das KNX-Binding unterscheidet Bus-seitig übrigens (meines Wissens) nicht zwischen Update und Command, jeder Zustandswechsel auf dem Bus wird als Command interpretiert, aber ein update gibt's dann logischerweise auch.

                Kommentar


                  #9
                  Hi,

                  Zitat von udo1toni Beitrag anzeigen
                  Das KNX-Binding unterscheidet Bus-seitig übrigens (meines Wissens) nicht zwischen Update und Command, jeder Zustandswechsel auf dem Bus wird als Command interpretiert, aber ein update gibt's dann logischerweise auch.
                  das ist so nicht ganz richtig.

                  Ein groupswrite wird folgendermassen interpretiert:

                  Code:
                  if (type instanceof Command && isCommandGA(destination)) {
                  	eventPublisher.postCommand(itemName, (Command) type);
                  } else if (type instanceof State) {
                  	eventPublisher.postUpdate(itemName, (State) type);
                  } else {
                  	throw new IllegalClassException("Cannot process datapoint of type " + type.toString());
                  }
                  wobei isCommandGA so funktioniert

                  Code:
                  Checks whether the given <code>groupAddress</code> 
                  is to be interpreted as CommandGA or not. Returns <code>true</code>
                  if <code>groupAddress</code> is the first GA in the KNX configuration
                  binding for a datapoint type and  <code>false</code> in all other cases.
                  Kurz: es kann also auch zu Update auf dem openHAB Eventbus durch KNX Zustandsänderungen kommen.

                  Gruß,

                  Thomas E.-E.
                  Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                  Kommentar


                    #10
                    hallo nochmal,

                    irgendwie komme ich nicht weiter - ich habe den KNX Bus mal über ETS gesnifft und die Updates auf der Ausgangs KNX Adresse gesehen.

                    Quelladresse 1.1.29 schreibt einen neuen Status auf Adresse 15.1.11. Laut KNX Log $01 | EIN - und aktualisiert so den Status der Adresse.

                    Wie bekomme ich entweder die Kommunikation abgefangen oder aber den Status von 15.1.11 ausgelesen. Alles was ich bislang probiert habe mit den o.g. item configs usw gibt mir keinen update zurück und resultiert auch nicht in einträgen im logfile. Irgendwie kommt diese Kommunikation nicht auf dem OH Bus an.

                    Bitte hat hier jemand eine Idee?

                    danke
                    Karsten
                    Angehängte Dateien

                    Kommentar

                    Lädt...
                    X