dermaddin
Goto Top

Grafana JSON API - Query

Moin,

Nachdem ich das Problem mit dem JSONpath-Ausdruck herausgefunden habe, ist es mir gelungen, JSON-Daten in Grafana abzurufen. Soweit so gut, aber manchmal waren die Diagramme kaputt und nachdem ich die Ursache gefunden habe, stellte ich fest, dass die Web-API unserer Photovoltaik-Verwaltungskonsole die JSON-Daten nicht auf konsistente Weise generiert.

Das bedeutet, dass sich die Arrays nicht bei jeder GET-Anfrage am selben Ort befinden. Einmal ist es zum Beispiel so...

{ "powerDetails": {   
    "timeUnit": "QUARTER_OF_AN_HOUR",   
    "unit": "W",   
    "meters": [   
      {
         "type": "Purchased",   
         "values": .....  

Und eine Minute später ist es so:

{ "powerDetails": {   
    "timeUnit": "QUARTER_OF_AN_HOUR",   
    "unit": "W",   
    "meters": [   
      {
         "type": "Consumed",   
         "values": .....  

Um das richtige Feld in Grafana abzurufen, habe ich Ausdrücke verwendet wie:

$.powerDetails.meters[?(@.type == "Purchased")].values[*].value  

Wenn von der PV kein Strom fließt, wird das Element „value“ nicht in das Array übergeben. Ich habe dann Datumswerte aber keine Zahlenwerte, so dass Grafana/JSON API mit meldet, dass die Felder in ihrer Länge nicht übereinstimmen. Hier könnte ich den JSONata-Ausdruck verwenden, um diese Werte mit „0“ zu füllen, wenn das Element fehlt. Mit diesem Ausdruck:

($exists($.powerDetails.meters[3].values[*]."value") ? $.powerDetails.meters[3].values[*]."value" : 0)  

Dies funktioniert nur, wenn das Array „[3]“ tatsächlich das aktuelle Element ist für die Daten der Stromerzeugung der PV.

Wie muss ich den JSONana-Ausdruck ändern, um die „Typ“-Bedingung hinzuzufügen?

Content-ID: 7127202448

Url: https://administrator.de/contentid/7127202448

Ausgedruckt am: 23.11.2024 um 08:11 Uhr