Abfrage, ob ein bestimmter Wert in JSON vorhanden ist

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
martin-h
Beiträge: 2
Registriert: 6. Jan 2021 16:20
Answers: 0

Abfrage, ob ein bestimmter Wert in JSON vorhanden ist

Beitrag 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

Benutzeravatar
peter-pan
Beiträge: 2770
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag von peter-pan »

Warum nimmst du nicht das OWM-Binding bzw. das entsprechende Thing. OneCall ist doch schon integriert.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

martin-h
Beiträge: 2
Registriert: 6. Jan 2021 16:20
Answers: 0

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

Beitrag 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.

Antworten