Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus JSON mit Parser (Gira - X1 - Baustein)

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

    Daten aus JSON mit Parser (Gira - X1 - Baustein)

    Hallo zusammen,

    ich möche den Füllstand meiner Zistern mit einem Liquid check über einen Gira X1 auf den Bus bekommen. Dazu hole ich mir auf dem X1 mit einem Web Request eine JSON (vgl. Bild). Nun muss ich mit dem JSON Parser Baustein aus dem Forum hier (vielen lieben Dank an dieser Stelle!!) den Füllstand abrufen (den grünen 4814 Wert bei content brauche ich ). Ich habe mir die Hilfe zum Baustein durchgelesen und unzählige Versuche druchgeführt, doch bekomme ich den Parser Baustein nicht richtig konfiguriert.

    Danke!
    Angehängte Dateien
    Zuletzt geändert von Rali2011; 27.05.2022, 06:21.

    #2
    Poste mal den JSON-Text ... als Grafik ist das schlecht auszuprobieren.

    Kommentar


      #3
      Ist das so ok?

      Wenn ich es anders einfüge werden komischerweise automatisch leerzeich an falschen stellen gesetzt.

      Code:
      {"header":{"namespace":"Device","name":"Response","messageId":"80C6EE0E-0C211ACC","payloadVersion":"1","authorization":"30AEA4C25890-00368B6C"},"payload":{"measure":{"level":1.36,"content":4814},"expansion":{"boardType":-1,"oneWire":null,"board":null},"device":{"firmware":"1.50","hardware":"B5","name":"Liquid-Check","model":{"name":"","number":1},"manufacturer":"SI-Elektronik GmbH","uuid":"0ba64a0c-7a88b168-0001","security":{"code":"xxx"}},"system":{"error":0,"uptime":3574636,"pump":{"totalRuns":785,"totalRuntime":2828}},"wifi":{"station":{"hostname":"Liquid-Check","ip":"xxx","gateway":"xxx","netmask":"xxx","mac":"xxx"},"accessPoint":{"ssid":"xxx","bssid":"xxx","rssi":-48}}}}
      Zuletzt geändert von Rali2011; 27.05.2022, 06:12.

      Kommentar


        #4
        Der benötigte Pfad lautet: /root/payload/measure/content
        Eigentlich ziemlich nahe liegend ... wenn man die Doku gelesen hat und deshalb weiß, dass bei JSON am Anfang immer /root/ stehen muss.

        Kommentar


          #5
          Danke für die Antwort!
          Allerdings hatte ich genau denngleichen Gedanken und der Pfad geht nicht…
          Ich schicke dann gerne einen Screenshot sobald ich von Arbeit daheim bin

          Kommentar


            #6
            Ich hab das nur in der Simulation getestet. Tut es da bei Dir? Und wenn es nicht tut, was kommt für eine Fehlermeldung auf dem entsprechenden Ausgang?
            Zuletzt geändert von hyman; 29.05.2022, 23:00.

            Kommentar


              #7
              Danke für deine Antworten. Der Pfad war richtig. Ich war allerdings ein Depp… Hatte vergessen auf JSON in den Einstellungen umzuschalten. Jetzt funktioniert alles! Danke nochmal für die Hilfe!

              Kommentar


                #8
                --> Habs gelöst <-- da musste auch nur eine 1 rein;-)

                Ich habe versucht Daten folgendermassen auszuwerten:

                /root/result/gridPower (funktioniert)

                /root/result/loadpoints/item[1]/chargeCurrent (funktioniert)

                /root/result/loadpoints/Item[???]vehicleSoc (funktioniert nicht, wahrscheinlich muss da was mit item sein)
                . Letzteres endet in einem Laufzeitfehler und ich komme nicht drauf... Ich finde nicht heraus, welche "Item Zahl" ich nehmen muss

                Code:
                {"result":{"auth":{"vehicles":{}},"battery":[{"power":-2,"soc":20,"controllable":false}],"batteryCapacity":0,"batteryConfigured":true,"batteryDischargeControl":false,"batteryEnergy":0,"batteryMode":"unknown","batteryPower":-2,"batterySoc":20,"bufferSoc":0,"bufferStartSoc":0,"currency":"EUR","greenShareHome":0,"greenShareLoadpoints":0,"gridConfigured":true,"gridPower":1365,"homePower":1351.5,"loadpoints":[{"chargeCurrent":0,"chargeCurrents":[0.05,0,0],"chargeDuration":0,"chargePower":11.5,"chargedEnergy":0,"chargerFeatureHeating":false,"chargerFeatureIntegratedDevice":false,"chargerIcon":null,"charging":false,"connected":true,"connectedDuration":0,"disableThreshold":0,"effectiveLimitSoc":80,"effectiveMaxCurrent":16,"effectiveMinCurrent":6,"effectivePlanSoc":0,"effectivePlanTime":"0001-01-01T00:00:00Z","effectivePriority":0,"enableThreshold":0,"enabled":false,"guardAction":"inactive","guardRemaining":0,"limitEnergy":0,"limitSoc":0,"maxCurrent":16,"minCurrent":6,"mode":"off","phaseAction":"inactive","phaseRemaining":0,"phasesActive":3,"phasesConfigured":null,"phasesEnabled":3,"planEnergy":0,"planProjectedStart":"0001-01-01T00:00:00Z","planTime":"0001-01-01T00:00:00Z","priority":0,"pvAction":"inactive","pvRemaining":0,"sessionCo2PerKWh":null,"sessionEnergy":0,"sessionPrice":null,"sessionPricePerKWh":null,"sessionSolarPercentage":0,"title":"Garage","vehicleCapacity":77,"vehicleClimaterActive":null,"vehicleDetectionActive":false,"vehicleFeatureOffline":false,"vehicleIcon":"car","vehicleName":"my_car","vehicleOdometer":9491,"vehiclePresent":true,"vehicleRange":310,"vehicleSoc":80,"vehicleTargetSoc":80,"vehicleTitle":"ID.4 GTX"}],"prioritySoc":0,"pv":[{"power":0}],"pvConfigured":true,"pvEnergy":0,"pvPower":0,"residualPower":0,"siteTitle":"Home","smartCostActive":false,"smartCostLimit":0,"smartCostType":"priceforecast","sponsor":"Velandriel","sponsorTokenExpires":0,"statistics":{"30d":{"avgCo2":0,"avgPrice":0,"chargedKWh":0,"solarPercentage":0},"365d":{"avgCo2":0,"avgPrice":0,"chargedKWh":0,"solarPercentage":0},"total":{"avgCo2":0,"avgPrice":0,"chargedKWh":0,"solarPercentage":0}},"tariffFeedIn":0.08,"tariffGrid":0.294,"tariffPriceHome":0.294,"tariffPriceLoadpoints":0.294,"vehicles":{"my_car":{"title":"ID.4 GTX","minSoc":50,"limitSoc":80}},"version":"0.123.3"}}​

                ​Vielen Dank im Voraus:-)
                Zuletzt geändert von Ramon Buff; 02.01.2024, 17:58.

                Kommentar


                  #9
                  Hallo zusammen,
                  ich habe bei mir auch ein kleines Problem. Ich kann die Daten meiner Lüftungsanlage per HTTP GET Request abfragen und bekomme folgenden JSON-Code:
                  Code:
                  {
                      "12101": 141,
                      "12102": 175,
                      "12107": 176,
                      "12135": 59,
                      "12400": 1800,
                      "12401": 1620,
                      "12543": 220
                  }​
                  Im Pfad habe ich folgendes eingegeben:
                  /root/12101

                  Trotzdem kommt als Laufzeitfehler "Der Ausdruck muss in einem Knotensatz resultieren".

                  Habt ihr eine Idee, wie ich an die Einträge rankomme?

                  Viele Grüße
                  Daniel

                  Kommentar


                    #10
                    12101 ist eine Zahl und kein gültiger Identifier: Vorher "12101": ersetzten durch "Eins":
                    und dann als Pfad /root/Eins

                    Kommentar


                      #11
                      Danke für den Tipp. Hab heute leider keinen Zugriff auf den Rechner. Schau ich mir morgen gleich mal an.

                      Kommentar


                        #12
                        Da zwischendurch leider mein Rechner den Geist aufgegeben hat und ich nicht auf meine Projekte zugreifen konnte (zum Glück macht man regelmäßig Backups 🙂) konnte ich es erst heute testen. Es hat super funktioniert.

                        Vielen Dank für die schnelle Hilfe

                        Kommentar


                          #13
                          Hallo Leute,

                          ich habe ein ähnliches Problem wie der Themenersteller, doch leider etwas anders...

                          Ich habe folgenden Json string (siehe Anhang) in welchem die benötigten Werte je "id" unter "val" stehen und dabei noch dazu ebenfalls unter "Anführungszeichen".

                          Gibt es eine Möglichkeit mittels XML/Json Parser auf diese Werte zuzugreifen?

                          Danke schon mal,

                          Angehängte Dateien

                          Kommentar


                            #14
                            Herzlich Willkommen bei den Aktiven im Forum!
                            Die angehängte Datei ist syntaktisch nicht ganz vollständig. Noch mehr vermisse ich in der Frage wenigstens einen Fehlversuch für den Zugriff. So rate ich:
                            ecowitt liefert zwei Felder, "common_list" und "rain". Auf die Feldelemente greift man beispielsweise mit "rain"[2] zu.

                            Kommentar


                              #15
                              Hallo,
                              danke für die nette Aufnahme :-)
                              Die Datei sollte bis auf die letzte } vollständig sein, zumindest kommt diese so aus der Wetterstation per http-request heraus.
                              Meine Fehlversuche waren bisher mehr mit Textvormatierer und Formelberechnungen um die " bei den gesuchten Werten entfernen zu können.

                              Dein Lösungsvorschlag mit "Feld" [Anzahl des Elemtes] war mir so nicht bekannt, ich werde dies heute gleich testen.

                              Danke schon mal!

                              Kommentar

                              Lädt...
                              X