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
    16
    1
    1.9k

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

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

                        729

                        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