Seite 1 von 1

Abfrage, ob ein bestimmter Wert in JSON vorhanden ist

Verfasst: 6. Jan 2021 17:02
von martin-h
Hallo zusammen,

ich speichere in der Variable "weatherstring" die Daten aus der One-Call-API der OpenWeatherMap ab. Absließend möchte ich einzelne Werte einigen Items zuweisen. Beispiel:

Code: Alles auswählen

postUpdate(LocalWeatherAndForecastForecastHours01SnowTest, transform("JSONPATH", "$.hourly.[1].snow.1h", weatherString))
Das funktioniert soweit ganz gut, wenn es im fraglichen Zeitraum schneit, denn dann befindet sich in meiner Variable folgender Text (Es handelt sich um den Auszug der Wetterdaten für eine Stunde):

Code: Alles auswählen

{"dt":1609938000,"temp":0,"feels_like":-5.2,"pressure":1009,"humidity":97,"dew_point":-0.37,"uvi":0.4,"clouds":75,"visibility":109,"wind_speed":4.5,"wind_deg":270,"weather":[{"id":601,"main":"Snow","description":"Schnee","icon":"13d"}],"pop":0.95,"snow":{"1h":0.54}},
Schneit es nicht, sehen die Wetterdaten von einer Stunde wiefolgt aus:

Code: Alles auswählen

{"dt":1609992000,"temp":-2.24,"feels_like":-6.72,"pressure":1017,"humidity":98,"dew_point":-2.86,"uvi":0,"clouds":96,"visibility":624,"wind_speed":3.08,"wind_deg":253,"weather":[{"id":804,"main":"Clouds","description":"Bedeckt","icon":"04n"}],"pop":0.64},
Sprich die Angabe "snow" am Ende fehlt und in der Logdatei erscheint folgender Eintrag:

Code: Alles auswählen

2021-01-06 16:06:22.334 [WARN ] [rthome.model.script.actions.BusEvent] - Cannot convert '{"lat":48.3994, >>vollständiger_Inhalt_der_Variable_weatherstring<< }]}' to a state type which item 'LocalWeatherAndForecastForecastHours01SnowTest' accepts: [DecimalType, QuantityType, UnDefType].
Gibt es eine Möglichkeit über eine Abfrage herauszufinden, ob es in einer bestimmten Stunde schneit, ohne dabei in der Logdatei eine Warung zu generieren und wenn ja, wie sieht diese Abfrage aus?

Viele Grüße
Martin

Re: Abfrage, ob ein bestimmter Wert in JSON vorhanden ist

Verfasst: 6. Jan 2021 17:19
von peter-pan
Warum nimmst du nicht das OWM-Binding bzw. das entsprechende Thing. OneCall ist doch schon integriert.

Re: Abfrage, ob ein bestimmter Wert in JSON vorhanden ist

Verfasst: 6. Jan 2021 17:24
von martin-h
Das ist auch eine gute Möglichkeit.
Als ich vor 2 Monaten mein System augesetzt habe, war OneCall noch nicht integriert.
Dann werde ich das Binding aktualisieren.
Vielen Dank für den Hinweis.