Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Werte aus JSON übernehmen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Werte aus JSON übernehmen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ro75
      Ro75 @LibertyX82 last edited by

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

      1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @LibertyX82 last edited by 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 1 Reply Last reply Reply Quote 0
        • L
          LibertyX82 @mickym last edited by

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

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @LibertyX82 last edited by 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 1 Reply Last reply Reply Quote 0
            • L
              LibertyX82 @mickym last edited by 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 SUN mickym 2 Replies Last reply Reply Quote 0
              • Great SUN
                Great SUN @LibertyX82 last edited by

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

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @LibertyX82 last edited by 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 1 Reply Last reply Reply Quote 0
                  • L
                    LibertyX82 @mickym last edited by

                    @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 SUN mickym 2 Replies Last reply Reply Quote 0
                    • Great SUN
                      Great SUN @LibertyX82 last edited by 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
                      
                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @LibertyX82 last edited by mickym

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

                        L 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Great SUN last edited by

                          @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 SUN 1 Reply Last reply Reply Quote 0
                          • Great SUN
                            Great SUN @mickym last edited by

                            @mickym Siehste, noch einfacher 🙂

                            1 Reply Last reply Reply Quote 0
                            • L
                              LibertyX82 @mickym last edited by LibertyX82

                              @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 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              1.1k
                              Online

                              31.7k
                              Users

                              79.7k
                              Topics

                              1.3m
                              Posts

                              4
                              14
                              453
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo