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

                          761
                          Online

                          31.7k
                          Users

                          79.8k
                          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