Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte aus JSON auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Werte aus JSON auslesen

    Hallo zusammen,

    ich habe folgendes JSON:
    Code:
    {
    "1": {
    "Name": "Temperature",
    "Timestamp": "2020-07-15T10:40:28.2938527-07:00",
    "Value": 19.26,
    "Unit": "Celsius",
    "Symbol": "\u00b0C"
    },
    "2": {
    "Name": "PH value",
    "Timestamp": "2020-07-15T10:40:28.3094755-07:00",
    "Value": 3.568,
    "Unit": "",
    "Symbol": ""
    },
    "3": {
    "Name": "Redox potential",
    "Timestamp": "2020-07-15T10:40:28.3251029-07:00",
    "Value": 354.3,
    "Unit": "Millivolt",
    "Symbol": "mV"
    }
    }
    und will aus jedem Bereich die Values auslesen. Also bei der 1 der Temerperatur die 19.26.
    Ich hatte von jonofe den LBS 19001573 verwendet mit folgenden Settings aber bei A1 ist nichts ausgegeben worden. Ich hab anscheinend nicht verstanden wie ich den LBS verwenden muss. Vielleicht ist er auch der falsche für das was ich will. Kann mir jemand helfen?

    JSON auslesen.JPG

    #2
    Du musst den JSON Extractor 19001208 nehmen.
    und dort

    E1: dein JSON
    E2: 1|Value
    E3: 2|Value
    E4: 3|Value

    Dann kommen an A2, A3, A4 deine Werte raus.

    Kommentar


      #3
      Super funktioniert vielen Dank!!!

      Kommentar


        #4
        Das ist ja verrückt... Da hat mein EzoGateway ja auch so schon den Weg in die KNX Umgebung gefunden.

        Neben der nie veröffentlichten Version, die Parameter per Ethernet direkt auf den Bus zu schreiben, kommt jetzt eine neue Revision mit Hardware KNX. Dann braucht es nur noch ein grünes Kabel im Pumpenhaus /-schacht ;-)

        Für Fragen, Anregungen und Kritik bin ich gerne erreichbar.

        Kommentar


          #5
          Servus jonofe ,

          ich hänge mich hier kurz mal dran, da ich ne Frage zum Extractor habe.
          Ich habe folgenden json und möchte "mia" exrahiert bekommen:

          Code:
          {
          "input":"fahre mia nachbar hoch",
          "intent":{
          "intentName":"moveshutter",
          "confidenceScore":0.75
          },
          "siteId":"default",
          "id":"d2ed4c94-6f15-472e-8ba0-32a1675de94b",
          "slots":[COLOR=#c0392b][B][[/B][/COLOR]
          {
          "entity":"room_name",
          "value":{
          "kind":"Unknown",
          "value":"mia"
          },
          "slotName":"room_name",
          "rawValue":"mias",
          "confidence":1.0,
          "range":{
          "start":6,
          "end":9,
          "rawStart":6,
          "rawEnd":10
          }
          },
          {
          Aber scheinbar macht mir die erste [ einige Probleme. Was muss dazu am Eingang eingefügt werden?

          Kommentar


            #6
            Zitat von ThomasCologne Beitrag anzeigen
            Was muss dazu am Eingang eingefügt werden?
            Dazu müsste man das komplette JSON sehen. Bei einem Ausschnitt, der für sich selbst kein korrektes JSON ist, kann man nur raten.

            Ich würde wie folgt raten:

            slots|0|value

            Kommentar


              #7
              richtig geraten ;-)
              Die Ziffer fehlte mir. Besten Dank für den Tipp!

              Nur der Vollständigkeit halber der komplette JSON wie er aus dem A2 MQTT client kommt:

              PHP-Code:
              {
              "input":"fahre mia nachbar hoch",
              "intent":{
              "intentName":"moveshutter",
              "confidenceScore":0.75
              },
              "siteId":"default",
              "id":"d2ed4c94-6f15-472e-8ba0-32a1675de94b",
              "slots":[
              {
              "entity":"room_name",
              "value":{
              "kind":"Unknown",
              "value":"mia"
              },
              "slotName":"room_name",
              "rawValue":"mias",
              "confidence":1.0,
              "range":{
              "start":6,
              "end":9,
              "rawStart":6,
              "rawEnd":10
              }
              },
              {
              "entity":"location_name",
              "value":{
              "kind":"Unknown",
              "value":"nachbar"
              },
              "slotName":"location_name",
              "rawValue":"nachbar",
              "confidence":1.0,
              "range":{
              "start":10,
              "end":17,
              "rawStart":11,
              "rawEnd":18
              }
              },
              {
              "entity":"updown_name",
              "value":{
              "kind":"Unknown",
              "value":"hoch"
              },
              "slotName":"updown_name",
              "rawValue":"hoch",
              "confidence":1.0,
              "range":{
              "start":18,
              "end":22,
              "rawStart":19,
              "rawEnd":23
              }
              }
              ],
              "sessionId":"d2ed4c94-6f15-472e-8ba0-32a1675de94b",
              "customData":null,
              "asrTokens":[
              [
              {
              "value":"fahre",
              "confidence":1.0,
              "rangeStart":0,
              "rangeEnd":5,
              "time":null
              },
              {
              "value":"mia",
              "confidence":1.0,
              "rangeStart":6,
              "rangeEnd":9,
              "time":null
              },
              {
              "value":"nachbar",
              "confidence":1.0,
              "rangeStart":10,
              "rangeEnd":17,
              "time":null
              },
              {
              "value":"hoch",
              "confidence":1.0,
              "rangeStart":18,
              "rangeEnd":22,
              "time":null
              }
              ]
              ],
              "asrConfidence":null,
              "rawInput":"fahre mias nachbar rolllade hoch",
              "wakewordId":null,
              "lang":null

              Kommentar


                #8
                Hi jonofe André,
                komme gerade mit dem 19001573 JSON Filter nicht weiter. Ich vermute, dafür ist der LBS nicht gebaut...

                Ausgangsbasis ist JSON mit Array - das Array ist vermutlich die Herausforderung. Ich möchte den Teil des JSONS filtern zum weiter verarbeiten mit JSON Extractor, der einen bestimmten Tag hat. Ich kenne also nicht die Zeile des Arrays, sondern möchte die "Array-Zeile" per Filter selektieren.

                Mein Versuch war: E1 = JSON | E2 = metrics|tags|host | E3 = HAL-30
                Habe auch testweise versucht E2 = metrics|0|tags|host oder metrics|1|tags|host ,habe aber auch damit nichts gefunden. Und auch E2 = metrics|?|tags|host
                Wie könnte man das lösen?

                JSON mit Array
                Code:
                {"metrics":[
                {"fields":{"dist":"Debian GNU/Linux 11 (bullseye)","regular":13,"security":3},
                "name":"update",
                "tags":{"host":"HAL-proxmox"},
                "timestamp":1667520764},
                {"fields":{"VMID":"30019","dist":"Ubuntu 22.04.1 LTS","regular":2,"security":1},
                "name":"update",
                "tags":{"host":"HAL-30"},
                "timestamp":1667520764},
                {"fields":{"VMID":"30096","dist":"Ubuntu 22.04.1 LTS","regular":0,"security":0},
                "name":"update",
                "tags":{"host":"HAL-pihole"},
                "timestamp":1667520764},
                {"fields":{"VMID":"99098","dist":"Ubuntu 18.04.5 LTS","regular":0,"security":0},
                "name":"update",
                "tags":{"host":"HAL-AVAHI"},
                "timestamp":1667520764},
                {"fields":{"regular":15,"security":4},
                "name":"update",
                "tags":{"host":"HAL-proxmox_SUM"},
                "timestamp":1667520764}
                ]}
                gewünschte Ausgabe A1 ist JSON-Teil:
                Code:
                {"fields":{"VMID":"30019","dist":"Ubuntu 22.04.1 LTS","regular":0,"security":0},
                "name":"update",
                "tags":{"host":"HAL-30"},
                "timestamp":1667520764}​

                Kommentar


                  #9
                  Hi Carsten,

                  Ja grundsätzlich hast du Recht, dass das Array das Problem ist, da der LBS kein Array-Walk macht.

                  Nach Bugfixing des JSON-Filter LBS (da war echt noch ein großer Bock drin) ist es möglich das Problem so zu lösen, wenn die Anzahl der Array Elmente überschaubar bleibt:

                  jsonencode.png

                  Im Extractor trägst du "metric|0", "metrics|1" usw. an den Eingängen ein
                  Die Arrayeinträge laufen dann über eine Klemme zum JSON Filter.
                  Der JSON Filter filtert dann auf "tags|host" (E2) auf den Wert "HAL-30" (E3).
                  Der JSON Filter LBS gibt praktischerweise, dann entsprechende komplette Array-Element an A1 zur Weiterverarbeitung mit dem JSON-Extractor LBS aus.

                  Wichtig: Vorher den JSON-Filter LBS auf v0.3 updaten.

                  Kommentar


                    #10
                    Coole Lösung - auf die Idee mit der Klemme war ich nicht gekommen, um sie mit dem Extractor erst zu separieren und dann wieder zusammen in den Filter zu leiten. Probiere ich nachher. Danke, Andre´!

                    Kommentar


                      #11
                      Zitat von jonofe Beitrag anzeigen
                      Nach Bugfixing des JSON-Filter LBS (da war echt noch ein großer Bock drin) ist es möglich das Problem so zu lösen, wenn die Anzahl der Array Elmente überschaubar bleibt:
                      Funktioniert perfekt! Klasse, André!
                      Damit bekomme ich die Summe und wichtige Einzelwerte für spezifische Systeme heraus. Und statisch kann man daraus weiter machen


                      Aber noch eine Zusatzfrage in die Runde - stehe trotz FoSu gerade auf dem Schlauch: Mit welchem LBS kann ich das "große" JSON (oben) für eine Listenausgabe aufbereiten. also dynamisch die Zeilen des Arrays alle als Liste anzeigen - im obigen Beispiel also 5 Zeilen mit zB
                      host | Distribution | Updates regular | Updates Security | VMID
                      Zuletzt geändert von saegefisch; 04.11.2022, 16:24.

                      Kommentar


                        #12
                        Mein Script für das auslesen aller anstehenden Updates aller LXC und VM von Proxmox funktioniert bislang wunderbar, just heute neue Updates für Rocky und Proxmox. Statisch bekomme ich alles raus (siehe anderer Threat screenshot)

                        Aber mir fehlt noch immer eine Option, aus dem JSON dynamisch eine Liste zu erzeugen für ein Listenelement. Hat jemand einen Ansatz parat, den ich übersehe? Mir fällt nix schlaues ein...

                        Kommentar

                        Lädt...
                        X