Manage the data from openweathermap

Hi!

I was wondering if someone could help me manage the msg.payload data from the 5 day forecast node openweathermap. What I would like to get out is the average temperature for the next 12 hours.

Cheers!

Hello @john8andersson, welcome to the forum.

The OWM 5 day forecast returns an array of 40 forecasts, 3 hourly for the next 5 days, like this:

{"cod":"200","message":0,"cnt":40,"list":[{"dt":1663891200,"main":{"temp":288.22,"feels_like":287.98,"temp_min":288.22,"temp_max":288.53,"pressure":1015,"sea_level":1015,"grnd_level":1013,"humidity":84,"temp_kf":-0.31},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":2.6,"deg":243,"gust":6.98},"visibility":10000,"pop":0.14,"sys":{"pod":"n"},"dt_txt":"2022-09-23 00:00:00"},{"dt":1663902000,"main":{"temp":288.08,"feels_like":287.87,"temp_min":287.81,"temp_max":288.08,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":86,"temp_kf":0.27},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"clouds":{"all":100},"wind":{"speed":2.07,"deg":220,"gust":5.15},"visibility":10000,"pop":0.67,"rain":{"3h":0.89},"sys":{"pod":"n"},"dt_txt":"2022-09-23 03:00:00"},{"dt":1663912800,"main":{"temp":288.03,"feels_like":287.92,"temp_min":287.93,"temp_max":288.03,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":90,"temp_kf":0.1},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":1.68,"deg":253,"gust":3.87},"visibility":10000,"pop":0.96,"rain":{"3h":0.79},"sys":{"pod":"d"},"dt_txt":"2022-09-23 06:00:00"},{"dt":1663923600,"main":{"temp":289.37,"feels_like":289.16,"temp_min":289.37,"temp_max":289.37,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":81,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":{"all":99},"wind":{"speed":1.75,"deg":340,"gust":2.46},"visibility":10000,"pop":0.39,"sys":{"pod":"d"},"dt_txt":"2022-09-23 09:00:00"},{"dt":1663934400,"main":{"temp":291.46,"feels_like":291.02,"temp_min":291.46,"temp_max":291.46,"pressure":1014,"sea_level":1014,"grnd_level":1012,"humidity":64,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":1.92,"deg":359,"gust":2.55},"visibility":10000,"pop":0.39,"rain":{"3h":0.25},"sys":{"pod":"d"},"dt_txt":"2022-09-23 12:00:00"},{"dt":1663945200,"main":{"temp":291.15,"feels_like":290.68,"temp_min":291.15,"temp_max":291.15,"pressure":1013,"sea_level":1013,"grnd_level":1011,"humidity":64,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":3.42,"deg":12,"gust":5.07},"visibility":10000,"pop":0.77,"rain":{"3h":0.93},"sys":{"pod":"d"},"dt_txt":"2022-09-23 15:00:00"},{"dt":1663956000,"main":{"temp":290.14,"feels_like":289.46,"temp_min":290.14,"temp_max":290.14,"pressure":1013,"sea_level":1013,"grnd_level":1011,"humidity":60,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"clouds":{"all":100},"wind":{"speed":2.46,"deg":6,"gust":6.39},"visibility":10000,"pop":0.67,"rain":{"3h":0.42},"sys":{"pod":"n"},"dt_txt":"2022-09-23 18:00:00"},{"dt":1663966800,"main":{"temp":287.98,"feels_like":287.16,"temp_min":287.98,"temp_max":287.98,"pressure":1014,"sea_level":1014,"grnd_level":1012,"humidity":63,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":2.87,"deg":22,"gust":7.94},"visibility":10000,"pop":0.06,"sys":{"pod":"n"},"dt_txt":"2022-09-23 21:00:00"},{"dt":1663977600,"main":{"temp":286.55,"feels_like":286.03,"temp_min":286.55,"temp_max":286.55,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":80,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":2.79,"deg":357,"gust":8.04},"visibility":10000,"pop":0.06,"sys":{"pod":"n"},"dt_txt":"2022-09-24 00:00:00"},{"dt":1663988400,"main":{"temp":285.77,"feels_like":285.31,"temp_min":285.77,"temp_max":285.77,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":85,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":2.97,"deg":351,"gust":7.92},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-24 03:00:00"},{"dt":1663999200,"main":{"temp":285.17,"feels_like":284.67,"temp_min":285.17,"temp_max":285.17,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":86,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":3.07,"deg":352,"gust":8.36},"visibility":10000,"pop":0.2,"rain":{"3h":0.12},"sys":{"pod":"d"},"dt_txt":"2022-09-24 06:00:00"},{"dt":1664010000,"main":{"temp":287.4,"feels_like":286.68,"temp_min":287.4,"temp_max":287.4,"pressure":1016,"sea_level":1016,"grnd_level":1013,"humidity":69,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":{"all":100},"wind":{"speed":3.86,"deg":360,"gust":7.07},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-24 09:00:00"},{"dt":1664020800,"main":{"temp":290.69,"feels_like":289.78,"temp_min":290.69,"temp_max":290.69,"pressure":1016,"sea_level":1016,"grnd_level":1013,"humidity":49,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":{"all":99},"wind":{"speed":4.33,"deg":7,"gust":6.04},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-24 12:00:00"},{"dt":1664031600,"main":{"temp":289.68,"feels_like":288.88,"temp_min":289.68,"temp_max":289.68,"pressure":1016,"sea_level":1016,"grnd_level":1013,"humidity":57,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":4.81,"deg":23,"gust":7.17},"visibility":10000,"pop":0.46,"rain":{"3h":0.58},"sys":{"pod":"d"},"dt_txt":"2022-09-24 15:00:00"},{"dt":1664042400,"main":{"temp":288,"feels_like":287.19,"temp_min":288,"temp_max":288,"pressure":1017,"sea_level":1017,"grnd_level":1014,"humidity":63,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"clouds":{"all":100},"wind":{"speed":4.32,"deg":23,"gust":8.25},"visibility":10000,"pop":0.32,"rain":{"3h":0.27},"sys":{"pod":"n"},"dt_txt":"2022-09-24 18:00:00"},{"dt":1664053200,"main":{"temp":286.49,"feels_like":285.76,"temp_min":286.49,"temp_max":286.49,"pressure":1018,"sea_level":1018,"grnd_level":1015,"humidity":72,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":4.63,"deg":17,"gust":9.55},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-24 21:00:00"},{"dt":1664064000,"main":{"temp":285.32,"feels_like":284.5,"temp_min":285.32,"temp_max":285.32,"pressure":1018,"sea_level":1018,"grnd_level":1015,"humidity":73,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":4.18,"deg":5,"gust":9.44},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-25 00:00:00"},{"dt":1664074800,"main":{"temp":283.97,"feels_like":283.17,"temp_min":283.97,"temp_max":283.97,"pressure":1018,"sea_level":1018,"grnd_level":1015,"humidity":79,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":91},"wind":{"speed":3.91,"deg":355,"gust":10.14},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-25 03:00:00"},{"dt":1664085600,"main":{"temp":283.04,"feels_like":281.21,"temp_min":283.04,"temp_max":283.04,"pressure":1018,"sea_level":1018,"grnd_level":1015,"humidity":81,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"clouds":{"all":72},"wind":{"speed":3.6,"deg":359,"gust":10.04},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-25 06:00:00"},{"dt":1664096400,"main":{"temp":286.48,"feels_like":285.62,"temp_min":286.48,"temp_max":286.48,"pressure":1018,"sea_level":1018,"grnd_level":1015,"humidity":67,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"clouds":{"all":0},"wind":{"speed":4.27,"deg":10,"gust":7.99},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-25 09:00:00"},{"dt":1664107200,"main":{"temp":289.63,"feels_like":288.67,"temp_min":289.63,"temp_max":289.63,"pressure":1017,"sea_level":1017,"grnd_level":1014,"humidity":51,"temp_kf":0},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"clouds":{"all":28},"wind":{"speed":3.62,"deg":12,"gust":4.56},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-25 12:00:00"},{"dt":1664118000,"main":{"temp":288.6,"feels_like":287.61,"temp_min":288.6,"temp_max":288.6,"pressure":1016,"sea_level":1016,"grnd_level":1013,"humidity":54,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":{"all":100},"wind":{"speed":2.44,"deg":358,"gust":3.3},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-25 15:00:00"},{"dt":1664128800,"main":{"temp":288.3,"feels_like":287.23,"temp_min":288.3,"temp_max":288.3,"pressure":1015,"sea_level":1015,"grnd_level":1012,"humidity":52,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":1.59,"deg":272,"gust":3.23},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-25 18:00:00"},{"dt":1664139600,"main":{"temp":286.5,"feels_like":285.33,"temp_min":286.5,"temp_max":286.5,"pressure":1014,"sea_level":1014,"grnd_level":1011,"humidity":55,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":2.5,"deg":250,"gust":6.69},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-25 21:00:00"},{"dt":1664150400,"main":{"temp":285.52,"feels_like":284.43,"temp_min":285.52,"temp_max":285.52,"pressure":1011,"sea_level":1011,"grnd_level":1008,"humidity":62,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":3.92,"deg":259,"gust":9.79},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-26 00:00:00"},{"dt":1664161200,"main":{"temp":284.84,"feels_like":283.84,"temp_min":284.84,"temp_max":284.84,"pressure":1007,"sea_level":1007,"grnd_level":1004,"humidity":68,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":99},"wind":{"speed":5.03,"deg":242,"gust":12.42},"visibility":10000,"pop":0.08,"sys":{"pod":"n"},"dt_txt":"2022-09-26 03:00:00"},{"dt":1664172000,"main":{"temp":284.55,"feels_like":283.99,"temp_min":284.55,"temp_max":284.55,"pressure":1003,"sea_level":1003,"grnd_level":1000,"humidity":86,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":96},"wind":{"speed":5.87,"deg":235,"gust":13.88},"visibility":10000,"pop":0.55,"rain":{"3h":0.73},"sys":{"pod":"d"},"dt_txt":"2022-09-26 06:00:00"},{"dt":1664182800,"main":{"temp":285.57,"feels_like":285.22,"temp_min":285.57,"temp_max":285.57,"pressure":1001,"sea_level":1001,"grnd_level":998,"humidity":90,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":100},"wind":{"speed":4.15,"deg":260,"gust":9.9},"visibility":10000,"pop":0.98,"rain":{"3h":1.42},"sys":{"pod":"d"},"dt_txt":"2022-09-26 09:00:00"},{"dt":1664193600,"main":{"temp":287.34,"feels_like":286.54,"temp_min":287.34,"temp_max":287.34,"pressure":1000,"sea_level":1000,"grnd_level":997,"humidity":66,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":86},"wind":{"speed":3.71,"deg":319,"gust":7.9},"visibility":10000,"pop":0.96,"rain":{"3h":0.44},"sys":{"pod":"d"},"dt_txt":"2022-09-26 12:00:00"},{"dt":1664204400,"main":{"temp":287.88,"feels_like":286.79,"temp_min":287.88,"temp_max":287.88,"pressure":1001,"sea_level":1001,"grnd_level":998,"humidity":53,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":78},"wind":{"speed":5.73,"deg":6,"gust":7.8},"visibility":10000,"pop":0.3,"rain":{"3h":0.34},"sys":{"pod":"d"},"dt_txt":"2022-09-26 15:00:00"},{"dt":1664215200,"main":{"temp":285.12,"feels_like":283.86,"temp_min":285.12,"temp_max":285.12,"pressure":1003,"sea_level":1003,"grnd_level":1001,"humidity":57,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":89},"wind":{"speed":4.97,"deg":345,"gust":9.2},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-26 18:00:00"},{"dt":1664226000,"main":{"temp":283.7,"feels_like":282.27,"temp_min":283.7,"temp_max":283.7,"pressure":1004,"sea_level":1004,"grnd_level":1002,"humidity":56,"temp_kf":0},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"clouds":{"all":44},"wind":{"speed":4.54,"deg":323,"gust":8.64},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-26 21:00:00"},{"dt":1664236800,"main":{"temp":281.94,"feels_like":279.23,"temp_min":281.94,"temp_max":281.94,"pressure":1005,"sea_level":1005,"grnd_level":1002,"humidity":61,"temp_kf":0},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"clouds":{"all":26},"wind":{"speed":5,"deg":313,"gust":9.55},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-27 00:00:00"},{"dt":1664247600,"main":{"temp":280.76,"feels_like":277.88,"temp_min":280.76,"temp_max":280.76,"pressure":1006,"sea_level":1006,"grnd_level":1003,"humidity":52,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"clouds":{"all":7},"wind":{"speed":4.71,"deg":309,"gust":10.37},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-27 03:00:00"},{"dt":1664258400,"main":{"temp":280.22,"feels_like":276.89,"temp_min":280.22,"temp_max":280.22,"pressure":1005,"sea_level":1005,"grnd_level":1003,"humidity":70,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"clouds":{"all":6},"wind":{"speed":5.43,"deg":294,"gust":10.88},"visibility":10000,"pop":0.02,"sys":{"pod":"d"},"dt_txt":"2022-09-27 06:00:00"},{"dt":1664269200,"main":{"temp":282.55,"feels_like":280.45,"temp_min":282.55,"temp_max":282.55,"pressure":1005,"sea_level":1005,"grnd_level":1003,"humidity":67,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"clouds":{"all":84},"wind":{"speed":3.92,"deg":286,"gust":11.25},"visibility":10000,"pop":0.08,"sys":{"pod":"d"},"dt_txt":"2022-09-27 09:00:00"},{"dt":1664280000,"main":{"temp":286.32,"feels_like":284.71,"temp_min":286.32,"temp_max":286.32,"pressure":1005,"sea_level":1005,"grnd_level":1002,"humidity":39,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"clouds":{"all":51},"wind":{"speed":7.3,"deg":309,"gust":11.34},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-27 12:00:00"},{"dt":1664290800,"main":{"temp":286.18,"feels_like":284.66,"temp_min":286.18,"temp_max":286.18,"pressure":1004,"sea_level":1004,"grnd_level":1001,"humidity":43,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"clouds":{"all":65},"wind":{"speed":6.11,"deg":297,"gust":11.63},"visibility":10000,"pop":0,"sys":{"pod":"d"},"dt_txt":"2022-09-27 15:00:00"},{"dt":1664301600,"main":{"temp":285.44,"feels_like":284.06,"temp_min":285.44,"temp_max":285.44,"pressure":1003,"sea_level":1003,"grnd_level":1000,"humidity":51,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"clouds":{"all":81},"wind":{"speed":3.04,"deg":253,"gust":8.1},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-27 18:00:00"},{"dt":1664312400,"main":{"temp":284.71,"feels_like":283.57,"temp_min":284.71,"temp_max":284.71,"pressure":1002,"sea_level":1002,"grnd_level":999,"humidity":63,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":100},"wind":{"speed":4.24,"deg":266,"gust":9.02},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2022-09-27 21:00:00"}],"city":{"id":2643743,"name":"London","coord":{"lat":51.5078,"lon":-0.1279},"country":"GB","population":1000000,"timezone":3600,"sunrise":1663912073,"sunset":1663955883}}

The forecast temp seems to be at payload.list[n].main.temp and I'm guessing 288.22 is in Kelvins, or else it's pretty warm in London.

So you need to add up payload.list[n].main.temp for n=0 to n=11?

I am sure there is a nice Jsonata expression to do this but I generally reach for a Function node, something like this

const datacount = 12;
let total = 0;
for (let i = 0; i<datacount; i++) {
    total += msg.payload.list[i].main.temp;
}
msg.payload = total / datacount;
return msg;

For the above data it gives me 288.2483333333334.

I use this information with an horizon of 15 hours in a function node exactly in same way, but if there is a Jsonata query doing the same, I would be curious to see it.

To get the average in celsius for next 24 hours the JSONata expression would be

$round(
   $average(
       [$$.payload.list[dt * 1000 > $millis() - 10800000]][[0..8]].main.(temp - 273.15)
   )
,2)

Thanks but I cant get this to work, just getting "TypeError": Cannot read properties of undefined (reading '0')"

Since I'm a total n00b at this I'm probably missing something very obvious.
In Node-read I have created a function node which is feed from the OWM 5day forecast node
image
image

Use a debug node to inspect the message coming from OpenWeatherMap.
Is msg.payload.list an array?
What does each element contain?

Got it working, cheers!!