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. Bestimmte Daten aus Json extrahieren

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    354

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Bestimmte Daten aus Json extrahieren

Geplant Angeheftet Gesperrt Verschoben Node-Red
node-red
12 Beiträge 5 Kommentatoren 3.3k Aufrufe 4 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.
  • ThisoftT Offline
    ThisoftT Offline
    Thisoft
    schrieb am zuletzt editiert von
    #2

    Prinzipiell geht das per Javascript, per Blockly, per NodeRed und sehr wahrscheinlich auch mit dem Parser-Adapter.
    Womit könntest du dich denn am ehesten anfreunden? Bei Javascript und evtl. noch NodeRed könnte ich dir später mal ein Beispiel basteln. Die anderen Beiden sind nicht meine Baustelle...

    22 HM-Geräte; PivCCU2 auf RasPi

    ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

    1 Antwort Letzte Antwort
    0
    • kmxakK kmxak

      Ich habe ein Json Object wo ich gerne einen Teil extrahieren möchte und damit weiterarbeiten wollen würde.
      Json ist wie folgt aufgebaut:

      {"192.168.2.1":"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box","192.168.2.2":"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box"}
      

      Ich würde mir da gerne alle Mac Adressen (XX:XX:XX:XXXX:XX) rausziehen.

      Weiß da einer weiter?

      R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #3

      @kmxak Da du das unter Node-Red gepostest hast, geh ich davon aus, dass du das unter Node-Red lösen willst.
      Spontan fallen mir 2 Lösungen ein:

      1. function-node mit JS-String Funktionen.
      2. Ein change-node:
      [
          {
              "id": "4edb422a.002f34",
              "type": "inject",
              "z": "1770f773.c5c8e1",
              "name": "Dein Beispiel json",
              "topic": "",
              "payload": "{\"192.168.2.1\":\"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box\",\"192.168.2.2\":\"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box\"}",
              "payloadType": "json",
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "x": 190,
              "y": 160,
              "wires": [
                  [
                      "a503f6c3.b38ea8"
                  ]
              ]
          },
          {
              "id": "c9d744be.4b6e5",
              "type": "debug",
              "z": "1770f773.c5c8e1",
              "name": "",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "false",
              "x": 590,
              "y": 160,
              "wires": []
          },
          {
              "id": "a503f6c3.b38ea8",
              "type": "change",
              "z": "1770f773.c5c8e1",
              "name": "extract MAC",
              "rules": [
                  {
                      "t": "set",
                      "p": "payload",
                      "pt": "msg",
                      "to": "$map(payload.*, function($v) {$substringBefore($v, \";\")} )",
                      "tot": "jsonata"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 390,
              "y": 160,
              "wires": [
                  [
                      "c9d744be.4b6e5"
                  ]
              ]
          }
      ]
      
      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • kmxakK Offline
        kmxakK Offline
        kmxak
        Most Active
        schrieb am zuletzt editiert von
        #4

        moin, danke für die hilfen.

        den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

        $map(payload.*, function($v) {$substringBefore($v, ";")} )
        

        Habe es nun aber mit deinem Beispiel ans laufen bekommen.
        Musste aber noch ein Json to Object dazwischen verwenden.

        :+1:

        Gruß Alex

        R 1 Antwort Letzte Antwort
        0
        • R rewenode

          @kmxak Da du das unter Node-Red gepostest hast, geh ich davon aus, dass du das unter Node-Red lösen willst.
          Spontan fallen mir 2 Lösungen ein:

          1. function-node mit JS-String Funktionen.
          2. Ein change-node:
          [
              {
                  "id": "4edb422a.002f34",
                  "type": "inject",
                  "z": "1770f773.c5c8e1",
                  "name": "Dein Beispiel json",
                  "topic": "",
                  "payload": "{\"192.168.2.1\":\"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box\",\"192.168.2.2\":\"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box\"}",
                  "payloadType": "json",
                  "repeat": "",
                  "crontab": "",
                  "once": false,
                  "onceDelay": 0.1,
                  "x": 190,
                  "y": 160,
                  "wires": [
                      [
                          "a503f6c3.b38ea8"
                      ]
                  ]
              },
              {
                  "id": "c9d744be.4b6e5",
                  "type": "debug",
                  "z": "1770f773.c5c8e1",
                  "name": "",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "false",
                  "x": 590,
                  "y": 160,
                  "wires": []
              },
              {
                  "id": "a503f6c3.b38ea8",
                  "type": "change",
                  "z": "1770f773.c5c8e1",
                  "name": "extract MAC",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "$map(payload.*, function($v) {$substringBefore($v, \";\")} )",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 390,
                  "y": 160,
                  "wires": [
                      [
                          "c9d744be.4b6e5"
                      ]
                  ]
              }
          ]
          
          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #5

          @rewenode

          darf ich mal kurz was fragen: du benutzt jsonata - oder - deshalb auch die $-zeichen

          falls so etwas in js zu machen wäre, muss dann var jsonata = require("jsonata" im script stehen - danach funktioniert das auch in js ?
          in blockly müßte ich dann wahrscheinlich eine js-function einfügen ?

          bitte nicht genervt sein - bin noch am einarbeiten

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • kmxakK kmxak

            moin, danke für die hilfen.

            den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

            $map(payload.*, function($v) {$substringBefore($v, ";")} )
            

            Habe es nun aber mit deinem Beispiel ans laufen bekommen.
            Musste aber noch ein Json to Object dazwischen verwenden.

            :+1:

            R Offline
            R Offline
            rewenode
            schrieb am zuletzt editiert von rewenode
            #6

            @kmxak sagte in Bestimmte Daten aus Json extrahieren:

            den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

            Ja, das ist JSonata.
            Eine extrem mächtige Sprache, die bei dieser Aufgabe sicher nicht nötig ist. Allerdings haben die node-red Entwickler sie u.a. in den change-node integriert, weshalb ich sie hier verwende. Im change-node steht natives JavaScript nicht zur Verfügung, damit würde es genauso einfach gehen.

            @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

            falls so etwas in js zu machen wäre, muss dann var jsonata = require("jsonata" im script stehen - danach funktioniert das auch in js ?

            In einem reinen JavaScript ja. Allerdings muss die Abfrage dann noch in einen String verpackt werden, also syntaktisch etwas komplizierter.
            Im node-red-function-node ist das auch möglich, allerdings nicht mit require("jsonata"). Jsonata muss da schon über die Settings.js eingebunden werden.
            (geht auch über Funktionen in RED aber das ist nicht offiziell dokumentiert)
            Eigentlich ist das aber unnötig, da JSonata komfortabel in wichtige core-nodes integriert ist.

            @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

            bitte nicht genervt sein - bin noch am einarbeiten

            Genervt bin ich nur, wenn mein Rechner mal wieder ...;-)

            PS.

            @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

            in blockly müßte ich dann wahrscheinlich eine js-function einfügen ?

            blocky habe ich noch nie verwendet, da weis sicher jemand Anders besser bescheid.

            1 Antwort Letzte Antwort
            0
            • liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #7

              @rewenode

              danke dir für die erläuterung

              ich weiß nicht warum, aber mit js werd ich einfach nicht warm. ich mache solche "umwandlungen" auch immer über node red - bin ganz froh dein beispiel gefunden zu haben, mal sehen, ob oder wie ich das in mein thema einbauen kann - da muss wohl noch geübt werden :-(

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                rewenode
                schrieb am zuletzt editiert von
                #8

                @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

                ich weiß nicht warum, aber mit js werd ich einfach nicht warm

                Da ist node-red doch ein prima Einstieg. Da lernt sich JS fast nebenbei.

                1 Antwort Letzte Antwort
                0
                • kmxakK Offline
                  kmxakK Offline
                  kmxak
                  Most Active
                  schrieb am zuletzt editiert von
                  #9

                  ist finde nodered extrem schwierig...

                  in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                  Gruß Alex

                  R iomountainI 2 Antworten Letzte Antwort
                  0
                  • kmxakK kmxak

                    ist finde nodered extrem schwierig...

                    in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                    R Offline
                    R Offline
                    rewenode
                    schrieb am zuletzt editiert von
                    #10

                    @kmxak sagte in Bestimmte Daten aus Json extrahieren:

                    in blockly müsste man das auch easy einfügen können.

                    wollte grad sagen: mach mal ;-)

                    Früher gab es Peitschen zum geißeln. Der moderne Hobbyprogrammierer nimmt JSONata, REBOL oder Regex ;-)

                    1 Antwort Letzte Antwort
                    1
                    • kmxakK kmxak

                      ist finde nodered extrem schwierig...

                      in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                      iomountainI Offline
                      iomountainI Offline
                      iomountain
                      schrieb am zuletzt editiert von
                      #11

                      @kmxak sagte in Bestimmte Daten aus Json extrahieren:

                      in blockly müsste man das auch easy einfügen können.

                      Einen Baustein habe ich dafür noch nicht gefunden, hab Ihn mal auf die Wunschliste gepackt:
                      Wunschliste Blockly-Elemente

                      1 Antwort Letzte Antwort
                      0
                      • kmxakK Offline
                        kmxakK Offline
                        kmxak
                        Most Active
                        schrieb am zuletzt editiert von
                        #12

                        du musst da diesen block nehmen und den javascript händisch einfügen.

                        <block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defcustomnoreturn" id="a~0sZz~Kq[gHY%LwB*2D" x="112.83273983001686" y="212.54544067382812">
                          <mutation statements="false"></mutation>
                          <field name="NAME">etwas tun</field>
                          <field name="SCRIPT"></field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        

                        Gruß Alex

                        1 Antwort Letzte Antwort
                        1
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        352

                        Online

                        32.5k

                        Benutzer

                        81.8k

                        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