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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Node-Red errechneten Wert mit Dezimaltrenner versehen?

Geplant Angeheftet Gesperrt Verschoben Node-Red
8 Beiträge 3 Kommentatoren 909 Aufrufe 4 Watching
  • Ä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.
  • Lucifor1976L Offline
    Lucifor1976L Offline
    Lucifor1976
    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antworten Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 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

                  725

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  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