Ankündigung

Einklappen
Keine Ankündigung bisher.

Übertragung Werte KNX Bus von Home Assistant

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

    Übertragung Werte KNX Bus von Home Assistant

    Hallo Forum,

    ich habe eine Home Assistant Installation am laufen, um Werte vom Wechselrichter an den KNX Bus zu senden.
    Das funktioniert auch ohne Probleme, nur bei einem Wert werden ab und an seltsame Werte geliefert.
    Der Homeassistant liefert laut Traces den richtigen Wert ans KNX, jedoch kommt dann teilweise ein ganz anderer, falscher Wert an.

    Hier das Beispiel:

    Diese Automatisierung schickt Daten an den KNX Bus:

    service: knx.send
    data:
    address: 4/0/10
    type: power_2byte
    payload: "{{ states('sensor.solarnet_power_grid') | float(0)/ 1000 }}"

    Lt. Traces wird auch folgendes geschickt:
    Executed: 21. Juli 2023 um 17:23:42
    Result:

    params:
    domain: knx
    service: send
    service_data:
    address: 4/0/10
    type: power_2byte
    payload: -0.0002
    target: {}
    running_script: false
    limit: 10


    Am Bus kommt jedoch dann das an:
    image.png
    ​Witzigerweise kommt auch bei anderen Werten aus den Traces immer am Bus -20,48 als Wert an.
    Jedoch nicht immer, meistens kommt der richtige Wert!

    Woran kann das liegen?

    #2
    Eine Vermutung von mir als Laien:
    Der DPT "Power" (9.024) ist definiert als:
    - Range: -671 088,64 kW … 670 433,28 kW
    - Unit: kW
    - Resolution: 0,01kW
    (Siehe Interworking Datapoint Types Seite 40)
    Du sendest aber "-0,0002", was genauer als die erlaubten 2 Nachkommastellen ist.
    Möglicherweise kommt es dadurch bei der Umrechnung Wert -> Bus -> Wert zu Problemen (Overflow oder ähnliches).

    Kommentar


      #3
      Gibt es dazu eine Art Rundung die man im Home Assistand machen könnte?

      Kommentar


        #4
        Versuch mal: {{ states('sensor.solarnet_power_grid') | float(0)/ 1000 | round(2) }}

        Ich bin in Home Assistant selbst noch relativ neu, speziell was Templating angeht, also bin ich nicht sicher ob das funktioniert!

        Kommentar


          #5
          Habe ich dazu gefügt, leider kein Effek:

          image.png

          Kommentar


            #6
            Die Resolution sollte hier keine Rolle spielen.
            Bist du sicher, dass das immer diese Automation ist die falsche Werte sendet? Evtl gibts noch eine 2. die auf die gleiche GA sendet.
            Wenn es diese ist, was ist dann der Ausgangswert?

            Ich würde sowas eher über eine Helper/Template entity umrechnen (auf kWh) und dann per `expose` auf den Bus bringen - aber funktionieren sollte natürlich beides.

            Kommentar


              #7
              Habe gerade alle Automationen kontrolliert, gehen alle auf verschiedene GAs. Das witzige ist ja, dass das nur alle 3-5 Minuten passiert, obwohl der Wert all 20 Sekunden gesendet wird.

              Kommentar


                #8
                Ok, ich hab mir das mal genauer angeschaut. Springrbua hat das schon ganz gut getroffen 👍
                Wenn ich von HA den Wert ´-0,0002´ als DPT 9 sende bekomme ich tatsächlich das gleiche Telegramm wie in deinem Screenshot.
                Also wo ist da der Fehler? Wenn du dir die Rohdaten anschaust ist das 0x8000 also '0b1000000000000000'. Das erste Bit ist das Vorzeichen, die restlichen Exponent und Mantisse. Also will es hier ´-0´ schreiben, was für floats grundsätzlich nicht unbedingt ungewöhnlich ist.

                Na gut, da ist wohl ein Bug - und das obwohl die DPT 9 Werte von xknx ansonsten der ETS Implementierung entsprechen... aber man kann ja nicht alles testen.
                Also dachte ich, ich schau mal was ETS so macht wenn man versucht -0,0002 als DPT 9 zu senden.

                Screenshot 2023-07-21 232045.png
                Naja, und jetzt weiß ich auch nicht so recht... 🙃

                Ich nehme an, dass bei ´| round(2)´ immer noch "negative 0" rauskommt und deshalb der gleiche Wert gesendet wird.
                Meine Empfehlung wäre - zumindest als kurzfristige Lösung - DPT 14 zu verwenden, wenn's in der Anwendung passt.
                Zuletzt geändert von meti; 21.07.2023, 22:38.

                Kommentar


                  #9
                  Ok das ist ja sehr interessant.
                  Wäre es ein ansatz mit einer Formel zu sagen, dass es keine negative Null nach dem Runden gibt?

                  Leider akzeptieren diverse Aktoren keine DPT 14 bei den Funktionen.

                  Kommentar


                    #10
                    Aus Interesse: Welche Aktoren sollen das weiterverarbeiten bzw. welche Funktionen setzt du damit um?

                    Hier ein Link zum Fix: https://github.com/XKNX/xknx/pull/1302

                    Kommentar


                      #11
                      Mittels der übrigen Leistung der PV Anlage wird bei Ünerschuss die SG Ready Funktion der Wärmepumpe geschaltet.

                      Wie funktioniert der Fix, was muss ich tun?

                      Kommentar


                        #12
                        Zitat von Paddo5819 Beitrag anzeigen
                        Wie funktioniert der Fix, was muss ich tun?
                        Bissl Geduld haben. Oder ein Review machen wenn du da firm bist.

                        Kommentar


                          #13
                          Anscheinend wurde der Fehler schon erkannt und es gibt eine Lösung oder? Wie ist diese um m umzusetzen?

                          Kommentar


                            #14
                            Im nächsten Release von HA wird das dabei sein.
                            https://github.com/home-assistant/core/pull/97137

                            Kommentar

                            Lädt...
                            X