Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
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.9k

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

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

[gelöst]Convertierung HEX->DEC

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 5 Kommentatoren 617 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    stoffel67
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pafra
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • ThisoftT Offline
        ThisoftT Offline
        Thisoft
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • BuZZyB Offline
          BuZZyB Offline
          BuZZy
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Mihaeru
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              stoffel67
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              787

              Online

              32.4k

              Benutzer

              81.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe