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.5k

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
67 Beiträge 5 Kommentatoren 13.9k 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.
  • A Offline
    A Offline
    atelmblcd
    schrieb am zuletzt editiert von
    #49

    Um die stellen in der Gauge zu limitieren einfach

    folgendes in der Gauge eingeben

    {{value | number:1}}

    eingeben 1 steht für 1 Nachkommastelle 2 für 2 Nachkommastellen usw.

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

      Hallo Jean,

      danke für deine Antwort!

      Ich lese diesen Wert als 32Bit float direkt aus.

      In der Hardware kann ich die Anzahl der Stellen nicht begrenzen.

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

        Hallo atelmblcd,

        perfect!!

        Danke!

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

          du ziehst ja die gauge in den float, mit einem Doppelklick kannst du die gauge konfigurieren.

          es ist das 5 Feld was du abändern must

          Value Format

          kopiere die Zeile die ich gepostet habe einfach rein.

          Wenn du bessere Anzeigen haben willst du sende mir per PN deine Emailadresse ich sende dir dann einen Downloadlink mit den Instrumenten und einer Anleitung wie es installiert wird.

          Siehe 1 Seite Instrument.pdf was ich eingestellt habe um zu sehen welche Instrumente du dann zur Verfügung hast.

          MfG

          jean
          5726_canvas.png
          5726_canvas2.png

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

            Hallo Jean,

            deine Anzeigen sehen richtig "Cool" aus!

            Gefällt mir!

            Hast du meine PN erhalten?

            Danke!

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

              Ich habe noch eine Frage

              zum Modbus Read

              ****Kann man mit einer FC3 Abfrage auch Register abfragen die nicht zusammenhängen?

              z.B 272-278,528-530…... oder muss man jeden Block einzeln abfragen..****.

              Danke!

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

                Wenn du z.b von 272-278 auslesen willst dann gibst du 272 als Adresse an und 6 als Quantity.

                Leider ist keine Mail als private Nachricht eingetroffen.

                mfG

                Jean

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

                  Hallo Jean,

                  soweit ist es klar, wenn ich jedoch noch zusetzlich die Register 528-530 einlesen möchte.

                  Also 272-278 + 528-530 mit einem FC Read ist das möglich?

                  Im FC Setup kann ich ja nur eine Range angeben. Als A-B.

                  Ich probiere es mit der PN noch einmal!

                  Danke!

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

                    @JXA:

                    ****Kann man mit einer FC3 Abfrage auch Register abfragen die nicht zusammenhängen?

                    z.B 272-278,528-530…... oder muss man jeden Block einzeln abfragen..****. `
                    Mit etwas Programmieraufwand könnte ich mir vorstellen, dass man es über das Flex Getter https://www.youtube.com/watch?v=G4p-Af1olo8 , https://flows.nodered.org/node/node-red-contrib-modbus hinbekommen könnte. Aber übersichtlicher wird es dadurch sicher nicht. Ich würde für jeden Registerbereich ein eigenes Read-Node und das Response Node verwenden.

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

                      Hallo "Graf",

                      danke für deine Antwort!

                      Sicher mit einer einzelnen Abfrage für jeden Block bleibt es übersichtlicher.

                      Ich frage mich halt wie es mit dem timing aussieht.

                      Wenn ich für 1 Device 3x FC03 ausführen muss und dann noch die anderen FC1 ;FC2; FC5.

                      Dachte daher 1x Read FC03 -> alle Register

                      1x Read FC01 -> alle Register

                      usw

                      Hat jemand Erfahrung ab das sauber läuft? (Dauerbetrieb)

                      Danke.

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

                        Ich verstehe immer noch nicht so ganz worauf Du hinaus willst. Jeden Anfrage im Modbusfeld wird nacheinander abgearbeitet. Und dass was Du abfragen willst ist in einer Größenordnung, die man als überschaubar klein bezeichnen kann. Überfordern kann man solche Bussysteme jedoch schnell mit zu klein eingestellten Abtastraten. Darüber sollte man sich im Vorfeld Gedanken machen. Eine Raum- oder Außentemperatur wird sich im Gegensatz zu Betriebszuständen kaum schlagartig verändern. Wenn ich z.B. Temperaturwerte in einem Trend erfasse, so lasse ich nur alle 10-15 Minuten einen Wert aufzeichnen.

                        Für den Fall, dass Du immer zum gleichen Zeitpunkt z.B. alle FC03 für eine Device auslesen möchtest, so nimmst Du das Modbus Node Flex Getter und schaltest dem ein Funnction und ein Inject Node vor. Wird aber zeitlich kaum anders sein wie mit dem Modbus Read-Node, denn nach einem Deploy werden die Nodes ja zeitgleich neu gestartet.

                        Garf

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

                          Hallo Forum, nochmals vielen Dank, empfange nun die richtigen Werte ;)

                          ` > Die Klammer ()wird anders ausgewertet bei den Floats wenn ich richtg liege.

                          (0,4) 0 ist wo ich anfange zu lesen und 4 die Anzahl

                          lese ich z.b 3Stück 32 bit Floats ein und ich will das das 3te 32 bit Float haben so schreibe ich (8,4)

                          wenn ich nur ein Float habe kann ich die Klammer sogar leer lassen. `

                          jedoch möchte ich noch weitere Register auslesen und habe damit so meine Probleme…

                          für:

                          msg.payload = msg.payload.buffer.readFloatBE(0,2);
                          

                          erhalte ich die Spannung von L1

                          für:

                          msg.payload = msg.payload.buffer.readFloatBE(8,4);
                          

                          erhalte ich die Spannung von L2

                          und nun verstehe ich von "atelmblcd" noch nicht den Auslese Algorithmus.

                          Warum …readFloatBE(8,4); also die 8 verstehe ich nicht. :roll:

                          welche Parameter benötige ich nun für das auslesen von L3

                          hier mal ein aktueller ausschnitt:
                          5869_testbild.jpg
                          aus den beiden letzten Werten im Response müsste sch ja L3 ermitteln lassen.

                          Hoffe ihr könnt mir da nochmal auf die Sprunge helfen

                          Vielen Dank

                          Pitu61

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

                            @pitu61:

                            Hoffe ihr könnt mir da nochmal auf die Sprunge helfen `
                            In deinem Screenshot kann man erkennen, dass Du sechs Modbusregister ausliest. Im Buffer werden diese als 8bit Werte dargestellt und zwar in Summe zwölf Stück.

                            Nach der bisherigen Schreibweise verwendet man für:

                            das erste Modbus-Register-Pärchen: readFloatBE(0,1,2,3) –--> vermutlich L1

                            das zweite Modbus-Register-Pärchen: readFloatBE(4,5,6,7) ----> vermutlich L2

                            das dritte Modbus-Register-Pärchen: readFloatBE(8,9,10,11) ----> vermutlich L3

                            In der neuen Schreibweise:

                            readFloatBE(0,4) ----> vermutlich L1

                            readFloatBE(4,4) ----> vermutlich L2

                            readFloatBE(8,4) ----> vermutlich L3

                            So jedenfalls habe ich es verstanden.

                            Garf

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

                              Genau so wie Garf es beschrieben hat habe ich es verstanden.

                              Siehe dir auf youtube folgendes Video an.

                              https://www.youtube.com/watch?v=eXP0gxD … FNbJOW_-gH

                              interessant ist 0:58 dort erklärt Klaus Landsdorf es. Und er ist der Author der Auslesesoftware.

                              er liest 50 Register gleichzeitig aus und filtert die benötigte Ausgabe mit z.b (8,4)

                              es ist sehr gut auf dem Youtube Video zu erkennen.

                              https://flows.nodered.org/node/node-red-contrib-modbus

                              Alle Beispiele die Klaus auf youtube zeigt kannst du hier runterladen.

                              https://github.com/biancode/node-red-contrib-modbus

                              MfG

                              Jean

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

                                @Garf:

                                Ich verstehe immer noch nicht so ganz worauf Du hinaus willst. Jeden Anfrage im Modbusfeld wird nacheinander abgearbeitet. Und dass was Du abfragen willst ist in einer Größenordnung, die man als überschaubar klein bezeichnen kann. Überfordern kann man solche Bussysteme jedoch schnell mit zu klein eingestellten Abtastraten. Darüber sollte man sich im Vorfeld Gedanken machen. Eine Raum- oder Außentemperatur wird sich im Gegensatz zu Betriebszuständen kaum schlagartig verändern. Wenn ich z.B. Temperaturwerte in einem Trend erfasse, so lasse ich nur alle 10-15 Minuten einen Wert aufzeichnen.

                                Für den Fall, dass Du immer zum gleichen Zeitpunkt z.B. alle FC03 für eine Device auslesen möchtest, so nimmst Du das Modbus Node Flex Getter und schaltest dem ein Funnction und ein Inject Node vor. Wird aber zeitlich kaum anders sein wie mit dem Modbus Read-Node, denn nach einem Deploy werden die Nodes ja zeitgleich neu gestartet.

                                Garf `
                                Hallo Graf,

                                ich werde die Sache austesten, wie es am stabilsten läuft.

                                Danke.

                                Gruß

                                JXA

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

                                  Hi Jean,

                                  und schon wieder ist es passiert. Deinen Links zu Klaus Landsdorf gefolgt, gepaart mit meiner Neugier habe ich mir von Klaus Landsdorf ein Beispielflow in mein Testsystem (Windowslaptop) kopiert. Ich wusste schon als die Nodes nicht auf dem Bildschirm auftauchten, jetzt wird es blöd. Und was soll ich dir sagen, Node-Red war abgestürzt und ließ sich auch nicht mehr wegen der fehlerbehafteten Json-Datei neu starten. Abhilfe brachte hier nur die Datei flows_xxxxxx.json (xxx = Platzhalter) im Unterordner .node-red zu löschen. Nun startete Node-Red zwar wieder, aber alle Flows waren natürlich weg. Den Ordnerinhalt hatte ich letztmalig in der 1.KW 2018 gesichert. Somit war nun die Arbeit der letzen 4-6 Wochen mit einmal weg.

                                  Dann fiel mir allerdings noch die Datei mit der Bezeichnung .flows_xxxxxx.json.backup vom 18.02.2018 ins Auge. Da ich eh nichts mehr zu verlieren hatte, habe ich der Backupdatei dann die Dateibezeichnung der gelöschten Datei gegeben. Und tatsächlich alles wieder da.

                                  Ab sofort werde ich regelmäßig, und immer bevor ich mir einen Flow von irgendwoher ins System kopiere, den Inhalt des .node-red Ordners sichern.

                                  Mir ist dies nun schon mindestens das zweite Mal passiert, dabei einmal sogar auf einem laufenden System (RevPi). Seitdem nutze ich ausschließlich meinen Windowslaptop als Testsystem. Aber auch hier sammeln sich über Zeit wichtige Dinge an, die man noch nicht in das Wirksystem übertragen hat

                                  Garf

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

                                    Hallo Graf,

                                    das ist mehr als ärgerlich wenn der Import eines Flows Node-Red abschießt.

                                    Der Im-und Export ich ja dafür da.

                                    Ich hatte noch nie Probleme damit auch in der Schule nicht wo die Schüler dauernd Im-und Exporte in Node-Red machen.

                                    Allerdings habe ich noch nie Node-Red auf Windows Systemen installiert.

                                    Immer nur aus Raspberry und Debian.

                                    Mein Note-Red's laufen bei mir zuhause auf Synology NAS Virtual Maschinen.

                                    Auf den Virtual Machines ist ein Debian installiert mit Node-Red.

                                    Teste mal Virtual-Box und installiere da ein Debian mit Node-Red

                                    https://www.virtualbox.org/

                                    Seit gut 5 Jahren benutzte ich in dem Programmierkursen Virtualbox und es lief bis jetzt problemlos.

                                    Einmal installiert kann man soviel Clones machen wie man will. Schießt man eine Maschine ab einfach den Master klonen und weiter gehst.

                                    MfG

                                    Jean

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

                                      Hi Jean,

                                      vielen Dank für deine Antwort. Es liegt aber definitiv nicht am verwendeten Betriebssystem. Einmal ist es jetzt unter Windows und einmal unter Linux passiert. Und jedes mal, wenn man Modbus-Beispielflows einliest. Vermutlich liegt es an den in den Beispielflows bereits voreingestellten Ports und IP-Adressen. Dies jedenfalls entnehme ich dem Log auf der Konsole.

                                      Meine Node-Red Anwendungen laufen zur Zeit auf einem RasPi3 und auf einem Revolution Pi (https://revolution.kunbus.de/). Und darauf werden nur die fertigen Nodes und Flows installiert. Testen werden ich darauf nicht mehr.

                                      War dir die Backupfunktion schon bekannt?

                                      Ich bin jedenfalls froh, dass man sich so sein System wieder herstellen kann.

                                      Kennst Du vielleicht eine Möglichkeit wie man in Node-Red feststellen kann, in welchen Nodes z.B. eine bestimmte globale Variable verwendet (lesend/schreibend) wird?

                                      Garf

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

                                        super vielen Dank,

                                        jetzt habe ich die Zugriffe auf die jeweiligen Register verstanden.

                                        Gruß

                                        Pitu61

                                        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

                                        331

                                        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