Seite 1 von 1

http Json Abfrage

Verfasst: 2. Apr 2020 20:10
von schlagi
Hallo, Bin gerade dabei von einer http Json Seite Daten Abzufragen aber es funktioniert leider nicht und ich finde auch den Fehler nicht.
Kann mir da jemand helfen. Mein Problem ist das item wie ich den JSonPath angeben muß für diese Position .

Ich mächte den Temperaturwert vom Outsidetemp.fields.temp2.value (4.688) auslesen. und auf der Sidemap darstellen.

Ich verbinde mich mit http mit dieser Konfiguration.

http.cfg

Vaillant.url=http://10.0.0.87:8889/data
Vaillant.updateInterval=100000

item
String Vaillant_Aussentemp "Aussentemp [%d]" { http="<[Vaillant:60000:JSONPATH($data.broadcast.messages.outsidetemp.fields.temp2.value)]"}


Danke für die Hilfe



{
"broadcast": {
"messages": {
"datetime": {
"name": "datetime",
"passive": true,
"write": false,
"lastup": 1585854796,
"zz": 254,
"fields": {
"outsidetemp": {"value": 3.000},
"time": {"value": "21:13:04"},
"date": {"value": "02.04.2020"}
}
},
"error": {
"name": "error",
"passive": true,
"write": false,
"lastup": 0
},
"hwcStatus": {
"name": "hwcStatus",
"passive": true,
"write": false,
"lastup": 1585854808,
"zz": 254,
"fields": {
"0": {"name": "onoff", "value": "off"},
"1": {"name": "VF1", "value": 25},
"2": {"name": "onoff", "value": "off"}
}
},
"id-u": {
"name": "id",
"passive": true,
"write": false,
"lastup": 0
},
"load": {
"name": "load",
"passive": true,
"write": false,
"lastup": 0
},
"outsidetemp": {
"name": "outsidetemp",
"passive": true,
"write": false,
"lastup": 1585854795,
"zz": 254,
"fields": {
"temp2": {"value": 3.000}
}
},
"signoflife": {
"name": "signoflife",
"passive": true,
"write": false,
"lastup": 0
},
"vdatetime": {
"name": "vdatetime",
"passive": true,
"write": false,
"lastup": 1585854795,
"zz": 254,
"fields": {
"time": {"value": "21:13:04"},
"date": {"value": "02.04.2020"}
}
}
}
},

Re: http Json Abfrage

Verfasst: 2. Apr 2020 20:38
von peter-pan
Ich bin mir nicht sicher ob der Formatter [%d] bei einem String-Item funktioniert. Probier's mal mit [%s].

Hast du deinen JSON-String mal mit einem Online-Evaluator getestet ? Kannst du den JSON-String mal als Code (nicht als Bild) posten.

Re: http Json Abfrage

Verfasst: 2. Apr 2020 22:39
von peter-pan
.. Ich hab an deinen JSON-String etwas herumgebastelt und ihn so:

Code: Alles auswählen

{
"broadcast": {
"messages": {
"datetime": {
"name": "datetime",
"passive": true,
"write": false,
"lastup": 1585854796,
"zz": 254,
"fields": {
"outsidetemp": {"value": 3.000},
"time": {"value": "21:13:04"},
"date": {"value": "02.04.2020"}
}
},
"error": {
"name": "error",
"passive": true,
"write": false,
"lastup": 0
},
"hwcStatus": {
"name": "hwcStatus",
"passive": true,
"write": false,
"lastup": 1585854808,
"zz": 254,
"fields": {
"0": {"name": "onoff", "value": "off"},
"1": {"name": "VF1", "value": 25},
"2": {"name": "onoff", "value": "off"}
}
},
"id-u": {
"name": "id",
"passive": true,
"write": false,
"lastup": 0
},
"load": {
"name": "load",
"passive": true,
"write": false,
"lastup": 0
},
"outsidetemp": {
"name": "outsidetemp",
"passive": true,
"write": false,
"lastup": 1585854795,
"zz": 254,
"fields": {
"temp2": {"value": 3.527} 
}
},
"signoflife": {
"name": "signoflife",
"passive": true,
"write": false,
"lastup": 0
},
"vdatetime": {
"name": "vdatetime",
"passive": true,
"write": false,
"lastup": 1585854795,
"zz": 254,
"fields": {
"time": {"value": "21:13:04"},
"date": {"value": "02.04.2020"}
}
}
}
}
}
zum Laufen gebracht.

Dann bekomme ich mit diesem Kommando:

Code: Alles auswählen

$.broadcast.messages.outsidetemp.fields.temp2.value
den Wert ausgelesen. Ich habe den Wert auf 3.527 geändert.

Hier noch ein Screenshot vom Parser:
parse.jpg

Re: http Json Abfrage

Verfasst: 3. Apr 2020 01:08
von udo1toni
Tipp am Rande: Für VSCode gibt es z.B. das Plugin JSONPath StatusBar, mit dem man einfach nur das JSON in eine *.json Datei schiebt, sich zum gesuchten Wert hangelt und anschließend in der Leiste unterhalb des Fensters den JSON Path ablesen kann.
jsonpath.png
Man kann den Pfad sogar in die Zwischenablage übernehmen lassen. (Das vorangestellte $. muss man aber noch ergänzen.)
Es gibt auch passende Formatter, die das JSON automatisch aufhübschen, damit es besser lesbar wird (Zeilenumbrüche und Einrückungen), Das zuklappen von uninteressanten Passagen ist eh Standard in VSCode...

Re: http Json Abfrage

Verfasst: 3. Apr 2020 12:31
von peter-pan
@udo1toni
Super !!! Hab ich natürlich gleich installiert. Funktioniert astrein :D . Und gleich noch 'ne Frage!: Welchen Formatter benutzt du ?

Re: http Json Abfrage

Verfasst: 3. Apr 2020 17:12
von udo1toni
peter-pan hat geschrieben: 3. Apr 2020 12:31 @udo1toni
Super !!! Hab ich natürlich gleich installiert. Funktioniert astrein :D . Und gleich noch 'ne Frage!: Welchen Formatter benutzt du ?
Puh... gute Frage... Da ich im Dienst bin, kann ich da jetzt leider nicht nachschauen. Ich hab nur im Kopf, dass es unübersichtlich viele waren...

Vielleicht war es Prettify JSON. Den Vorgang selbst muss man leider über Befehl auslösen.

Eventuell war es auch Beautify JSON. hmm...

Re: http Json Abfrage

Verfasst: 3. Apr 2020 17:31
von peter-pan
Danke für die Info. Hatte aber keine Eile. Ich googel mal ein bisschen.

Re: http Json Abfrage

Verfasst: 3. Apr 2020 23:19
von udo1toni
Es war Beautify JSON.

Im Kontextmenü steht dann auch ein Befehl Dokument formatieren zur Verfügung.

Re: http Json Abfrage

Verfasst: 3. Apr 2020 23:29
von peter-pan
Klasse, schau ich mir gleich mal an. Vielen Dank

Gruss - Peter

Hab's installiert - klappt einwandfrei. Super-Tipp !!!!