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
    925

  • 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?

    Ro75R Online
    Ro75R Online
    Ro75
    schrieb am zuletzt editiert von
    #2

    @libertyx82 'CURRENT='+WERT1+'&VOLTAGE='+WERT2

    SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

    1 Antwort Letzte Antwort
    0
    • 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 Online
      mickymM Online
      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 Online
          mickymM Online
          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 Online
                mickymM Online
                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 Online
                      mickymM Online
                      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 Online
                        mickymM Online
                        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

                            776

                            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