Ankündigung

Einklappen
Keine Ankündigung bisher.

Empfangenen HEX Wert mit IEEE 754 umwandeln

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

    [callidomus] Empfangenen HEX Wert mit IEEE 754 umwandeln

    Mahlzeit,
    derzeit habe ich folgendes Problem ich bekomme zwei HEX werte auf den KNX BUS gesendet. Diese beiden Werte muss ich zusammensetzten und mit IEEE754 umwandeln. Wie kann ich das unter Callidomus Realisieren?
    Beispiel:
    KNX Telegramm 1 ="4147"
    KNX Telegramm 2 ="3333"
    In Callidomus müssen diese HEX Werte zusammengesetzt werden "0x41473333" und anschließend mit IEEE754 in "12,45" umgewandelt werden. Der Wert 12,45 soll dann auf der Visu ausgegeben werden.
    Gruß Simon

    #2
    Werden die Telegramme auf verschiedene GAs gesendet und wie ist der zeitliche Ablauf? Hintergrund der Frage: Woher soll man wissen, welches Telegramm 1 und welches 2 ist?

    Kommentar


      #3
      Da bin ich Flexibel. Ich hatte mir überlegt sie in einem abstand von 2sec. zu senden wenn sie über ein GA kommen. Und wenn sie über zwei GAs kommen ist ja eindeutig.
      Die Daten kommen von einer Logo8. Und die hat leider nicht die Möglichkeit die Daten umzuwandeln.
      Gruß Simon

      Kommentar


        #4
        Hi,

        hast Du denn ein Stück python-Code, der von einer Hex-String-Repräsentation nach IEEE754 in eine Zahl umrechnet? Das Zusammensetzen der beiden GA ist relativ simpel:

        Code:
        [Concat]
            type = str
            name = Hexwert als string
            code = '0x' + str(.Part1) + str(.Part2)
            trigger = .Part2
            [Part1]
                type = num
                name = Hex-Teil 1
                knx_dpt = 7
                knx_listen = <GA für Telegramm 1>
            [Part2]
                type = num
                name = Hex-Teil 2
                enforce_updates = true
                knx_dpt = 7
                knx_listen = <GA für Telegramm 2>
        Ich gehe hierbei davon aus, dass Telegramm 1 zuerst, Telegramm 2 als zweites gesendet wird. Nachdem Telegramm 2 gesendet wurde, steht im Item Concat der konkatenierte string (nach Deinem Beispiel "0x41473333".
        Dies jetzt in eine Zahl umzurechnen kann man über einen weiteren codeblock oder eine Logik machen.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Hi,
          einen python Code habe ich noch nicht dazu.
          Verstehe ich das Richtig das das Item Concat mir den Wert 0x41473333 ausgibt, also kann ich für die weiterverarbeitung einfach das Item in der Logik angeben?
          Gruß Simon

          Kommentar


            #6
            Genau, concat enthält die Zeichenkette (string) als hex darstellung. Wenn concat ein numerischer wert sein soll, musst du dessen Typ auf num und
            Code:
            code=.Part1*65536+.Part2
            machen.

            Gruß Waldemar
            Zuletzt geändert von mumpf; 09.11.2017, 18:28.
            OpenKNX www.openknx.de

            Kommentar

            Lädt...
            X