Seite 1 von 3

[3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Do Nov 03, 2022 10:31 am
von Tomtheripper
Hallo,

ich frage die Sonnenbatterie ECO 8 - und hier speziell das verbaute Powermeter per API-GET (mit API-Key) ab und bekomme auch folgende Antwort:

[
{
"a_l1": 2.4519999027252197,
"a_l2": 2.4059998989105225,
"a_l3": 2.371999979019165,
"channel": 1,
"deviceid": 4,
"direction": "production",
"error": 0,
"kwh_exported": 0,
"kwh_imported": 33760.69921875,
"v_l1_l2": 412.3999938964844,
"v_l1_n": 237.39999389648438,
"v_l2_l3": 410.1000061035156,
"v_l2_n": 236.8000030517578,
"v_l3_l1": 410.8999938964844,
"v_l3_n": 236.39999389648438,
"va_total": 1712.699951171875,
"var_total": 0,
"w_l1": 582.2999877929688,
"w_l2": 569.7000122070312,
"w_l3": 560.7000122070312,
"w_total": 1712.699951171875
},
{
"a_l1": 3.6040000915527344,
"a_l2": 0.8059999942779541,
"a_l3": 1.940999984741211,
"channel": 2,
"deviceid": 4,
"direction": "consumption",
"error": 0,
"kwh_exported": 0,
"kwh_imported": 35696.80078125,
"v_l1_l2": 412.3999938964844,
"v_l1_n": 237.10000610351562,
"v_l2_l3": 410.1000061035156,
"v_l2_n": 236.8000030517578,
"v_l3_l1": 410.8999938964844,
"v_l3_n": 236.39999389648438,
"va_total": 1013.7000122070312,
"var_total": -131.1999969482422,
"w_l1": 731.9000244140625,
"w_l2": 18,
"w_l3": 237.89999389648438,
"w_total": 1005.2000122070312
}
]


Da hier die Abfragenamen nicht eindeutig sind (alle Namen in Anführungszeichen kommen doppelt vor - aber in verschiedenen Gruppen bzw. Channels), weiß ich nicht, wie ich die einzelnen Auswertungen erhalten kann.

Wo (bei "Auswertung HTTP Antwort hinzufügen"?) muss ich was eintragen, um z.B. in der Verbrauchs-Gruppe den Strom von L1 (a_l1) zu erhalten?

Schöne Grüße
Thomas

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Do Nov 03, 2022 11:59 am
von MrWilson
Hey Thomas,

gib mal dein JSON bei JSON Path Finder ein. Da wird dir das dann schön aufgeschlüsselt.

Grüße

Willy

Beispiel: [0].a_l1 und [1].a_l1

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Do Nov 03, 2022 12:31 pm
von Tomtheripper
Hallo Willy,

Super, vielen Dank für den Hinweis und das Beispiel, perfekt!!!

:handgestures-thumbupright:

Beste Grüße

Thomas

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Di Nov 15, 2022 4:52 pm
von Tomtheripper
@MrWilson
und gerne auch an alle anderen:

Nachtrag:

Hallöle, ich komm' schon wieder nicht weiter:

Wie bekomm ich die Auswertung bei so einer Antwort?:

{
"Header":{
"Version":6,
"Device":"87",
"Timestamp":1668539804
},
"Data":{
"Logging Analog":[
{
"Number":21,
"AD":"A",
"Value":{
"Value":35.6,
"Unit":"1"
}
}]},
"Status":"OK",
"Status code":0
}

HIer führt der Pfad von Json Path Finder zu keinem (vom TW akzeptierten) Ergebnis.


Beste Grüße
Thomas

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Di Nov 15, 2022 6:23 pm
von Tomtheripper
:confusion-helpsign:

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Di Nov 15, 2022 8:16 pm
von Sebastian104
Moin,

wenn ich das jetzt richtig verstehe solltest du einfach bei der -Auswertung HTTP Antwort- im Feld -Selektor- die Variabel eingeben welche du ausgewertet haben möchtest. Also zum Beispiel: Version.
Dann bekommst du bei jeder Objekt Abfrage den dahinter stehenden Wert ausgegeben.

Grüße Sebastian

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Di Nov 15, 2022 8:53 pm
von MrWilson
Was möchtest du ausgewertet haben?

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Mi Nov 16, 2022 9:42 am
von MrWilson
Data."Logging Analog".0.Value.Value

sollte in deinem Beispiel 35.6 ausgeben. Ich kann es aber nicht testen, deswegen mal bitte ausprobieren.

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Mi Nov 16, 2022 1:40 pm
von Tomtheripper
Hallo @Sebastian104 und @MrWilson und Danke für die Antworten!

Leider funzen beide Vorschläge nicht, ich habe aber noch was rausgefunden:

Ich vermute einen Fehler in der Antwort vom C.M.I (Technische Alternative), da sie vom Json Pathfinder anders "interpretiert" wird als die ganz unten:
{
"Header": {
"Version": 6,
"Device": "8D",
"Timestamp": 1668603585
},
"Data": {
"Modbus": [
{
"Number": 1,
"AD": "A",
"Value": {
"Value": 1,
"Unit": "0"
}
}
]
},
"Status": "OK",
"Status code": 0
}

Diese Antwort z.B. wird korrekt aufgeschlüsselt
Bild


wohingegen bei dieser Antwort
{
"Header": {
"Version": 6,
"Device": "87",
"Timestamp": 1668604466
},
"Data": {
"Logging Analog": [
{
"Number": 21,
"AD": "A",
"Value": {
"Value": 32.7,
"Unit": "1"
}
}
]
},
"Status": "OK",
"Status code": 0
}

Bild

das Leerzeichen zwischen "Logging Analog" für den Fehler sorgt!
Und genau diesen Wert kann ich nicht entlocken, egal was ich versuche...

Hier zum Vergleich die Json Pathfinder Interpretation mit von mir eingefügtem Unterstrich:
Bild

Wisst ihr, ob das mit der Leerstelle erlaubt ist? Sonst würde ich das an Technische Alternative als Fehler melden.

Ich habe mir nun so beholfen: Ich hole den gesuchten Wert über die Abfrage eines anderen Gerätes.

Trotzdem nochmal Danke für die Hilfe!!

Beste Grüße
Thomas

Re: [3.5.1] API/JSON: Wie Antwort mit mehreren "Channels" Auswerten?

Verfasst: Mi Nov 16, 2022 2:03 pm
von MrWilson
Ich glaube da nicht wirklich an einen Fehler. Interessanter wäre eigentlich ein paar Screenshots mit den Einstellungen und Abfragen im TWS.

funktioniert

Data."Logging Analog".[0].Value.Value

?