Hallo - ich versuche aus einer API-Abfrage mittels JsonMod die Readings auszulesen (und wenn möglich dann auch noch von °F auf °C umzurechnen).
Das Json-File schaut wie folgt aus:
{"code":0,"msg":"success","time":"1722848586","data":{"outdoor":{"temperature":{"time":"1722848551","unit":"ºF","value":"66.4"},"feels_like":{"time":"1722848551","unit":"ºF","value":"66.4"},"app_temp":{"time":"1722848551","unit":"ºF","value":"65.0"},"dew_point":{"time":"1722848551","unit":"ºF","value":"57.1"},"humidity":{"time":"1722848551","unit":"%","value":"72"}},"indoor":{"temperature":{"time":"1722848551","unit":"ºF","value":"83.5"},"humidity":{"time":"1722848551","unit":"%","value":"32"}},"solar_and_uvi":{"solar":{"time":"1722848551","unit":"W\/m²","value":"138.4"},"uvi":{"time":"1722848551","unit":"","value":"1"}},"rainfall_piezo":{"rain_rate":{"time":"1722848551","unit":"in\/hr","value":"0.00"},"daily":{"time":"1722848551","unit":"in","value":"0.00"},"event":{"time":"1722848551","unit":"in","value":"0.00"},"hourly":{"time":"1722848551","unit":"in","value":"0.00"},"weekly":{"time":"1722848551","unit":"in","value":"0.00"},"monthly":{"time":"1722848551","unit":"in","value":"0.00"},"yearly":{"time":"1722848551","unit":"in","value":"0.00"}},"wind":{"wind_speed":{"time":"1722848551","unit":"mph","value":"6.5"},"wind_gust":{"time":"1722848551","unit":"mph","value":"7.8"},"wind_direction":{"time":"1722848551","unit":"º","value":"39"}},"pressure":{"relative":{"time":"1722848551","unit":"inHg","value":"25.83"},"absolute":{"time":"1722848551","unit":"inHg","value":"25.83"}},"lightning":{"count":{"time":"1722848551","unit":"","value":"0"}},"co2_aqi_combo":{"co2":{"time":"1722848551","unit":"ppm","value":"875"},"24_hours_average":{"time":"1722848551","unit":"ppm","value":"752"}},"pm25_aqi_combo":{"real_time_aqi":{"time":"1722848551","unit":"µg\/m³","value":"14"},"pm25":{"time":"1722848551","unit":"µg\/m³","value":"3"},"24_hours_aqi":{"time":"1722848551","unit":"µg\/m³","value":"12"}},"pm10_aqi_combo":{"real_time_aqi":{"time":"1722848551","unit":"µg\/m³","value":"3"},"pm10":{"time":"1722848551","unit":"µg\/m³","value":"3"},"24_hours_aqi":{"time":"1722848551","unit":"µg\/m³","value":"3"}},"pm1_aqi_combo":{"real_time_aqi":{"time":"1722848551","unit":"µg\/m³","value":"13"},"pm1":{"time":"1722848551","unit":"µg\/m³","value":"3"},"24_hours_aqi":{"time":"1722848551","unit":"µg\/m³","value":"11"}},"pm4_aqi_combo":{"real_time_aqi":{"time":"1722848551","unit":"µg\/m³","value":"14"},"pm4":{"time":"1722848551","unit":"µg\/m³","value":"3"},"24_hours_aqi":{"time":"1722848551","unit":"µg\/m³","value":"13"}},"t_rh_aqi_combo":{"temperature":{"time":"1722848551","unit":"ºF","value":"66.6"},"humidity":{"time":"1722848551","unit":"%","value":"63"}},"leaf_ch1":{"leaf_wetness":{"time":"1722848551","unit":"%","value":"0"}},"battery":{"haptic_array_battery":{"time":"1722848551","unit":"V","value":"3.20"},"haptic_array_capacitor":{"time":"1722848551","unit":"V","value":"5.3"},"lightning_sensor":{"time":"1722848551","unit":"","value":"5"},"aqi_combo_sensor":{"time":"1722848551","unit":"","value":"6"},"leaf_wetness_sensor_ch1":{"time":"1722848551","unit":"V","value":"1.62"}}}}
Ich hätte davon gerne als erstes den Wert für outdoor temperature: 66.4 (den ich dann in °C umrechnen möchte)
Mein attr readingList bisher:
attr ecowitt readingList single(jsonPath('$.[temperature].[value]'), 'value', '-?-');
funktionierte leider nicht.
ZitatJsonMod Hilfe für komplexe readings
Was ist denn daran bitteschön "komplex"?
Einfacher als in diesem Fall geht es doch kaum noch,
{"code":0,"msg":"success","time":"1722848586","data":{"outdoor":{"temperature":{"time":"1722848551","unit":"ºF","value":"66.4"}man braucht nur abzuschreiben:
readingList single (jsonPath('$.data.outdoor.temperature.value'),'value','-?-')
Und mit Konvertierung wird es auch nicht viel komplexer...
readingList single (round((jsonPath('$.data.outdoor.temperature.value')-32)*5/9,1),'value','-?-')
Besten Dank - es funktioniert.
Nur noch eine weitere (nicht-komplexe) Frage zur Umrechnung:
Ich möchte dem Luftdruck von inHg in hPA umrechnen.
Das hier:
readingList single (round(jsonPath('$.data.pressure.absolute.value')*33,8638815789),'hPA','-?-')
geht so leider nicht.
33,8638815789 => 33.8638815789
Zitat von: uwirt am 07 August 2024, 12:06:31geht so leider nicht.
das ist eine
ziemlich unsinnige wenig hilfreiche Problembeschreibung...
Was genau funktioniert denn nicht?
Hast Du eigentlich verstanden, was Dein Funktionsaufruf:
round( jsonPath('$.data.pressure.absolute.value')*33,8638815789 )
bewirkt bzw. tut?
Du gibst darin an, dass der aus jsonPath() ermittelte Wert mit 33 multipliziert werden soll.
Danach soll das Ergebnis auf 8638815789 Nachkommastellen gerundet werden... 8)
Übrigens...
Falsch:
Zitatin hPA umrechnen
Richtig:
Zitatin hPa umrechnen