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. 16 bit signed Float einlesen über den Node-red Modbus

NEWS

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

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

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

16 bit signed Float einlesen über den Node-red Modbus

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
67 Beiträge 5 Kommentatoren 14.0k 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.
  • wendy2702W Online
    wendy2702W Online
    wendy2702
    schrieb am zuletzt editiert von
    #5

    Würde das nicht mit dem Modbus Adapter gehen und eventuell einfacher sein?

    Bitte keine Fragen per PN, die gehören ins Forum!

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      atelmblcd
      schrieb am zuletzt editiert von
      #6

      Ich habe Node-red nicht auf einem Raspberry laufen sondern auf einer virtuellen debian Linux auf meinem Synology NAS.dort musste ich zuerst Node JS installieren dann erst Node-red weil dieser auf Node-JS aufbaut.

      Es sind mir zuviele SD Karten im Dauerbetrieb auf dem Raspberry abgeraucht insbesondere wenn man alle Messwerte in Datenbanken schreibt

      Dein Posting sieht ja gar nicht schlecht aus.

      du musst nur die Funktionen verbinden.

      Habe leider bei mir keinen Modbus mit einem signed 32 bit.

      notfalls könnte man 2 mal 16 bit auslesen und diese einem 32bit addieren.

      wie das gemacht wird steht in den Links oben.

      Habe 2 pdf eingehängt.

      Die eine Seite sind spezielle Instrumente, wenn du die benötigst poste ich wie ich es gemacht habe.

      MfG

      Jean
      5726_instrument.pdf
      5726_signed-16-bit-float.pdf

      1 Antwort Letzte Antwort
      0
      • wendy2702W Online
        wendy2702W Online
        wendy2702
        schrieb am zuletzt editiert von
        #7

        Die Instrumente sehen gut aus.

        Kannst du die Widgets als Export einstellen?

        Gesendet von iPhone mit Tapatalk Pro

        Bitte keine Fragen per PN, die gehören ins Forum!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        1 Antwort Letzte Antwort
        0
        • G Offline
          G Offline
          Garf
          schrieb am zuletzt editiert von
          #8

          Hallo wendy2702,

          deine Frage ist durchaus nachvollziehbar, wenn man ioBroker verwendet.

          Mache ich aber nicht. Ich bin in diesem Forum was ioBroker betrifft nur lesend unterwegs.

          Angemledet habe ich mich hier dann letztendlich um mich mit anderen Usern in Bezug auf die Node-Red Programmierung auszutauschen.

          Wie User Jean bereits schon geschrieben hat im deutschsprachigen Raum findet man nicht nur zur Modbus-Node Anwendung nicht allzuviel. Auch zu Node-Red im Allgemeinen ist leider kaum etwas zu finden.

          @Jean

          Ich habe meinen Fehler gefunden. Ich hatte einfach das Function-Node am falschen Knoten angebunden. Auf dem Bild mit dem Response Node kann man dies gut erkennen. Am oberen Knoten werden keine Buffer Werte zur Verfügung gestellt werden. Den unteren Knoten mit dem Funktion-Node verbunden und schon werden die Messwerte angezeigt und können weiterverarbeitet werden. Einen weiteren Teiler musste ich jetzt nicht einsetzen. Aber vielleicht liegt es auch daran, dass ich keinen Integerwert, sondern einen Floatwert einlesen. Dies hat jedoch zur Folge, dass mir zuviele Nachkommastellen angezeigt werden. Die habe ich dann mit einer Aufrundenfunktion, auf eine Stelle hinter dem Komma, korrigiert.

          Dies sieht dann jetzt so aus:

          msg.payload = Originalwert ; msg.payload2 = aufgeundeter Wert
          3639_pic5.jpg

          Tausend Dank für den Supertipp und so einfach kann es manchmal sein. Waaaahnsinn. :lol:

          Ich hoffe, wir lesen wieder voneinander.

          Gruß

          Garf

          Edit:

          Da haben wir wohl alle parallel geschrieben. :mrgreen:

          Super Anleitung von dir, damit hätte ich meinen Fehler sicher deutlich schneller gefunden.

          Die Instrumente sehen absolut spitzenmäßig aus, so etwas hätte ich wohl auch sehr gerne. :o

          Deshalb frage ich mal ganz schüchtern, wie macht man denn so etwas in Node-Red. Bisher habe ich so etwas nur im Scargill's Tech Blog gesehen.

          1 Antwort Letzte Antwort
          0
          • wendy2702W Online
            wendy2702W Online
            wendy2702
            schrieb am zuletzt editiert von
            #9

            Ok.

            Dann weiterhin viel Erfolg!

            Gesendet von iPhone mit Tapatalk Pro

            Bitte keine Fragen per PN, die gehören ins Forum!

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              atelmblcd
              schrieb am zuletzt editiert von
              #10

              Hier einmal wie ich die Instrumente gemacht habe.

              habe alles in einen Rar ordner gepackt.

              es müssen Java scripte in den Node-Red ordner kopiert werden.

              um einen einfachen Zugriff zu haben habe ich einen share angelegt.

              MfG

              Jean

              1 Antwort Letzte Antwort
              0
              • G Offline
                G Offline
                Garf
                schrieb am zuletzt editiert von
                #11

                @atelmblcd:

                Hier einmal wie ich die Instrumente gemacht habe. `

                Tausend Dank dafür, irgendwie fällt heute wohl für mich Weihnachten und Ostern auf einen Tag.

                Du scheinst dich ja sehr sehr gut mit Node-Red auszukennen.

                Garf

                1 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  atelmblcd
                  schrieb am zuletzt editiert von
                  #12

                  Sorry falsches Rar angehängt dies ist das richtige

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    atelmblcd
                    schrieb am zuletzt editiert von
                    #13

                    Geht leider nicht durch weil zu gross

                    sende mir per PN deine Mailadresse, sende dir dann einen Downloadlink.

                    MfG

                    Jean

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      atelmblcd
                      schrieb am zuletzt editiert von
                      #14

                      wenn du apache laufen hast dann findest du wenn alles installiert ist unter myjs Steeelseries-Canvas-Master html demos

                      Unter Rgraph sind auch demos.

                      Viel Spaas

                      du must eine Template zur Visualisierung nehmen und keine gauge.

                      die 2 ersten Zeilen geben dem Weg zu Messinstrument an.

                      Siehe mein smarty flow.

                      Deine Lösung würde mich interessieren, es ich sicher Code dabei den ich gebrauchen kann, alleine kann man nicht alles wissen.

                      MfG

                      Jean

                      1 Antwort Letzte Antwort
                      0
                      • G Offline
                        G Offline
                        Garf
                        schrieb am zuletzt editiert von
                        #15

                        Ist angekommen. Vielen Dank dafür.

                        Sieht aber jetzt nicht danach aus, als dass ich damit in 10 Minuten durch wäre. Ich vermute mal, da werde ich wohl noch einige Fragen zu haben.

                        Ich bringe jetzt erst einmal das Thema mit dem Aulesen der Messwerte zu Ende, visulisiere diese dann mit den Standard-Dashboard-Nodes und wage mich dann an die Profidarstellung.

                        Ich hoffe, Du stehst mir da dann wieder ein wenig mit Rat und Tat zur Seite.

                        Meinst Du die Lösung für das Aufrunden? So etwas bringt Javascript ja leider von Haus aus nicht mit.

                        Sieht so aus:

                        ! // Funktion Runden auf drei Nachkommastellen 10=1, 100=2, 1000=3,…
                        ! function extround(zahl,n_stelle) {
                        ! zahl = (Math.round(zahl * n_stelle) / n_stelle);
                        ! return zahl;
                        ! }
                        ! msg.payload = msg.payload.buffer.readFloatBE(0,1,2,3);
                        ! msg.payload2 = extround(msg.payload, 1000);
                        ! return msg;

                        Gruß

                        Garf

                        1 Antwort Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          atelmblcd
                          schrieb am zuletzt editiert von
                          #16

                          nein nicht für aufrunden sondern wie du versucht hast den signed float in Dezimal umzurechnen.

                          Runden geht viel einfacher

                          Einfach in der Gauge {{value | number:1}} eingeben 1 steht für 1 Nachkommastelle 2 für 2 Nachkommastellen usw.

                          Die Instrumente sind in 5 minuten reinkopiert dann kannst du damit loslegen.

                          einfach im Terminal die Befehle eingeben copy paste.

                          MfG

                          Jean

                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            atelmblcd
                            schrieb am zuletzt editiert von
                            #17

                            @wendy2702:

                            Die Instrumente sehen gut aus.

                            Kannst du die Widgets als Export einstellen?

                            Gesendet von iPhone mit Tapatalk Pro `

                            ich nehme an daas die Instrumente auch bei dem ioBroker funktionieren würden.

                            Es sind nur Java scripte. Und man kann sie auch in html Seiten anzeigen

                            Node-red verwendet Node JS als Basis.

                            Sende mir per PN deinen Mailadresse.

                            Ich sende die scripte dann zu.

                            MfG

                            Jean

                            1 Antwort Letzte Antwort
                            0
                            • J Offline
                              J Offline
                              JXA
                              schrieb am zuletzt editiert von
                              #18

                              Vielen Dank für die hilfreiche Info!

                              Ich habe ein ganz ähnliches Problem einen Sensor über Modbus TCP auszulesen.

                              Der Wert wird als 32-bit float ausgegeben. Ich habe den Sketch angepasst,

                              komme aber nicht zum gewünschten Ergebnis.

                              Wie zu sehen ist, hat Sensor-1 einen Wert von 21,7 °C

                              Über einen Hinweis würde ich mich sehr freuen!

                              Beschreibung und Screenshoot habe ich beigefügt.
                              5860_modbus_info.png
                              5860_true_readout.png
                              5860_modbus_setting.png
                              5860_main.png

                              1 Antwort Letzte Antwort
                              0
                              • A Offline
                                A Offline
                                atelmblcd
                                schrieb am zuletzt editiert von
                                #19

                                Mich würde interessieren was in der Funktion steht.

                                füge mal ein Modbus response ein damit man die Werte sieht.

                                am besten den Node expotieren und hier einstellen so kann ich ihn importieren und mir ansehen.

                                Wenn ich Schwierigkeiten habe Modbus auszulesen oder verwirrende daten bekomme nutze ich zur überprüfung die gratis Software modbus doctor

                                http://www.kscada.com/modbusdoctor

                                Die Webseite ist auf französich aber Software kann man umstellen.

                                ist es überhaupt ein signed float und nicht ein normaler float?

                                ich habe nichts in der Anleitung vom x320 gefunden dass es ein signed float ist.

                                auf der Seite 38 steht dass man von little auf big Endian umschaltung kann mittels einer Checkbox

                                https://www.controlbyweb.com/x320/x-320 … manual.pdf

                                Prüfe das mal mit dem Modbusdoctor

                                mfG

                                Jean

                                1 Antwort Letzte Antwort
                                0
                                • P Offline
                                  P Offline
                                  pitu61
                                  schrieb am zuletzt editiert von
                                  #20

                                  Hallo JXA,

                                  ich habe ein ähnliches Problem und erhalte unerklärliche werte, jedoch bastel ich noch ein bisschen eigenständig rum.

                                  Sollte ich zu einer Lösung kommen, poste ich meinen Funktion code - selbstverständich.

                                  könntest du den Code deiner Funktion mit uns teilen?

                                  dann können wir dir evtl. besser helfen.

                                  Gruß

                                  Pitu61

                                  1 Antwort Letzte Antwort
                                  0
                                  • J Offline
                                    J Offline
                                    JXA
                                    schrieb am zuletzt editiert von
                                    #21

                                    Guten Abend Jean,

                                    vielen Dank für deine Hilfe.

                                    Die Software "Modbus Doctor" ist sehr hilfreich und läuft auch noch ohne Installation! SUPER!

                                    Das Auslesen der Register funktioniert mit der Software ohne Probleme und ja es ist kein Int. sondern 32Bit Float.

                                    So wie es aussieht ist mein Problem die "richtige Übersetzung" der Werte im Array also die Funktion!

                                    Der X320 ist momentan Little Endian eingestellt.

                                    Hier der aktuelle Code:

                                    [{"id":"44292168.ff1788","type":"modbus-read","z":"bd65fff.1e8bb8","name":"X320_Read","topic":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"272","quantity":"2","rate":"1","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2b52835b.4790cc","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":120,"y":272.66663360595703,"wires":[[],["579e2814.4277a"]]},{"id":"579e2814.4277a","type":"function","z":"bd65fff.1e8bb8","name":" 32bit","func":"msg.payload=msg.payload.buffer.readInt32LE;\nreturn msg;\n","outputs":1,"noerr":0,"x":286,"y":281.3333435058594,"wires":[["3b5d9dcf.0f7372"]]},{"id":"3b5d9dcf.0f7372","type":"debug","z":"bd65fff.1e8bb8","name":"","active":true,"console":"false","complete":"false","x":480.5,"y":279,"wires":[]},{"id":"2b52835b.4790cc","type":"modbus-client","z":"","name":"X320","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"192.168.0.48","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectTimeout":"2000"}]

                                    1 Antwort Letzte Antwort
                                    0
                                    • J Offline
                                      J Offline
                                      JXA
                                      schrieb am zuletzt editiert von
                                      #22

                                      Sorry aber ich kann keine Screenshots hochladen

                                      "Das Kontingent für Dateianhänge ist bereits vollständig ausgenutzt."

                                      1 Antwort Letzte Antwort
                                      0
                                      • A Offline
                                        A Offline
                                        atelmblcd
                                        schrieb am zuletzt editiert von
                                        #23

                                        teste mal diesen Flow dieser müsste funktionieren laut

                                        https://nodejs.org/api/buffer.html#buff … t_noassert

                                        buf.readFloatBE(offset[, noAssert])

                                        buf.readFloatLE(offset[, noAssert])

                                        Added in: v0.11.15

                                        offset <integer>Number of bytes to skip before starting to read. Must satisfy: 0 <= offset <= buf.length - 4.

                                        noAssert <boolean>Skip offset validation? Default: false

                                        Returns: <number>Reads a 32-bit float from buf at the specified offset with specified endian format (readFloatBE() returns big endian, readFloatLE() returns little endian).

                                        Setting noAssert to true allows offset to be beyond the end of buf, but the resulting behavior is undefined.

                                        (0,1,2,3) liest die Register aus dem Buffer jeweils 8 bit.

                                        [{"id":"6f92b84.0ef3ac8","type":"modbus-read","z":"7d4de8d.1542118","name":"X320_Read","topic":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"272","quantity":"2","rate":"1","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"741a094c.1340b8","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":330,"y":260,"wires":[[],["3de8b140.13ce2e","cca0874c.f3d76"]]},{"id":"3de8b140.13ce2e","type":"function","z":"7d4de8d.1542118","name":" 32bit","func":"msg.payload=msg.payload.buffer.readFloatLE(0,1,2,3);\nreturn msg;\n","outputs":1,"noerr":0,"x":510,"y":400,"wires":[["f6427835.8241b"]]},{"id":"f6427835.8241b","type":"debug","z":"7d4de8d.1542118","name":"","active":true,"console":"false","complete":"false","x":690,"y":540,"wires":[]},{"id":"cca0874c.f3d76","type":"modbus-response","z":"7d4de8d.1542118","name":"","registerShowMax":20,"x":600,"y":260,"wires":[]},{"id":"741a094c.1340b8","type":"modbus-client","z":"","name":"X320","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"192.168.0.48","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectTimeout":"2000"}]</number></boolean></integer>

                                        1 Antwort Letzte Antwort
                                        0
                                        • J Offline
                                          J Offline
                                          JXA
                                          schrieb am zuletzt editiert von
                                          #24

                                          Hallo Jean,

                                          vielen Dank für deinen Flow,

                                          Über den Modbus Response werden die Daten jetzt angezeigt.

                                          Die Ausgabe ist jedoch noch nicht korrekt.

                                          Ausgegeben wird aktuell : -1.7142884334298003e-13

                                          Gruß

                                          Bastian

                                          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

                                          816

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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