Ankündigung

Einklappen
Keine Ankündigung bisher.

DPT 5.001 (Scaling) und 50%

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

    DPT 5.001 (Scaling) und 50%

    @Enertex

    Beim Zusammenspiel zwischen EibPC und openHAB via KNX stieß ich zufällig auf eine kleine Abweichung bei euch.

    Ihr sendet bei einem Wert von 50% eine 127. Gemäß Seite 32 der KNX-DPT-Dokumentation wäre jedoch 80h = 128 richtig:

    grafik.png
    So wird es auch von den KNX-Geräten erwartet.

    Vermutlich nutzt ihr floor()/trunc(), es müsste aber round() sein.
    KNX, openHAB 4.3, EibPC²

    #2
    Hi,

    In welcher Funktion ist dir das aufgefallen? Eine automatische Umwandlung oder Firmwarefunktion per se gibt es bisher nicht, meist steckt die Umwandlung direkt im entsprechenden Makro oder der Visu-Funktion.

    I.d.R. verwenden wir
    Code:
    :begin PercentToKnx(Val,RetType)
    :info $Convert percent [0...100] to KNX percent [0...255] and return. Return type is selected by second argument.$
    :var Ret@
    Ret@=convert(floor(convert(Val, 0f32) / 100f32 * 255f32 + 0.5f32), RetType)
    :return Ret@
    :end​
    bzw
    Code:
    convert(convert(convert(${zObjName},0f32)*255f32/100f32+0.5f32,0u08)

    Kommentar


      #3
      Das ist einfach. Es passiert bei einem
      Code:
      write(GA, 50%);
      Das sendet eine 127 an die GA.

      Mein Code ist nun
      Code:
      write(GA, 128u08);
      KNX, openHAB 4.3, EibPC²

      Kommentar


        #4
        Ah, dann ist es direkt im eibparser. Danke!

        Kommentar


          #5
          Zitat von foobar0815 Beitrag anzeigen
          I.d.R. verwenden wir
          Code:
          :begin PercentToKnx(Val,RetType)
          :info $Convert percent [0...100] to KNX percent [0...255] and return. Return type is selected by second argument.$
          :var Ret@
          Ret@=convert(floor(convert(Val, 0f32) / 100f32 * 255f32 + 0.5f32), RetType)
          :return Ret@
          :end​
          Interessehalber, weil ich exzessiven Gebrauch von Makros mache: Warum nicht ohne Variable

          Code:
          :begin PercentToKnx(Val,RetType)
          :info $Convert percent [0...100] to KNX percent [0...255] and return. Return type is selected by second argument.$
          :return convert(floor(convert(Val, 0f32) / 100f32 * 255f32 + 0.5f32), RetType)
          :end​
          KNX, openHAB 4.3, EibPC²

          Kommentar


            #6
            hier war blödsinn
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Weil es ohne Variable nicht an jeder Stelle (zB Funktions/Macroargumente) verwendbar ist und so auch ein Debug-Ziel bleibt. Objektsparender wäre es natürlich ohne.

              Kommentar

              Lädt...
              X