Bitte nicht meine Frage im letzten Post übersehen
Vielleicht fragt sich ja beim Lesen jemand was man nun mit dem json anfangen kann und wie man die Daten rausbekommt. So alleine hilft es ja immerhin noch nicht.
Ich mache das mal exemplarisch für einen Wert. Ich weiß noch nicht genau, was mich interessiert und was und wie ich es loggen möchte, da der ausgelesene Werte zu einem Zeitraum (1h) in der Vergangenheit gehört und ich ihn beim loggen nicht mit der aktuellen Zeit schreiben wollen würde.
Wenn ich testweise mal nur 2 Werte Abfrage,
Code: Alles auswählen
{
"query": "{ viewer { homes { consumption(resolution: HOURLY, last: 2) { nodes { from to cost unitPrice unitPriceVAT consumption consumptionUnit } } } } }"
}
bekomme ich etwas verschachtelt das hier:
Code: Alles auswählen
{
"data": {
"viewer": {
"homes": [
{
"consumption": {
"nodes": [
{
"from": "2023-09-14T13:00:00.000+02:00",
"to": "2023-09-14T14:00:00.000+02:00",
"cost": 0.197232028,
"unitPrice": 0.3011176,
"unitPriceVAT": 0.0480776,
"consumption": 0.655,
"consumptionUnit": "kWh"
},
{
"from": "2023-09-14T14:00:00.000+02:00",
"to": "2023-09-14T15:00:00.000+02:00",
"cost": 0.1520488704,
"unitPrice": 0.2993088,
"unitPriceVAT": 0.0477888,
"consumption": 0.508,
"consumptionUnit": "kWh"
}
]
}
}
]
}
}
}
Darin sind zwei Arrays.
- homes: Da ich nur ein Heim und einen Tarif habe, ist hier nur ein Datensatz drin
- nodes: Ich habe 2 abgefragt, also sind hier 2 Datensätze drin. Jeder Datensatz enthält die 7 Daten, die ich abgefragt habe (from, to, cost, unitPrice, unitPriceVAT, consumption & consumptionUnit).
Möchte ich nun consumption zwischen 13 & 14 Uhr haben, so ist das der erste Datensatz und natürlich in meinem ersten und einzigen home.
Man klickt also auf "Auswertung HTTP Antwort hinzufügen" und trägt die folgenden Daten ein:
Lokation: Body
Selektor: data.viewer.homes[0].consumption.nodes[0].consumption
Objekteinheit: kWh
Format: Fließkomma (FLOAT)
(Ich habe hier kein Bild gemacht, da der Selektor eh nicht komplett zu sehen ist)
Auslesen möchte ich also
data
viewer
home (den ersten und einzigen Datensatz, also 0)
consumption
nodes (den ersten der Werte, also auch 0)
consumption (mein eigentlicher Wert, der mich interessiert)
Merken also:
- Array muss mit eckigen Klammern mit angegeben werden beginnend mit 0.
- Würde ein Name Punkte beinhalten, müsste dieser mit " " angegeben werden, da sonst kein Datensatz gefunden werden kann.
Beispiel: Würde es nicht data, sondern data.01.gt heißen (also ein zusammenhängender String), müsste man "data.01.gt".viewer.homes[0].consumption.nodes[0].consumption angeben da sonst unter data.01.gt... gesucht wird, was es ja nicht gibt.
Kam bisher hier nicht vor, aber wer weiß. So habe ich es mir nochmal mit notiert
Vielleicht hilft es ja jemandem.
Viele Grüße
Nils