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. Werte aus JSON übernehmen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Werte aus JSON übernehmen

Geplant Angeheftet Gesperrt Verschoben Node-Red
14 Beiträge 4 Kommentatoren 876 Aufrufe 2 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.
  • L LibertyX82

    Hi,

    ich möchte mehrere Werte aus einen JSON String als msg.payload an ein Objekt übergeben.

    Die msg.payload muss dazu wie folgt aussehen "CURRENT=WERT1&VOLTAGE=WERT2"

    Einzelne Werte aus einem JSON String zu extrahieren ist nicht das Problem, aber wie setzte ich merhere Werte als Variable in einem String zusammen?

    mickymM Offline
    mickymM Offline
    mickym
    Most Active
    schrieb am zuletzt editiert von mickym
    #3

    @libertyx82 Na die WERT1 und WERT2 müssen unterschiedlicher Eigenschaften einer payload sein oder sie sind bereits Bestandteil eines Objektes. Ich würde vorschlagen Du machst das mal konkret - sprich woher kommen WERT1 und WERT2. Von function Nodes rate ich ab. Jedenfalls müssen beide Werte Bestandteil des eingehenden Nachrichtenobjektes sein oder Du holst es aus einem Kontext.

    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.

    L 1 Antwort Letzte Antwort
    0
    • mickymM mickym

      @libertyx82 Na die WERT1 und WERT2 müssen unterschiedlicher Eigenschaften einer payload sein oder sie sind bereits Bestandteil eines Objektes. Ich würde vorschlagen Du machst das mal konkret - sprich woher kommen WERT1 und WERT2. Von function Nodes rate ich ab. Jedenfalls müssen beide Werte Bestandteil des eingehenden Nachrichtenobjektes sein oder Du holst es aus einem Kontext.

      L Offline
      L Offline
      LibertyX82
      schrieb am zuletzt editiert von
      #4

      @mickym
      Die Werte kommen als JSON String aus einem Node

      e1525912-bf14-4cb9-bae5-a957c7d58b06-image.png

      {"timestamp":"2023-02-18T21:32:15.000+01:00","power":271.85,"lastMeterConsumption":417.8481905,"accumulatedConsumption":4.857743,"accumulatedProduction":0,"accumulatedConsumptionLastHour":0.207066,"accumulatedProductionLastHour":0,"accumulatedCost":1.195093,"currency":"EUR","minPower":133.88,"averagePower":225.5,"maxPower":2855.5,"powerProduction":0,"minPowerProduction":0,"maxPowerProduction":0,"lastMeterProduction":0.2099675,"signalStrength":null}
      

      Verschiedene Werte hieraus sollen als msg.payload dann in ein iobroker Objekt geschrieben werden, dazu muss die msg.payload in dem Format "CURRENT=WERT1&VOLTAGE=WERT2" sein.

      mickymM 1 Antwort Letzte Antwort
      0
      • L LibertyX82

        @mickym
        Die Werte kommen als JSON String aus einem Node

        e1525912-bf14-4cb9-bae5-a957c7d58b06-image.png

        {"timestamp":"2023-02-18T21:32:15.000+01:00","power":271.85,"lastMeterConsumption":417.8481905,"accumulatedConsumption":4.857743,"accumulatedProduction":0,"accumulatedConsumptionLastHour":0.207066,"accumulatedProductionLastHour":0,"accumulatedCost":1.195093,"currency":"EUR","minPower":133.88,"averagePower":225.5,"maxPower":2855.5,"powerProduction":0,"minPowerProduction":0,"maxPowerProduction":0,"lastMeterProduction":0.2099675,"signalStrength":null}
        

        Verschiedene Werte hieraus sollen als msg.payload dann in ein iobroker Objekt geschrieben werden, dazu muss die msg.payload in dem Format "CURRENT=WERT1&VOLTAGE=WERT2" sein.

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #5

        @libertyx82 Na dann ist es einfach:

        aber sag doch einfach, welchen Wert1 Du als Current und welchen Du als Voltage haben willst?

        Na ja seis drum - man kann halt nur so gut helfen, wie man konkrete Fragen bekommt:

        061fc6d8-a2fc-40b3-8d1e-fc87341691ca-image.png

        4d7145cd-f568-4409-ba28-de1e502b22bb-image.png

        Wenn man das in einen Datenpunkt im iobroker schreiben will, dann jagt man es einfach durch die JSON Node. ;)

        Wie gesagt - das was Du willst musst halt konkret formulieren.

        414f3e3b-15ec-422d-be06-e368a0934dba-image.png

        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.

        L 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @libertyx82 Na dann ist es einfach:

          aber sag doch einfach, welchen Wert1 Du als Current und welchen Du als Voltage haben willst?

          Na ja seis drum - man kann halt nur so gut helfen, wie man konkrete Fragen bekommt:

          061fc6d8-a2fc-40b3-8d1e-fc87341691ca-image.png

          4d7145cd-f568-4409-ba28-de1e502b22bb-image.png

          Wenn man das in einen Datenpunkt im iobroker schreiben will, dann jagt man es einfach durch die JSON Node. ;)

          Wie gesagt - das was Du willst musst halt konkret formulieren.

          414f3e3b-15ec-422d-be06-e368a0934dba-image.png

          L Offline
          L Offline
          LibertyX82
          schrieb am zuletzt editiert von LibertyX82
          #6

          @mickym
          Tatsächlich geht es um fast alle Werte aus dem JSON string.
          Aber das hat mir schon geholfen, muss es ja nur entwprechend anpassen :)

          Allerdings ist mir gerade aufgefallen, dass der Wert lastMeterConsumption die falsche Einheit hat und ich diesen durch 1000 teilen müsste.

          Gibt es auch eine Möglichkeit, dass nicht jede Nachricht aus dem Node bearbeitet wird sondern nur z.B. jede 5.?

          Great SUNG mickymM 2 Antworten Letzte Antwort
          0
          • L LibertyX82

            @mickym
            Tatsächlich geht es um fast alle Werte aus dem JSON string.
            Aber das hat mir schon geholfen, muss es ja nur entwprechend anpassen :)

            Allerdings ist mir gerade aufgefallen, dass der Wert lastMeterConsumption die falsche Einheit hat und ich diesen durch 1000 teilen müsste.

            Gibt es auch eine Möglichkeit, dass nicht jede Nachricht aus dem Node bearbeitet wird sondern nur z.B. jede 5.?

            Great SUNG Offline
            Great SUNG Offline
            Great SUN
            schrieb am zuletzt editiert von
            #7

            @libertyx82 Ist das Thema jetzt gelöst, oder brauchst Du bei der Umsetzung noch Hilfe?

            1 Antwort Letzte Antwort
            0
            • L LibertyX82

              @mickym
              Tatsächlich geht es um fast alle Werte aus dem JSON string.
              Aber das hat mir schon geholfen, muss es ja nur entwprechend anpassen :)

              Allerdings ist mir gerade aufgefallen, dass der Wert lastMeterConsumption die falsche Einheit hat und ich diesen durch 1000 teilen müsste.

              Gibt es auch eine Möglichkeit, dass nicht jede Nachricht aus dem Node bearbeitet wird sondern nur z.B. jede 5.?

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #8

              @libertyx82 Wie gesagt, wenn Du das als Objekte in iobroker schreiben willst - dann erzeugst Du String nicht selbst, sondern nutzt das Objekt. Macht einfach keinen Sinn sonst.

              Wenn das nicht genau 5 Nachrichten sein müssen, dann empfehle ich Dir die Delay Node. um die Nachrichtenrate zu begrenzen und die Zwischennachrichten zu löschen.

              Wenn Du unbedingt zählen willst - dann musst halt eine kleine function Node schreiben.

              [
                 {
                     "id": "042e386430770412",
                     "type": "function",
                     "z": "289f539dcc33814e",
                     "name": "nur alle 5 Nachrichten senden",
                     "func": "var counter = context.get(\"counter\") || 0;\ncounter++;\n\nif (counter==5) counter = 0;\ncontext.set(\"counter\", counter);\nif (!counter) return msg;",
                     "outputs": 1,
                     "noerr": 0,
                     "initialize": "",
                     "finalize": "",
                     "libs": [],
                     "x": 2710,
                     "y": 4600,
                     "wires": [
                         []
                     ]
                 }
              ]
              

              var counter = context.get("counter") || 0;
              counter++;
              
              if (counter==5) counter = 0;
              context.set("counter", counter);
              if (!counter) return msg;
              

              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.

              L 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @libertyx82 Wie gesagt, wenn Du das als Objekte in iobroker schreiben willst - dann erzeugst Du String nicht selbst, sondern nutzt das Objekt. Macht einfach keinen Sinn sonst.

                Wenn das nicht genau 5 Nachrichten sein müssen, dann empfehle ich Dir die Delay Node. um die Nachrichtenrate zu begrenzen und die Zwischennachrichten zu löschen.

                Wenn Du unbedingt zählen willst - dann musst halt eine kleine function Node schreiben.

                [
                   {
                       "id": "042e386430770412",
                       "type": "function",
                       "z": "289f539dcc33814e",
                       "name": "nur alle 5 Nachrichten senden",
                       "func": "var counter = context.get(\"counter\") || 0;\ncounter++;\n\nif (counter==5) counter = 0;\ncontext.set(\"counter\", counter);\nif (!counter) return msg;",
                       "outputs": 1,
                       "noerr": 0,
                       "initialize": "",
                       "finalize": "",
                       "libs": [],
                       "x": 2710,
                       "y": 4600,
                       "wires": [
                           []
                       ]
                   }
                ]
                

                var counter = context.get("counter") || 0;
                counter++;
                
                if (counter==5) counter = 0;
                context.set("counter", counter);
                if (!counter) return msg;
                
                L Offline
                L Offline
                LibertyX82
                schrieb am zuletzt editiert von
                #9

                @mickym

                Muss nicht exakt jede 5. sein, Delay Node mit 1msg/5s passt perfekt Danke!

                Ich schreibe den Wert der msg.payload als Wert in ein iobroker objekt
                fc009c84-8614-4916-a52d-4bc433b35c6b-image.png

                Daher müsste ich den Wert von lastMeterConsumption davor umrechnen

                Great SUNG mickymM 2 Antworten Letzte Antwort
                0
                • L LibertyX82

                  @mickym

                  Muss nicht exakt jede 5. sein, Delay Node mit 1msg/5s passt perfekt Danke!

                  Ich schreibe den Wert der msg.payload als Wert in ein iobroker objekt
                  fc009c84-8614-4916-a52d-4bc433b35c6b-image.png

                  Daher müsste ich den Wert von lastMeterConsumption davor umrechnen

                  Great SUNG Offline
                  Great SUNG Offline
                  Great SUN
                  schrieb am zuletzt editiert von Great SUN
                  #10

                  @libertyx82 Warum machst Du da kein Device draus oder ein Verzeichnis und speicherst die Werte einzeln?

                  -> SET_STATES
                      -> POWER
                           241,02
                      -> CURRENT
                           2,01
                  
                  mickymM 1 Antwort Letzte Antwort
                  0
                  • L LibertyX82

                    @mickym

                    Muss nicht exakt jede 5. sein, Delay Node mit 1msg/5s passt perfekt Danke!

                    Ich schreibe den Wert der msg.payload als Wert in ein iobroker objekt
                    fc009c84-8614-4916-a52d-4bc433b35c6b-image.png

                    Daher müsste ich den Wert von lastMeterConsumption davor umrechnen

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von mickym
                    #11

                    @libertyx82 dann rechnest halt um
                    8d21f7c0-60aa-49f4-995a-64e2590594dc-image.png

                    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.

                    L 1 Antwort Letzte Antwort
                    0
                    • Great SUNG Great SUN

                      @libertyx82 Warum machst Du da kein Device draus oder ein Verzeichnis und speicherst die Werte einzeln?

                      -> SET_STATES
                          -> POWER
                               241,02
                          -> CURRENT
                               2,01
                      
                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #12

                      @great-sun Na dann kann er gleich meinen Subflow nehmen, der schreibt alle Werte eines JSON in einzelne Datenpunkte:

                      https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                      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.

                      Great SUNG 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @great-sun Na dann kann er gleich meinen Subflow nehmen, der schreibt alle Werte eines JSON in einzelne Datenpunkte:

                        https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                        Great SUNG Offline
                        Great SUNG Offline
                        Great SUN
                        schrieb am zuletzt editiert von
                        #13

                        @mickym Siehste, noch einfacher :-)

                        1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @libertyx82 dann rechnest halt um
                          8d21f7c0-60aa-49f4-995a-64e2590594dc-image.png

                          L Offline
                          L Offline
                          LibertyX82
                          schrieb am zuletzt editiert von LibertyX82
                          #14

                          @mickym
                          Da hätte ich drauf kommen können

                          Da ich die Werte in iobroker nicht weiter bearbeite sondern lediglich in ein virtuelles Geräte meines SmartHome schreibe, reicht mir das.

                          Nochmals Danke!

                          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

                          700

                          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