Files
MagicMirror/tests/mocks/weather_owm_forecast.json
Kristjan ESPERANTO 22a58d4ae5 fix(weather): restore OpenWeatherMap v2.5 support (#4101)
After the big weather refactor (#4032), OpenWeatherMap was effectively
hard-wired to One Call v3. One Call 2.5 is deprecated and no longer
available, so it looked like v2.5 support was effectively over — but the
classic `/weather` and `/forecast` endpoints were never actually
dropped. This restores support for those.

Fixes #4100.

## What this PR does
- handles OpenWeatherMap responses by endpoint again (`/onecall`,
`/weather`, `/forecast`)
- restores v2.5 current and forecast support (including hourly via
3-hour forecast slots)
- filters outdated hourly entries centrally while keeping the current
hour visible (if available)

## Screenshot
<img width="768" height="481" alt="bildo"
src="https://github.com/user-attachments/assets/9bce3531-3731-4fd7-b41e-e20603afa725"
/>
2026-04-10 22:20:41 +02:00

181 lines
6.4 KiB
JSON

{
"cod": "200",
"message": 0,
"cnt": 16,
"list": [
{
"dt": 1744156800,
"main": { "temp": -1.0, "feels_like": -4.0, "temp_min": -1.5, "temp_max": -0.5, "pressure": 1018, "humidity": 60 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 100 },
"wind": { "speed": 3.0, "deg": 210 },
"pop": 0.2,
"sys": { "pod": "n" },
"dt_txt": "2026-04-09 00:00:00"
},
{
"dt": 1744167600,
"main": { "temp": -1.2, "feels_like": -4.2, "temp_min": -1.5, "temp_max": -0.9, "pressure": 1018, "humidity": 62 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 100 },
"wind": { "speed": 3.1, "deg": 215 },
"pop": 0.2,
"sys": { "pod": "n" },
"dt_txt": "2026-04-09 03:00:00"
},
{
"dt": 1744178400,
"main": { "temp": -0.5, "feels_like": -3.5, "temp_min": -1.0, "temp_max": 0.0, "pressure": 1019, "humidity": 58 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04d" }],
"clouds": { "all": 95 },
"wind": { "speed": 2.8, "deg": 220 },
"pop": 0.3,
"sys": { "pod": "d" },
"dt_txt": "2026-04-09 06:00:00"
},
{
"dt": 1744189200,
"main": { "temp": 1.0, "feels_like": -2.0, "temp_min": 0.5, "temp_max": 1.5, "pressure": 1019, "humidity": 55 },
"weather": [{ "id": 500, "main": "Rain", "description": "light rain", "icon": "10d" }],
"clouds": { "all": 90 },
"wind": { "speed": 2.5, "deg": 225 },
"pop": 0.8,
"rain": { "3h": 0.6 },
"sys": { "pod": "d" },
"dt_txt": "2026-04-09 09:00:00"
},
{
"dt": 1744200000,
"main": { "temp": 2.0, "feels_like": -1.0, "temp_min": 1.5, "temp_max": 2.5, "pressure": 1018, "humidity": 52 },
"weather": [{ "id": 500, "main": "Rain", "description": "light rain", "icon": "10d" }],
"clouds": { "all": 88 },
"wind": { "speed": 2.4, "deg": 230 },
"pop": 0.9,
"rain": { "3h": 0.6 },
"sys": { "pod": "d" },
"dt_txt": "2026-04-09 12:00:00"
},
{
"dt": 1744210800,
"main": { "temp": 1.5, "feels_like": -1.5, "temp_min": 1.0, "temp_max": 2.0, "pressure": 1018, "humidity": 54 },
"weather": [{ "id": 500, "main": "Rain", "description": "light rain", "icon": "10d" }],
"clouds": { "all": 90 },
"wind": { "speed": 2.6, "deg": 228 },
"pop": 0.8,
"sys": { "pod": "d" },
"dt_txt": "2026-04-09 15:00:00"
},
{
"dt": 1744221600,
"main": { "temp": 0.8, "feels_like": -2.2, "temp_min": 0.5, "temp_max": 1.2, "pressure": 1018, "humidity": 57 },
"weather": [{ "id": 500, "main": "Rain", "description": "light rain", "icon": "10d" }],
"clouds": { "all": 92 },
"wind": { "speed": 2.7, "deg": 222 },
"pop": 0.6,
"sys": { "pod": "d" },
"dt_txt": "2026-04-09 18:00:00"
},
{
"dt": 1744232400,
"main": { "temp": -0.2, "feels_like": -3.2, "temp_min": -0.5, "temp_max": 0.1, "pressure": 1019, "humidity": 60 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 95 },
"wind": { "speed": 2.9, "deg": 218 },
"pop": 0.3,
"sys": { "pod": "n" },
"dt_txt": "2026-04-09 21:00:00"
},
{
"dt": 1744243200,
"main": { "temp": 0.5, "feels_like": -2.5, "temp_min": 0.0, "temp_max": 1.0, "pressure": 1020, "humidity": 58 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 85 },
"wind": { "speed": 2.5, "deg": 200 },
"pop": 0.1,
"sys": { "pod": "n" },
"dt_txt": "2026-04-10 00:00:00"
},
{
"dt": 1744254000,
"main": { "temp": 1.0, "feels_like": -2.0, "temp_min": 0.5, "temp_max": 1.5, "pressure": 1021, "humidity": 56 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 80 },
"wind": { "speed": 2.3, "deg": 205 },
"pop": 0.1,
"sys": { "pod": "n" },
"dt_txt": "2026-04-10 03:00:00"
},
{
"dt": 1744264800,
"main": { "temp": 2.0, "feels_like": -1.0, "temp_min": 1.5, "temp_max": 2.5, "pressure": 1021, "humidity": 53 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04d" }],
"clouds": { "all": 75 },
"wind": { "speed": 2.1, "deg": 210 },
"pop": 0.1,
"sys": { "pod": "d" },
"dt_txt": "2026-04-10 06:00:00"
},
{
"dt": 1744275600,
"main": { "temp": 3.5, "feels_like": 0.5, "temp_min": 3.0, "temp_max": 4.0, "pressure": 1020, "humidity": 50 },
"weather": [{ "id": 520, "main": "Rain", "description": "light shower rain", "icon": "09d" }],
"clouds": { "all": 70 },
"wind": { "speed": 2.0, "deg": 215 },
"pop": 0.5,
"snow": { "3h": 0.5 },
"sys": { "pod": "d" },
"dt_txt": "2026-04-10 09:00:00"
},
{
"dt": 1744286400,
"main": { "temp": 5.0, "feels_like": 2.0, "temp_min": 4.5, "temp_max": 5.5, "pressure": 1019, "humidity": 48 },
"weather": [{ "id": 520, "main": "Rain", "description": "light shower rain", "icon": "09d" }],
"clouds": { "all": 65 },
"wind": { "speed": 1.9, "deg": 220 },
"pop": 0.4,
"sys": { "pod": "d" },
"dt_txt": "2026-04-10 12:00:00"
},
{
"dt": 1744297200,
"main": { "temp": 4.5, "feels_like": 1.5, "temp_min": 4.0, "temp_max": 5.0, "pressure": 1019, "humidity": 50 },
"weather": [{ "id": 520, "main": "Rain", "description": "light shower rain", "icon": "09d" }],
"clouds": { "all": 68 },
"wind": { "speed": 2.0, "deg": 218 },
"pop": 0.4,
"sys": { "pod": "d" },
"dt_txt": "2026-04-10 15:00:00"
},
{
"dt": 1744308000,
"main": { "temp": 3.0, "feels_like": 0.0, "temp_min": 2.5, "temp_max": 3.5, "pressure": 1019, "humidity": 53 },
"weather": [{ "id": 520, "main": "Rain", "description": "light shower rain", "icon": "09d" }],
"clouds": { "all": 72 },
"wind": { "speed": 2.1, "deg": 212 },
"pop": 0.3,
"sys": { "pod": "d" },
"dt_txt": "2026-04-10 18:00:00"
},
{
"dt": 1744318800,
"main": { "temp": 1.5, "feels_like": -1.5, "temp_min": 1.0, "temp_max": 2.0, "pressure": 1020, "humidity": 56 },
"weather": [{ "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04n" }],
"clouds": { "all": 80 },
"wind": { "speed": 2.2, "deg": 208 },
"pop": 0.2,
"sys": { "pod": "n" },
"dt_txt": "2026-04-10 21:00:00"
}
],
"city": {
"id": 2867714,
"name": "Munich",
"coord": { "lat": 48.14, "lon": 11.58 },
"country": "DE",
"population": 1260391,
"timezone": 0,
"sunrise": 1744170000,
"sunset": 1744218000
}
}