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. [gelöst] JSON aus verschiedenen DP (Payloads) erstellen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

[gelöst] JSON aus verschiedenen DP (Payloads) erstellen

Geplant Angeheftet Gesperrt Verschoben Node-Red
13 Beiträge 3 Kommentatoren 923 Aufrufe 3 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.
  • DJMarc75D DJMarc75

    @frankyboy73 sagte in JSON aus verschiedenen DP (Payloads) erstellen:

    welche Werte in welcher Form sollen denn da rauskommen?

    So hatte ich es vor und so ist es mir nun auch gelungen, allerdings in Blockly:

    [
      {
        "name": "ARAL",
        "preis": "1.909 €",
        "adresse": "xxx Straße 5 in 742xx xxx",
        "dist": "1.1 km",
        "open": "/icons-open-icon-library-png/others/circle_green.png"
      },
    

    Die JSON welche ich oben per NodeRed erzeuge hab ich dann per Blockly und per Schleife "zerlegt" und neu nach meinen Wünschen angelegt.
    Dachte sowas gibbed auch in NodeRed.

    Trotzdem vielen Dank für Deine Antwort.

    F Offline
    F Offline
    frankyboy73
    schrieb am zuletzt editiert von
    #4

    @djmarc75 Hi, schön wenn du es selber hinbekommen hast.
    Mit Node Red sollte das aber auch gehen. Im Prinzip braucht du eigentlich nur per Change die nicht gewünschten msg`s löschen. Müsste ich mal testen.

    Schöne Grüße Frank

    DJMarc75D 1 Antwort Letzte Antwort
    1
    • F frankyboy73

      @djmarc75 Hi, schön wenn du es selber hinbekommen hast.
      Mit Node Red sollte das aber auch gehen. Im Prinzip braucht du eigentlich nur per Change die nicht gewünschten msg`s löschen. Müsste ich mal testen.

      DJMarc75D Offline
      DJMarc75D Offline
      DJMarc75
      schrieb am zuletzt editiert von
      #5

      @frankyboy73 Vll war mein Beitragstitle etwas verwirrend.
      Aber mit diesen Nodes, Flows, Arrays, usw kenn ich mich nicht so aus.... ich bin Koch :grin:

      Lehrling seit 1975 !!!
      Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
      https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

      1 Antwort Letzte Antwort
      0
      • DJMarc75D DJMarc75

        @frankyboy73 sagte in JSON aus verschiedenen DP (Payloads) erstellen:

        welche Werte in welcher Form sollen denn da rauskommen?

        So hatte ich es vor und so ist es mir nun auch gelungen, allerdings in Blockly:

        [
          {
            "name": "ARAL",
            "preis": "1.909 €",
            "adresse": "xxx Straße 5 in 742xx xxx",
            "dist": "1.1 km",
            "open": "/icons-open-icon-library-png/others/circle_green.png"
          },
        

        Die JSON welche ich oben per NodeRed erzeuge hab ich dann per Blockly und per Schleife "zerlegt" und neu nach meinen Wünschen angelegt.
        Dachte sowas gibbed auch in NodeRed.

        Trotzdem vielen Dank für Deine Antwort.

        mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #6

        @djmarc75 sagte in [gelöst] JSON aus verschiedenen DP (Payloads) erstellen:

        Die JSON welche ich oben per NodeRed erzeuge hab ich dann per Blockly und per Schleife "zerlegt" und neu nach meinen Wünschen angelegt.
        Dachte sowas gibbed auch in NodeRed.

        1. Kann man das aufteilen mit split Nodes

        Selbstverständlich geht das, sogar noch viel eleganter. ;)

        1. Kann man aber sogar ohne Schleife sich nur die benötigten Eigenschaften rausholen und in ein neues Objekt schreiben. Das ist noch viel eleganter.

        Sowas wie Schleifen ist viel zuviel Programmierung! Das Tool ist viel intelligenter. ;)

        Wenn das das Ziel ist:

          {
            "name": "ARAL",
            "preis": "1.909 €",
            "adresse": "xxx Straße 5 in 742xx xxx",
            "dist": "1.1 km",
            "open": "/icons-open-icon-library-png/others/circle_green.png"
          }
        

        dann poste nochmal die Quelle. das Array öffnest Du mit einer split und schliesst es mit einer JOIN Node. Wie gesagt poste mal das gesamte Array der Ausgabe der Tankerkönig Node in CodeTags hier.

        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.

        DJMarc75D 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @djmarc75 sagte in [gelöst] JSON aus verschiedenen DP (Payloads) erstellen:

          Die JSON welche ich oben per NodeRed erzeuge hab ich dann per Blockly und per Schleife "zerlegt" und neu nach meinen Wünschen angelegt.
          Dachte sowas gibbed auch in NodeRed.

          1. Kann man das aufteilen mit split Nodes

          Selbstverständlich geht das, sogar noch viel eleganter. ;)

          1. Kann man aber sogar ohne Schleife sich nur die benötigten Eigenschaften rausholen und in ein neues Objekt schreiben. Das ist noch viel eleganter.

          Sowas wie Schleifen ist viel zuviel Programmierung! Das Tool ist viel intelligenter. ;)

          Wenn das das Ziel ist:

            {
              "name": "ARAL",
              "preis": "1.909 €",
              "adresse": "xxx Straße 5 in 742xx xxx",
              "dist": "1.1 km",
              "open": "/icons-open-icon-library-png/others/circle_green.png"
            }
          

          dann poste nochmal die Quelle. das Array öffnest Du mit einer split und schliesst es mit einer JOIN Node. Wie gesagt poste mal das gesamte Array der Ausgabe der Tankerkönig Node in CodeTags hier.

          DJMarc75D Offline
          DJMarc75D Offline
          DJMarc75
          schrieb am zuletzt editiert von
          #7

          @mickym GuMo, hier erstmal die Ausgabe vom Tankerkönig Node:

          msg.payload : Object
          object
          ok: true
          license: "CC BY 4.0 -  https://creativecommons.tankerkoenig.de"
          data: "MTS-K"
          status: "ok"
          stations: array[10]
          0: object
          id: "60ae1709-c676-4843-a5e4-7b5849dec185"
          name: "Aral Tankstelle"
          brand: "ARAL"
          street: "Züttlinger Straße"
          place: "Möckmühl"
          lat: 49.32193
          lng: 9.363825
          dist: 1.1
          isOpen: true
          houseNumber: "5"
          postCode: 74219
          prices: object
          e5: 2.119
          1: object
          2: object
          3: object
          4: object
          5: object
          6: object
          7: object
          8: object
          9: object
          

          hab jetzt mal auf das ausXen verzichtet.
          Jeder Objektstrang ist identisch aufgebaut, allerdings gilt zu beachten, dass sich die Anzahl und die Inhalte bei z.B. verlassen des Hauses verändert da dieses TankerkönigNode den Radius aus GPS Daten errechnet und ich diese Node mit meinen GPS Daten vom Smartphone füttere.

          Lehrling seit 1975 !!!
          Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
          https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

          mickymM 1 Antwort Letzte Antwort
          0
          • DJMarc75D DJMarc75

            @mickym GuMo, hier erstmal die Ausgabe vom Tankerkönig Node:

            msg.payload : Object
            object
            ok: true
            license: "CC BY 4.0 -  https://creativecommons.tankerkoenig.de"
            data: "MTS-K"
            status: "ok"
            stations: array[10]
            0: object
            id: "60ae1709-c676-4843-a5e4-7b5849dec185"
            name: "Aral Tankstelle"
            brand: "ARAL"
            street: "Züttlinger Straße"
            place: "Möckmühl"
            lat: 49.32193
            lng: 9.363825
            dist: 1.1
            isOpen: true
            houseNumber: "5"
            postCode: 74219
            prices: object
            e5: 2.119
            1: object
            2: object
            3: object
            4: object
            5: object
            6: object
            7: object
            8: object
            9: object
            

            hab jetzt mal auf das ausXen verzichtet.
            Jeder Objektstrang ist identisch aufgebaut, allerdings gilt zu beachten, dass sich die Anzahl und die Inhalte bei z.B. verlassen des Hauses verändert da dieses TankerkönigNode den Radius aus GPS Daten errechnet und ich diese Node mit meinen GPS Daten vom Smartphone füttere.

            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #8

            @djmarc75 Na so hilft mir das nichts - Du musstest hier mal die ganze payload rein kopieren. Das macht man so (copy value oder Wert kopieren):

            copy path.gif , aber ich versuchs mal ohne den kompletten Input zu erklären.

            In NodeRed brauchst Du keine Schleifen programmieren, sondern brichst das Array mit einer Split Node auf. Auf die einzelenen Objekteigenschaften greifst Du direkt zu. Wie gesagt so nutzt mir das nur wenig, aber ich versuch mal so rudimentär ein Beispiel zu konstruieren.

            Ich simuliere das einfach mal mit dem Objekt bissi modifiziert und kopiert, so dass das Array hier 2 Tankstellen hat.

            75f46bf6-ea0b-4dba-a127-fbabac1414e9-image.png

            Das erste was Du machst ist natürlich, dass Du dieses Array Stations extrahierst.

            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.

            DJMarc75D 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @djmarc75 Na so hilft mir das nichts - Du musstest hier mal die ganze payload rein kopieren. Das macht man so (copy value oder Wert kopieren):

              copy path.gif , aber ich versuchs mal ohne den kompletten Input zu erklären.

              In NodeRed brauchst Du keine Schleifen programmieren, sondern brichst das Array mit einer Split Node auf. Auf die einzelenen Objekteigenschaften greifst Du direkt zu. Wie gesagt so nutzt mir das nur wenig, aber ich versuch mal so rudimentär ein Beispiel zu konstruieren.

              Ich simuliere das einfach mal mit dem Objekt bissi modifiziert und kopiert, so dass das Array hier 2 Tankstellen hat.

              75f46bf6-ea0b-4dba-a127-fbabac1414e9-image.png

              Das erste was Du machst ist natürlich, dass Du dieses Array Stations extrahierst.

              DJMarc75D Offline
              DJMarc75D Offline
              DJMarc75
              schrieb am zuletzt editiert von
              #9

              @mickym Okay, hoffe ich hab Dich da jetzt richtig verstanden:

              payload.stations[0].id
              60ae1709-c676-4843-a5e4-7b5849dec185
              payload.stations[0].name
              Aral Tankstelle
              payload.stations[0].brand
              ARAL
              payload.stations[0].street
              Züttlinger Straße
              payload.stations[0].place
              Möckmühl
              payload.stations[0].lat
              49.32193
              payload.stations[0].lng
              9.363825
              payload.stations[0].dist
              1.1
              payload.stations[0].isOpen
              true
              payload.stations[0].houseNumber
              5
              payload.stations[0].postCode
              74219
              payload.stations[0].prices.e5
              2.119
              

              Hab nun eine Splitnode nach der TankerkönigNode angesetzt mit folgendem Debug:

              Screenshot 2022-11-05 085820.png

              Lehrling seit 1975 !!!
              Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
              https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

              mickymM 2 Antworten Letzte Antwort
              0
              • DJMarc75D DJMarc75

                @mickym Okay, hoffe ich hab Dich da jetzt richtig verstanden:

                payload.stations[0].id
                60ae1709-c676-4843-a5e4-7b5849dec185
                payload.stations[0].name
                Aral Tankstelle
                payload.stations[0].brand
                ARAL
                payload.stations[0].street
                Züttlinger Straße
                payload.stations[0].place
                Möckmühl
                payload.stations[0].lat
                49.32193
                payload.stations[0].lng
                9.363825
                payload.stations[0].dist
                1.1
                payload.stations[0].isOpen
                true
                payload.stations[0].houseNumber
                5
                payload.stations[0].postCode
                74219
                payload.stations[0].prices.e5
                2.119
                

                Hab nun eine Splitnode nach der TankerkönigNode angesetzt mit folgendem Debug:

                Screenshot 2022-11-05 085820.png

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #10

                @djmarc75 Nee - aber macht nichts - habs gleich fertig. ;) - Ich zeigs Dir gleich.

                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.

                1 Antwort Letzte Antwort
                1
                • DJMarc75D DJMarc75

                  @mickym Okay, hoffe ich hab Dich da jetzt richtig verstanden:

                  payload.stations[0].id
                  60ae1709-c676-4843-a5e4-7b5849dec185
                  payload.stations[0].name
                  Aral Tankstelle
                  payload.stations[0].brand
                  ARAL
                  payload.stations[0].street
                  Züttlinger Straße
                  payload.stations[0].place
                  Möckmühl
                  payload.stations[0].lat
                  49.32193
                  payload.stations[0].lng
                  9.363825
                  payload.stations[0].dist
                  1.1
                  payload.stations[0].isOpen
                  true
                  payload.stations[0].houseNumber
                  5
                  payload.stations[0].postCode
                  74219
                  payload.stations[0].prices.e5
                  2.119
                  

                  Hab nun eine Splitnode nach der TankerkönigNode angesetzt mit folgendem Debug:

                  Screenshot 2022-11-05 085820.png

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #11

                  @djmarc75 So wenn Du aus dem Debug Fenster einfach den Wert in die Zwischenablage kopierst:

                  886c0ea9-9418-4014-a4a7-e8106ef6e6b9-image.png

                  dann kannst Du hier das ganze JSON hier in CodeTags kopieren - ist einfacher und vollständig für die Zukunft. Hab die Daten bissi abgeändert:

                  {"ok":true,"license":"CC BY 4.0 -  https://creativecommons.tankerkoenig.de","data":"MTS-K","status":"ok","stations":[{"name":"Aral Tankstelle","brand":"ARAL","street":"Aral Straße","place":"Mühl","dist":1.1,"isOpen":true,"houseNumber":"5","postCode":74000,"prices":{"e5":2.119}},{"name":"Aral Tankstelle","brand":"SHELL","street":"Shell Straße","place":"Ort","dist":1.1,"isOpen":false,"houseNumber":"5","postCode":74999,"prices":{"e5":2.219}}]}
                  

                  So hätte es dann ausgesehen.

                  Zur Veranschaulichung habe ich die Objekte hoffentlich nach Deinen Wünschen konvertiert:

                  74064b14-b0f7-4be3-94c2-f2f88fad99c4-image.png

                  f91dc118-83ad-41c8-b0b0-c496bd5bab94-image.png

                  1. Im ersten Schritt - setzt Du die payload auf das stations Array
                  2. Dann brichst Du das Array einfach auf in einzelne Nachrichten, was Du im Blockly mühsam mit Schleifen machst, wo Du Zähler etc. brauchst. ;)
                  3. Dort setzt Du dein Objekt mit JSONATA einfach mit den Objektpfaden neu zusammen
                  4. Die einzelnen Nachrichten werden nun wieder zum ursprünglichen Array, aber mit modifizierten Objekten zusammengefasst.

                  Hier der Code:

                  [
                     {
                         "id": "4e449ff99f6d5a47",
                         "type": "inject",
                         "z": "289f539dcc33814e",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "{\"ok\":true,\"license\":\"CC BY 4.0 -  https://creativecommons.tankerkoenig.de\",\"data\":\"MTS-K\",\"status\":\"ok\",\"stations\":[{\"name\":\"Aral Tankstelle\",\"brand\":\"ARAL\",\"street\":\"Aral Straße\",\"place\":\"Mühl\",\"dist\":1.1,\"isOpen\":true,\"houseNumber\":\"5\",\"postCode\":74000,\"prices\":{\"e5\":2.119}},{\"name\":\"Aral Tankstelle\",\"brand\":\"SHELL\",\"street\":\"Shell Straße\",\"place\":\"Ort\",\"dist\":1.1,\"isOpen\":false,\"houseNumber\":\"5\",\"postCode\":74999,\"prices\":{\"e5\":2.219}}]}",
                         "payloadType": "json",
                         "x": 350,
                         "y": 4560,
                         "wires": [
                             [
                                 "7eaebeb1f37724d3",
                                 "d175c7ce933851f2"
                             ]
                         ]
                     },
                     {
                         "id": "7eaebeb1f37724d3",
                         "type": "change",
                         "z": "289f539dcc33814e",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.stations",
                                 "tot": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 570,
                         "y": 4560,
                         "wires": [
                             [
                                 "f7adebed01e88ce5",
                                 "8fdd4ea373e2b3de"
                             ]
                         ]
                     },
                     {
                         "id": "d175c7ce933851f2",
                         "type": "debug",
                         "z": "289f539dcc33814e",
                         "name": "debug 43",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 540,
                         "y": 4500,
                         "wires": []
                     },
                     {
                         "id": "f7adebed01e88ce5",
                         "type": "debug",
                         "z": "289f539dcc33814e",
                         "name": "debug 44",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 780,
                         "y": 4500,
                         "wires": []
                     },
                     {
                         "id": "8fdd4ea373e2b3de",
                         "type": "split",
                         "z": "289f539dcc33814e",
                         "name": "",
                         "splt": "\\n",
                         "spltType": "str",
                         "arraySplt": 1,
                         "arraySpltType": "len",
                         "stream": false,
                         "addname": "",
                         "x": 770,
                         "y": 4560,
                         "wires": [
                             [
                                 "d8a0e62da9474c8d",
                                 "3011705ebe3d9f57"
                             ]
                         ]
                     },
                     {
                         "id": "d8a0e62da9474c8d",
                         "type": "debug",
                         "z": "289f539dcc33814e",
                         "name": "debug 45",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 980,
                         "y": 4500,
                         "wires": []
                     },
                     {
                         "id": "3011705ebe3d9f57",
                         "type": "change",
                         "z": "289f539dcc33814e",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "  {\t    \"name\": payload.brand,\t    \"preis\": payload.prices.e5,\t    \"adresse\": payload.street & \" \" & payload.houseNumber & \" in \" & payload.postCode & \" \" & payload.place,\t    \"dist\": payload.dist & \" km\",\t    \"open\": payload.isOpen ? \"/icons-open-icon-library-png/others/circle_green.png\" : \"/icons-open-icon-library-png/others/circle_red.png\"\t  }\t",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 970,
                         "y": 4560,
                         "wires": [
                             [
                                 "c83e9a4e75e39a8e",
                                 "91adfca9f68e6c88"
                             ]
                         ]
                     },
                     {
                         "id": "c83e9a4e75e39a8e",
                         "type": "debug",
                         "z": "289f539dcc33814e",
                         "name": "debug 46",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1180,
                         "y": 4500,
                         "wires": []
                     },
                     {
                         "id": "91adfca9f68e6c88",
                         "type": "join",
                         "z": "289f539dcc33814e",
                         "name": "",
                         "mode": "auto",
                         "build": "object",
                         "property": "payload",
                         "propertyType": "msg",
                         "key": "topic",
                         "joiner": "\\n",
                         "joinerType": "str",
                         "accumulate": "false",
                         "timeout": "",
                         "count": "",
                         "reduceRight": false,
                         "x": 1170,
                         "y": 4560,
                         "wires": [
                             [
                                 "c42aa4e722e333a5"
                             ]
                         ]
                     },
                     {
                         "id": "c42aa4e722e333a5",
                         "type": "debug",
                         "z": "289f539dcc33814e",
                         "name": "debug 47",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1380,
                         "y": 4500,
                         "wires": []
                     }
                  ]
                  

                  Das sollte eigentlich einfacher sein. Das JSON Objekt enthält auch eine einfache Abfrage für deine beiden verschiedenen Icons.

                    {
                      "name": payload.brand,
                      "preis": payload.prices.e5,
                      "adresse": payload.street & " " & payload.houseNumber & " in " & payload.postCode & " " & payload.place,
                      "dist": payload.dist & " km",
                      "open": payload.isOpen ? "/icons-open-icon-library-png/others/circle_green.png" : "/icons-open-icon-library-png/others/circle_red.png"
                    }
                  

                  Zum Schluss kannst ja das Objekt bzw. Array wieder mit einer JSON Node konvertieren und in Deinen Datenpunkt schreiben.
                  So einfach kann Node Red sein. ;)

                  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.

                  DJMarc75D 1 Antwort Letzte Antwort
                  1
                  • mickymM mickym

                    @djmarc75 So wenn Du aus dem Debug Fenster einfach den Wert in die Zwischenablage kopierst:

                    886c0ea9-9418-4014-a4a7-e8106ef6e6b9-image.png

                    dann kannst Du hier das ganze JSON hier in CodeTags kopieren - ist einfacher und vollständig für die Zukunft. Hab die Daten bissi abgeändert:

                    {"ok":true,"license":"CC BY 4.0 -  https://creativecommons.tankerkoenig.de","data":"MTS-K","status":"ok","stations":[{"name":"Aral Tankstelle","brand":"ARAL","street":"Aral Straße","place":"Mühl","dist":1.1,"isOpen":true,"houseNumber":"5","postCode":74000,"prices":{"e5":2.119}},{"name":"Aral Tankstelle","brand":"SHELL","street":"Shell Straße","place":"Ort","dist":1.1,"isOpen":false,"houseNumber":"5","postCode":74999,"prices":{"e5":2.219}}]}
                    

                    So hätte es dann ausgesehen.

                    Zur Veranschaulichung habe ich die Objekte hoffentlich nach Deinen Wünschen konvertiert:

                    74064b14-b0f7-4be3-94c2-f2f88fad99c4-image.png

                    f91dc118-83ad-41c8-b0b0-c496bd5bab94-image.png

                    1. Im ersten Schritt - setzt Du die payload auf das stations Array
                    2. Dann brichst Du das Array einfach auf in einzelne Nachrichten, was Du im Blockly mühsam mit Schleifen machst, wo Du Zähler etc. brauchst. ;)
                    3. Dort setzt Du dein Objekt mit JSONATA einfach mit den Objektpfaden neu zusammen
                    4. Die einzelnen Nachrichten werden nun wieder zum ursprünglichen Array, aber mit modifizierten Objekten zusammengefasst.

                    Hier der Code:

                    [
                       {
                           "id": "4e449ff99f6d5a47",
                           "type": "inject",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "",
                           "payload": "{\"ok\":true,\"license\":\"CC BY 4.0 -  https://creativecommons.tankerkoenig.de\",\"data\":\"MTS-K\",\"status\":\"ok\",\"stations\":[{\"name\":\"Aral Tankstelle\",\"brand\":\"ARAL\",\"street\":\"Aral Straße\",\"place\":\"Mühl\",\"dist\":1.1,\"isOpen\":true,\"houseNumber\":\"5\",\"postCode\":74000,\"prices\":{\"e5\":2.119}},{\"name\":\"Aral Tankstelle\",\"brand\":\"SHELL\",\"street\":\"Shell Straße\",\"place\":\"Ort\",\"dist\":1.1,\"isOpen\":false,\"houseNumber\":\"5\",\"postCode\":74999,\"prices\":{\"e5\":2.219}}]}",
                           "payloadType": "json",
                           "x": 350,
                           "y": 4560,
                           "wires": [
                               [
                                   "7eaebeb1f37724d3",
                                   "d175c7ce933851f2"
                               ]
                           ]
                       },
                       {
                           "id": "7eaebeb1f37724d3",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload.stations",
                                   "tot": "msg"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 570,
                           "y": 4560,
                           "wires": [
                               [
                                   "f7adebed01e88ce5",
                                   "8fdd4ea373e2b3de"
                               ]
                           ]
                       },
                       {
                           "id": "d175c7ce933851f2",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "debug 43",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 540,
                           "y": 4500,
                           "wires": []
                       },
                       {
                           "id": "f7adebed01e88ce5",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "debug 44",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 780,
                           "y": 4500,
                           "wires": []
                       },
                       {
                           "id": "8fdd4ea373e2b3de",
                           "type": "split",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "splt": "\\n",
                           "spltType": "str",
                           "arraySplt": 1,
                           "arraySpltType": "len",
                           "stream": false,
                           "addname": "",
                           "x": 770,
                           "y": 4560,
                           "wires": [
                               [
                                   "d8a0e62da9474c8d",
                                   "3011705ebe3d9f57"
                               ]
                           ]
                       },
                       {
                           "id": "d8a0e62da9474c8d",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "debug 45",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 980,
                           "y": 4500,
                           "wires": []
                       },
                       {
                           "id": "3011705ebe3d9f57",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "  {\t    \"name\": payload.brand,\t    \"preis\": payload.prices.e5,\t    \"adresse\": payload.street & \" \" & payload.houseNumber & \" in \" & payload.postCode & \" \" & payload.place,\t    \"dist\": payload.dist & \" km\",\t    \"open\": payload.isOpen ? \"/icons-open-icon-library-png/others/circle_green.png\" : \"/icons-open-icon-library-png/others/circle_red.png\"\t  }\t",
                                   "tot": "jsonata"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 970,
                           "y": 4560,
                           "wires": [
                               [
                                   "c83e9a4e75e39a8e",
                                   "91adfca9f68e6c88"
                               ]
                           ]
                       },
                       {
                           "id": "c83e9a4e75e39a8e",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "debug 46",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1180,
                           "y": 4500,
                           "wires": []
                       },
                       {
                           "id": "91adfca9f68e6c88",
                           "type": "join",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "mode": "auto",
                           "build": "object",
                           "property": "payload",
                           "propertyType": "msg",
                           "key": "topic",
                           "joiner": "\\n",
                           "joinerType": "str",
                           "accumulate": "false",
                           "timeout": "",
                           "count": "",
                           "reduceRight": false,
                           "x": 1170,
                           "y": 4560,
                           "wires": [
                               [
                                   "c42aa4e722e333a5"
                               ]
                           ]
                       },
                       {
                           "id": "c42aa4e722e333a5",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "debug 47",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1380,
                           "y": 4500,
                           "wires": []
                       }
                    ]
                    

                    Das sollte eigentlich einfacher sein. Das JSON Objekt enthält auch eine einfache Abfrage für deine beiden verschiedenen Icons.

                      {
                        "name": payload.brand,
                        "preis": payload.prices.e5,
                        "adresse": payload.street & " " & payload.houseNumber & " in " & payload.postCode & " " & payload.place,
                        "dist": payload.dist & " km",
                        "open": payload.isOpen ? "/icons-open-icon-library-png/others/circle_green.png" : "/icons-open-icon-library-png/others/circle_red.png"
                      }
                    

                    Zum Schluss kannst ja das Objekt bzw. Array wieder mit einer JSON Node konvertieren und in Deinen Datenpunkt schreiben.
                    So einfach kann Node Red sein. ;)

                    DJMarc75D Offline
                    DJMarc75D Offline
                    DJMarc75
                    schrieb am zuletzt editiert von DJMarc75
                    #12

                    @mickym Na das ist ja super. Hatte bei meinen "Tests" dies auch schon so gehabt nur hatte ich keine Join Node gesetzt.

                    Ich bastel jetzt meinen Flow um und berichte.

                    p.s. mein Blockly war in 10 Minuten erstellt :grin: aber ich wollte diese JSON welche ich in VIS verwende nicht unbedingt aus 2 verschiedenen Maschinen holen und das wird jetzt allein in NodeRed umgesetzt.

                    Vielen Dank für Deine stetigen Hilfen. Made my day !

                    Edit: Rennt wie ein Uhrwerk und Blocklyskript ist deaktiviert :joy:

                    Lehrling seit 1975 !!!
                    Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                    https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                    mickymM 1 Antwort Letzte Antwort
                    1
                    • DJMarc75D DJMarc75

                      @mickym Na das ist ja super. Hatte bei meinen "Tests" dies auch schon so gehabt nur hatte ich keine Join Node gesetzt.

                      Ich bastel jetzt meinen Flow um und berichte.

                      p.s. mein Blockly war in 10 Minuten erstellt :grin: aber ich wollte diese JSON welche ich in VIS verwende nicht unbedingt aus 2 verschiedenen Maschinen holen und das wird jetzt allein in NodeRed umgesetzt.

                      Vielen Dank für Deine stetigen Hilfen. Made my day !

                      Edit: Rennt wie ein Uhrwerk und Blocklyskript ist deaktiviert :joy:

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #13

                      @djmarc75 sagte in [gelöst] JSON aus verschiedenen DP (Payloads) erstellen:

                      Edit: Rennt wie ein Uhrwerk und Blocklyskript ist deaktiviert

                      Freut mich. :) - Wie gesagt für die Zukunft einfach die Werte wie beschrieben aus dem Debugfenster kopieren, dann kann man Dir bei den Flows leichter helfen, weil man dann die Daten zur Verfügung hat und über die Inject-Nodes den Flow selbst erstellen kann ohne dass man die Hardware oder die Adapter selbst installiert hat.

                      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.

                      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

                      811

                      Online

                      32.4k

                      Benutzer

                      81.6k

                      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