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