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