Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Convertierung HEX->DEC

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

[gelöst]Convertierung HEX->DEC

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 5 Posters 617 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stoffel67
    wrote on last edited by
    #1

    hallo,

    ich lese HEX-Werte von meiner Heizung:

    und rechne so um:

     DECwert = (parseInt( HEXwert, 16 ) / 256 ).toFixed( 2 );
    

    zb. Rücklauf: 26C0 ergibt: 38,75

    aber bei der Aussentempp stimmt meine Rechnung nicht

    ich bekomme F924 das ergibt: 249,14 es sollte aber -6,86

    was ist an meiner Rechnung hier falsch, wie erkenne ich negative Werte?

    LG

    Stef

    Mein Adapter: JUNG/GIRA eNet-Adapter

    1 Reply Last reply
    0
    • P Offline
      P Offline
      pafra
      wrote on last edited by
      #2

      Hi Stef,

      ist F924 wirklich die ganze Antwort?

      Damit bekommst Du aber kein Vorzeichen hin.

      Die Antwort ist nicht vielleicht eher 0xc0dbf924?

      Sind die Werte vielleicht IEEE-754?

      Dann schau mal hier:

      https://www.h-schmidt.net/FloatConverter/IEEE754.htmll

      Gruß

      Franz

      1 Reply Last reply
      0
      • ThisoftT Offline
        ThisoftT Offline
        Thisoft
        wrote on last edited by
        #3

        Also, du musst erstmal 1 von deinem Hexwert subtrahieren (ist zwar in diesem Fall wegen dem anschließenden "/256" nicht so wichtig, aber irgendwie so festgelegt…) und anschließend von HEX in Binär umwandeln

        F923 -> 1111 1001 0010 0011

        Dann bedeutet das höchstwertige (linke) Bit das Vorzeichen, wenn "1" dann Minus.

        Anschließend musst du die Binärzahl invertieren:

        1111 1001 0010 0011 -> 0000 0110 1101 1100

        Dann kannst du die Binärzahl in Dezimal konvertieren (dabei aber das höchstwertige Bit ignorieren bzw. vorher auf 0 setzen) und durch 256 teilen.

        Ob's dafür jetzt in Javascript eine halbwegs komfortable Funktion gibt oder ob du das "zu Fuss" machen musst entzieht sich momentan meiner Kenntnis, kann auch gerade nicht testen...

        22 HM-Geräte; PivCCU2 auf RasPi

        ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

        1 Reply Last reply
        0
        • BuZZyB Offline
          BuZZyB Offline
          BuZZy
          wrote on last edited by
          #4

          Ich vermute fast, dass es sich bei den Werten um die Widerstandswerte der Temperaturfühler handelt?

          Wenn es wirklich Widerstandswerte sind dann gehe ich aufgrund deines Beispiels mit den Temperaturen und den Hex Werten davon aus, dass es sich bei den Fühlern um NTC Widerstände handelt.

          (NTC = je kleiner die Temperatur, desto höher der Widerstand)

          26C0 in Dec ergibt 9920 (Ohm?)..

          F924 in Dec ergibt 63780 (Ohm?)..

          Wenn ich mit meiner Vermutung richtig liege,..

          Dann ist ohne den Typ von dem NTC zu kennen ein ausrechnen der Temperatur aus dem Widerstand "sehr schwer" bzw. unmöglich da der Widerstand in einem NTC nicht linear zur Temperatur verläuft..

          EDIT: Mein Tipp war wohl nicht korrekt. :? :lol:

          Der Mihaeru hat die richtige Antwort unter diesem Beitrag geschrieben. :!:

          Gruß

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Mihaeru
            wrote on last edited by
            #5

            Wie thisoft geschrieben hat, ist das höchstwertige Bit ausschlaggebend. Dieses liegt bei 16 Bit Werten bei hex 0x8000. Wenn das bit gesetzt ist, ziehst du einfach 0x1000 ab.

            So kannst du die Berechnung bei 16 Bit Werten umsetzen:

            DECwert = parseInt(HEXwert, 16);
            DECwert = (( DECwert >= 0x8000 ? DECwert - 0x10000 : DECwert) / 256).toFixed(2);
            

            oder:

            DECwert = parseInt(HEXwert, 16);
            DECwert = (( DECwert & 0x8000 ? DECwert - 0x10000 : DECwert) / 256).toFixed(2);
            

            Edit: DECwert > 0x8000 geändert in DECwert >= 0x8000

            …und Beispiel um gezielt das Bit abzufragen

            1 Reply Last reply
            0
            • S Offline
              S Offline
              stoffel67
              wrote on last edited by
              #6

              jepp, damit geht's

              DECwert = parseInt(HEXwert, 16);
              DECwert = (( DECwert >= 0x8000 ? DECwert - 0x10000 : DECwert) / 256).toFixed(2);
              
              

              Vielen Dank, sowas hab ich gesucht…

              Mein Adapter: JUNG/GIRA eNet-Adapter

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              549

              Online

              32.4k

              Users

              81.5k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe