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

    @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

                      735

                      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