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. Node-Red
  5. Node-Red errechneten Wert mit Dezimaltrenner versehen?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    616

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Node-Red errechneten Wert mit Dezimaltrenner versehen?

Scheduled Pinned Locked Moved Node-Red
8 Posts 3 Posters 979 Views 4 Watching
  • 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.
  • Lucifor1976L Offline
    Lucifor1976L Offline
    Lucifor1976
    wrote on last edited by Lucifor1976
    #1

    Schönen guten Abend zusammen,

    ich hab mal wieder etwas zu node-red.
    Wir haben einen e3dc S10 E. und lesen diesen über den RSCP aus. LEider funktionieren die Datenpunkte DB ja noch nicht.
    (was ein träumchen wäre)

    Ich möchte nun mit node red die Tagesproduktion errechnen. Leider geht das gerade wohl nur mit
    /PVI/String0/DC_String_Energy_all +
    /PVI/String1/DC_String_Energy_all

    Das das nicht so genau ist, da die Wechselrichterverluste fehlen ist mir klar. Aber darum gehts grad nicht.

    Ich rechne nun mit node red String0 und String1 zusammen, das klappt und erhalte als Ergebnis Wh. =
    1234567Wh
    Um das ganze in Grafana optisch aufzuwerten schön zu machen, stimmt das Format nicht.
    Es muss ja eigentlich so sein: 1234,567kwh Gesamtproduktion.

    In Node red sieht das so aus:

    Bildschirmfoto 2023-04-18 um 19.20.35.png

    Bildschirmfoto 2023-04-18 um 19.21.19.png

    Ich schaff es nun aber nicht mir anstatt 1234567 // 1234,567 ausgeben zu lassen.

    Kann mir jemand auf die Sprünge helfen?


    if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_0/DC_STRING_ENERGY_ALL") context.set("String0", msg.payload);
    if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_1/DC_STRING_ENERGY_ALL") context.set("String1", msg.payload);

    var String0 = context.get("String0") || 0;
    var String1 = context.get("String1") || 0;

    msg.payload = String0 + String1 / 1000;
    return msg;


    Die Formel im Spoiler klebt mir an die 7 Stellen nochmals drei Nachkomma Stellen an, ein ... * 0,001 bringt ganz seltsame Ergebnisse.

    ioBroker@Debian 12 VM auf Proxmox 8.4.1 | HP Proliant DL380G9 | DS923+ 10TB | RS4021+ 144TB | Unifi Netzwerk 6AP, 3 EtagenSwitche | Anycubic MegaS+Kossel+Chiron, Elektroniker und Funkamateur

    mickymM F 2 Replies Last reply
    0
    • Lucifor1976L Lucifor1976

      Schönen guten Abend zusammen,

      ich hab mal wieder etwas zu node-red.
      Wir haben einen e3dc S10 E. und lesen diesen über den RSCP aus. LEider funktionieren die Datenpunkte DB ja noch nicht.
      (was ein träumchen wäre)

      Ich möchte nun mit node red die Tagesproduktion errechnen. Leider geht das gerade wohl nur mit
      /PVI/String0/DC_String_Energy_all +
      /PVI/String1/DC_String_Energy_all

      Das das nicht so genau ist, da die Wechselrichterverluste fehlen ist mir klar. Aber darum gehts grad nicht.

      Ich rechne nun mit node red String0 und String1 zusammen, das klappt und erhalte als Ergebnis Wh. =
      1234567Wh
      Um das ganze in Grafana optisch aufzuwerten schön zu machen, stimmt das Format nicht.
      Es muss ja eigentlich so sein: 1234,567kwh Gesamtproduktion.

      In Node red sieht das so aus:

      Bildschirmfoto 2023-04-18 um 19.20.35.png

      Bildschirmfoto 2023-04-18 um 19.21.19.png

      Ich schaff es nun aber nicht mir anstatt 1234567 // 1234,567 ausgeben zu lassen.

      Kann mir jemand auf die Sprünge helfen?


      if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_0/DC_STRING_ENERGY_ALL") context.set("String0", msg.payload);
      if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_1/DC_STRING_ENERGY_ALL") context.set("String1", msg.payload);

      var String0 = context.get("String0") || 0;
      var String1 = context.get("String1") || 0;

      msg.payload = String0 + String1 / 1000;
      return msg;


      Die Formel im Spoiler klebt mir an die 7 Stellen nochmals drei Nachkomma Stellen an, ein ... * 0,001 bringt ganz seltsame Ergebnisse.

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      wrote on last edited by
      #2

      @lucifor1976 Warum rechnest Du denn mit Strings überhaupt? Hast Du die Konvertierung eingeschaltet. Und nein Zahlen haben sowohl im iobroker, als auch in NodeRed einen Punkt als Dezimaltrenner und werden dir nur in den Objekten mit Komma dargestellt.

      Schau mal im Adapter ob Du diese blöde Konvertierung eingeschaltet hast.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      Lucifor1976L 1 Reply Last reply
      0
      • Lucifor1976L Lucifor1976

        Schönen guten Abend zusammen,

        ich hab mal wieder etwas zu node-red.
        Wir haben einen e3dc S10 E. und lesen diesen über den RSCP aus. LEider funktionieren die Datenpunkte DB ja noch nicht.
        (was ein träumchen wäre)

        Ich möchte nun mit node red die Tagesproduktion errechnen. Leider geht das gerade wohl nur mit
        /PVI/String0/DC_String_Energy_all +
        /PVI/String1/DC_String_Energy_all

        Das das nicht so genau ist, da die Wechselrichterverluste fehlen ist mir klar. Aber darum gehts grad nicht.

        Ich rechne nun mit node red String0 und String1 zusammen, das klappt und erhalte als Ergebnis Wh. =
        1234567Wh
        Um das ganze in Grafana optisch aufzuwerten schön zu machen, stimmt das Format nicht.
        Es muss ja eigentlich so sein: 1234,567kwh Gesamtproduktion.

        In Node red sieht das so aus:

        Bildschirmfoto 2023-04-18 um 19.20.35.png

        Bildschirmfoto 2023-04-18 um 19.21.19.png

        Ich schaff es nun aber nicht mir anstatt 1234567 // 1234,567 ausgeben zu lassen.

        Kann mir jemand auf die Sprünge helfen?


        if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_0/DC_STRING_ENERGY_ALL") context.set("String0", msg.payload);
        if (msg.topic === "e3dc-rscp/0/PVI/PVI_0/String_1/DC_STRING_ENERGY_ALL") context.set("String1", msg.payload);

        var String0 = context.get("String0") || 0;
        var String1 = context.get("String1") || 0;

        msg.payload = String0 + String1 / 1000;
        return msg;


        Die Formel im Spoiler klebt mir an die 7 Stellen nochmals drei Nachkomma Stellen an, ein ... * 0,001 bringt ganz seltsame Ergebnisse.

        F Offline
        F Offline
        frankyboy73
        wrote on last edited by
        #3

        @lucifor1976 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

        msg.payload = String0 + String1 / 1000;

        Es gilt bei Formeln Punkt vor Strichrechnung.
        Bei deiner Formel würde der String1 erst durch 1000 geteilt und dann + String0 gerechnet.
        10000 + 10000 / 1000 wären dann 10010
        Versuchsmal mit ner Klammer (10000 + 10000) / 1000, das sind dann nämlich 20.
        Also msg.payload = (String0 + String1) / 1000;

        Das aber nur wenn du Zahlenwerte verwendest (Number), wenn die Inhalte deiner String Variablen wirklich Strings sind klappt das nicht.
        Zur Not könntest du in der Funktion deine Strings als Number benutzen.
        So zum Beispiel:
        msg.payload = (Number(String0) + Number(String1)) / 1000;

        Aber @mickym kennt da bestimmt noch ne bessere Lösung.

        Schöne Grüße Frank

        mickymM Lucifor1976L 2 Replies Last reply
        0
        • F frankyboy73

          @lucifor1976 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

          msg.payload = String0 + String1 / 1000;

          Es gilt bei Formeln Punkt vor Strichrechnung.
          Bei deiner Formel würde der String1 erst durch 1000 geteilt und dann + String0 gerechnet.
          10000 + 10000 / 1000 wären dann 10010
          Versuchsmal mit ner Klammer (10000 + 10000) / 1000, das sind dann nämlich 20.
          Also msg.payload = (String0 + String1) / 1000;

          Das aber nur wenn du Zahlenwerte verwendest (Number), wenn die Inhalte deiner String Variablen wirklich Strings sind klappt das nicht.
          Zur Not könntest du in der Funktion deine Strings als Number benutzen.
          So zum Beispiel:
          msg.payload = (Number(String0) + Number(String1)) / 1000;

          Aber @mickym kennt da bestimmt noch ne bessere Lösung.

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          wrote on last edited by
          #4

          @frankyboy73 Na wichtig ist, dass die Konvertierungsfunktion ausgeschaltet ist:

          1c618968-a2fa-4026-b855-b27f83892734-image.png

          Das muss irgendein Relikt aus der Vergangenheit sein - sonst kommen auch Zahlen aus den Datenpunkten raus. Wenn man das allerdings spät umstellt - hat man halt Konvertierungsaufwand.

          Ansonsten schön wieder was von Dir zu hören. Du hast Dich rar gemacht!!!! -

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          F 1 Reply Last reply
          0
          • mickymM mickym

            @frankyboy73 Na wichtig ist, dass die Konvertierungsfunktion ausgeschaltet ist:

            1c618968-a2fa-4026-b855-b27f83892734-image.png

            Das muss irgendein Relikt aus der Vergangenheit sein - sonst kommen auch Zahlen aus den Datenpunkten raus. Wenn man das allerdings spät umstellt - hat man halt Konvertierungsaufwand.

            Ansonsten schön wieder was von Dir zu hören. Du hast Dich rar gemacht!!!! -

            F Offline
            F Offline
            frankyboy73
            wrote on last edited by
            #5

            @mickym Hi, da seine Formel beim addieren funktioniert, gehe ich davon aus, das Zahlen aus seinen Nodes kommen, Strings würden ja nur aneinander gehängt werden.
            Ich denke mal das nur die Bezeichnung, Benennung "String" ist und das gar nicht wirklich ein String ist. Wie gesagt nur ne Vermutung.
            Ja, ab und zu Poste ich auch mal was, wenn ich es für Sinnvoll halte. Ich lese hier aber immer noch täglich mit. Für Antworten bin ich meist nur nicht schnell genug und außerdem kennen sich einige Leute hier besser aus wie ich.
            Der Thread: https://forum.iobroker.net/topic/64204/shellys-alt-und-plus-über-mqtt-adapter?_=1681843139200
            ist übrigens super und ganz schön lang geworden. Kann man sich ganz schön viel an Infos rausziehen, Anfänger wie Fortgeschrittene.
            Aber sorry offtopic.

            Schöne Grüße Frank

            mickymM 1 Reply Last reply
            1
            • F frankyboy73

              @mickym Hi, da seine Formel beim addieren funktioniert, gehe ich davon aus, das Zahlen aus seinen Nodes kommen, Strings würden ja nur aneinander gehängt werden.
              Ich denke mal das nur die Bezeichnung, Benennung "String" ist und das gar nicht wirklich ein String ist. Wie gesagt nur ne Vermutung.
              Ja, ab und zu Poste ich auch mal was, wenn ich es für Sinnvoll halte. Ich lese hier aber immer noch täglich mit. Für Antworten bin ich meist nur nicht schnell genug und außerdem kennen sich einige Leute hier besser aus wie ich.
              Der Thread: https://forum.iobroker.net/topic/64204/shellys-alt-und-plus-über-mqtt-adapter?_=1681843139200
              ist übrigens super und ganz schön lang geworden. Kann man sich ganz schön viel an Infos rausziehen, Anfänger wie Fortgeschrittene.
              Aber sorry offtopic.

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              wrote on last edited by
              #6

              @frankyboy73 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

              @mickym Hi, da seine Formel beim addieren funktioniert, gehe ich davon aus, das Zahlen aus seinen Nodes kommen, Strings würden ja nur aneinander gehängt werden.
              Ich denke mal das nur die Bezeichnung, Benennung "String" ist und das gar nicht wirklich ein String ist. Wie gesagt nur ne Vermutung.
              Ja, ab und zu Poste ich auch mal was, wenn ich es für Sinnvoll halte. Ich lese hier aber immer noch täglich mit. Für Antworten bin ich meist nur nicht schnell genug und außerdem kennen sich einige Leute hier besser aus wie ich.
              Der Thread: https://forum.iobroker.net/topic/64204/shellys-alt-und-plus-über-mqtt-adapter?_=1681843139200
              ist übrigens super und ganz schön lang geworden. Kann man sich ganz schön viel an Infos rausziehen, Anfänger wie Fortgeschrittene.
              Aber sorry offtopic.

              Na wenn schon Zahlen rauskommen, hast Du ja alles erklärt. Punkt vor Strich usw. ;)

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Reply Last reply
              0
              • mickymM mickym

                @lucifor1976 Warum rechnest Du denn mit Strings überhaupt? Hast Du die Konvertierung eingeschaltet. Und nein Zahlen haben sowohl im iobroker, als auch in NodeRed einen Punkt als Dezimaltrenner und werden dir nur in den Objekten mit Komma dargestellt.

                Schau mal im Adapter ob Du diese blöde Konvertierung eingeschaltet hast.

                Lucifor1976L Offline
                Lucifor1976L Offline
                Lucifor1976
                wrote on last edited by
                #7

                @mickym sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

                @lucifor1976 Warum rechnest Du denn mit Strings überhaupt? Hast Du die Konvertierung eingeschaltet. Und nein Zahlen haben sowohl im iobroker, als auch in NodeRed einen Punkt als Dezimaltrenner und werden dir nur in den Objekten mit Komma dargestellt.

                Schau mal im Adapter ob Du diese blöde Konvertierung eingeschaltet hast.

                Hello, nein die Konvertierung war aus :) Die Daten liegen als Nummer vor. Der Datenpunkt wird ohne irgendwelche Trenner in der Datenbank gespeichert.

                ioBroker@Debian 12 VM auf Proxmox 8.4.1 | HP Proliant DL380G9 | DS923+ 10TB | RS4021+ 144TB | Unifi Netzwerk 6AP, 3 EtagenSwitche | Anycubic MegaS+Kossel+Chiron, Elektroniker und Funkamateur

                1 Reply Last reply
                0
                • F frankyboy73

                  @lucifor1976 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

                  msg.payload = String0 + String1 / 1000;

                  Es gilt bei Formeln Punkt vor Strichrechnung.
                  Bei deiner Formel würde der String1 erst durch 1000 geteilt und dann + String0 gerechnet.
                  10000 + 10000 / 1000 wären dann 10010
                  Versuchsmal mit ner Klammer (10000 + 10000) / 1000, das sind dann nämlich 20.
                  Also msg.payload = (String0 + String1) / 1000;

                  Das aber nur wenn du Zahlenwerte verwendest (Number), wenn die Inhalte deiner String Variablen wirklich Strings sind klappt das nicht.
                  Zur Not könntest du in der Funktion deine Strings als Number benutzen.
                  So zum Beispiel:
                  msg.payload = (Number(String0) + Number(String1)) / 1000;

                  Aber @mickym kennt da bestimmt noch ne bessere Lösung.

                  Lucifor1976L Offline
                  Lucifor1976L Offline
                  Lucifor1976
                  wrote on last edited by
                  #8

                  @frankyboy73 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

                  @lucifor1976 sagte in Node-Red errechneten Wert mit Dezimaltrenner versehen?:

                  msg.payload = String0 + String1 / 1000;

                  Es gilt bei Formeln Punkt vor Strichrechnung.
                  Bei deiner Formel würde der String1 erst durch 1000 geteilt und dann + String0 gerechnet.
                  10000 + 10000 / 1000 wären dann 10010
                  Versuchsmal mit ner Klammer (10000 + 10000) / 1000, das sind dann nämlich 20.
                  Also msg.payload = (String0 + String1) / 1000;

                  Das aber nur wenn du Zahlenwerte verwendest (Number), wenn die Inhalte deiner String Variablen wirklich Strings sind klappt das nicht.
                  Zur Not könntest du in der Funktion deine Strings als Number benutzen.
                  So zum Beispiel:
                  msg.payload = (Number(String0) + Number(String1)) / 1000;

                  Aber @mickym kennt da bestimmt noch ne bessere Lösung.

                  Hello, genau das hat funktioniert, ich danke euch :)

                  msg.payload = (String0 + String1) / 1000;

                  ioBroker@Debian 12 VM auf Proxmox 8.4.1 | HP Proliant DL380G9 | DS923+ 10TB | RS4021+ 144TB | Unifi Netzwerk 6AP, 3 EtagenSwitche | Anycubic MegaS+Kossel+Chiron, Elektroniker und Funkamateur

                  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

                  717

                  Online

                  32.7k

                  Users

                  82.6k

                  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