Seite 1 von 1

Probleme mit jsonpath transformation

Verfasst: 24. Sep 2018 11:44
von calabi78
Hallo zusammen,

nach mehreren Fehlschlägen, habe ich eine Möglichkeit gefunden, meine Wetterdaten per HTTP Binding auszulesen. Ich benutze die API von openweathermap.

http.cfg:

Code: Alles auswählen

weatherowm.url=http://api.openweathermap.org/data/2.5/weather?q=Herbsleben,de&APPID=xxxxxxxxxxxxxxxxxxxxxxxxx&units=metric
weatherowm.updateInterval=600000
Die Seite sieht im Browser wie folgt aus.Ich bekomme soweit alle Daten, außer die rot umrandeten:
Json Aufruf OWM.jpg
.items:

Code: Alles auswählen

String openWeather_station "Ort" { http="<[weatherowm:60000:JSONPATH($.name)]" }
Number openWeather_temperature "Temperatur [%.2f °C]" { http="<[weatherowm:60000:JSONPATH($.main.temp)]" }
Number openWeather_pressure "Luftdruck [%d mBar]" { http="<[weatherowm:60000:JSONPATH($.main.pressure)]" }
Number openWeather_humidity "Luftfeuchtigkeit [%d %%]" { http="<[weatherowm:60000:JSONPATH($.main.humidity)]" }
Number openWeather_windspeed "Windgeschwindigkeit [%.2f km/h]" { http="<[weatherowm:60000:JSONPATH($.wind.speed)]" }
Number openWeather_winddeg "Windrichtung [%.2f]" { http="<[weatherowm:60000:JSONPATH($.wind.deg)]" }
Number openWeather_cloud "Bewölkung" { http="<[weatherowm:60000:JSONPATH($.clouds.all)]" }
String openWeather_weather "Wetter" { http="<[weatherowm:60000:JSONPATH($.weather.0.description)]" }
//Image openWeather_weathericon "Wetterbild" { http="<[weatherowm:60000:JSONPATH($.weather.0.icon)]" }
Number openWeather_temp_min "Temperatur min [%.2f °C]" { http="<[weatherowm:60000:JSONPATH($.main.temp_min)]" }
Number openWeather_temp_max "Temperatur min [%.2f °C]" { http="<[weatherowm:60000:JSONPATH($.main.temp_max)]" }
Für diesen Ort bringt er mir immer einen Fehler im Log, das der Pfad falsch ist:

Code: Alles auswählen

{ http="<[weatherowm:60000:JSONPATH($.weather.0.description)]" }
Allerdings liest er mir auf der http://www.jsonquerytool.com/Testseite die Daten korrekt aus.

Code: Alles auswählen

{"coord":{
    "lon":11.88,"lat":55.11
    },
"weather":[{
    "id":521,
    "main":"Rain",
    "description":"shower rain",
    "icon":"09d"
    }],
"base":"stations",
"main":{
    "temp":9,
    "pressure":1028,
    "humidity":70,
    "temp_min":9,
    "temp_max":9
    },
"visibility":10000,
"wind":{
    "speed":8.7,
    "deg":300
    },
"clouds":{
    "all":75
    },
"dt":1537779000,
"sys":{
    "type":1,
    "id":1234,
    "message":0.0025,
    "country":"DE",
    "sunrise":123456789,
    "sunset":123456789
    },
"id":2906185,
"name":"xxxxxx",
"cod":212
}

Code: Alles auswählen

$.weather.0.description

Code: Alles auswählen

[
    "shower rain"
]
Hat jemand eine Idee, warum das mit openhab nicht funktioniert?

Vielen Dank!
VG Torsten

Re: Probleme mit jsonpath transformation

Verfasst: 24. Sep 2018 23:22
von udo1toni
In diesem Fall ist 0 ein Index. Es müsste also

Code: Alles auswählen

{ http="<[weatherowm:60000:JSONPATH($.weather[0].description)]" }
heißen.

Re: Probleme mit jsonpath transformation

Verfasst: 2. Okt 2018 14:51
von calabi78
Danke dir, habe es beim nachlesen der json Definition auch entdeckt.

VG Torsten