Files
MagicMirror/tests/mocks/weather_pirateweather.json
Kristjan ESPERANTO 8ce0cda7bf [weather] refactor: migrate to server-side providers with centralized HTTPFetcher (#4032)
This migrates the Weather module from client-side fetching to use the
server-side centralized HTTPFetcher (introduced in #4016), following the
same pattern as the Calendar and Newsfeed modules.

## Motivation

This brings consistent error handling and better maintainability and
completes the refactoring effort to centralize HTTP error handling
across all default modules.

Migrating to server-side providers with HTTPFetcher brings:
- **Centralized error handling**: Inherits smart retry strategies
(401/403, 429, 5xx backoff) and timeout handling (30s)
- **Consistency**: Same architecture as Calendar and Newsfeed modules
- **Security**: Possibility to hide API keys/secrets from client-side
- **Performance**: Reduced API calls in multi-client setups - one server
fetch instead of one per client
- **Enabling possible future features**: e.g. server-side caching, rate
limit monitoring, and data sharing with third-party modules

## Changes

- All 10 weather providers now use HTTPFetcher for server-side fetching
- Consistent error handling like Calendar and Newsfeed modules

## Breaking Changes

None. Existing configurations continue to work.

## Testing

To ensure proper functionality, I obtained API keys and credentials for
all providers that require them. I configured all 10 providers in a
carousel setup and tested each one individually. Screenshots for each
provider are attached below demonstrating their working state.

I even requested developer access from the Tempest/WeatherFlow team to
properly test this provider.

**Comprehensive test coverage**: A major advantage of the server-side
architecture is the ability to thoroughly test providers with unit tests
using real API response snapshots. Don't be alarmed by the many lines
added in this PR - they are primarily test files and real-data mocks
that ensure provider reliability.

## Review Notes

I know this is an enormous change - I've been working on this for quite
some time. Unfortunately, breaking it into smaller incremental PRs
wasn't feasible due to the interdependencies between providers and the
shared architecture.

Given the scope, it's nearly impossible to manually review every change.
To ensure quality, I've used both CodeRabbit and GitHub Copilot to
review the code multiple times in my fork, and both provided extensive
and valuable feedback. Most importantly, my test setup with all 10
providers working successfully is very encouraging.

## Related

Part of the HTTPFetcher migration #4016.

## Screenshots

<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-06-54"
src="https://github.com/user-attachments/assets/2139f4d2-2a9b-4e49-8d0a-e4436983ed6e"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-02"
src="https://github.com/user-attachments/assets/880f7ce2-4e44-42d5-bfe4-5ce475cca7c2"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-07"
src="https://github.com/user-attachments/assets/abd89933-fe03-40ab-8a7c-41ae1ff99255"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-12"
src="https://github.com/user-attachments/assets/22225852-f0a9-4d33-87ab-0733ba30fad3"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-17"
src="https://github.com/user-attachments/assets/7a7192a5-f237-4060-85d7-6f50b9bef5af"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-22"
src="https://github.com/user-attachments/assets/df84d9f1-e531-4995-8da8-d6f2601b6a08"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-27"
src="https://github.com/user-attachments/assets/4cf391ac-db43-4b52-95f4-f5eadc5ea34d"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-32"
src="https://github.com/user-attachments/assets/8dd8e688-d47f-4815-87f6-7f2630f15d58"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-37"
src="https://github.com/user-attachments/assets/ee84a8bc-6b35-405a-b311-88658d9268dd"
/>
<img width="1920" height="1080" alt="Ekrankopio de 2026-02-08 13-07-42"
src="https://github.com/user-attachments/assets/f941f341-453f-4d4d-a8d9-6b9158eb2681"
/>

Provider "Weather API" added later:

<img width="1910" height="1080" alt="Ekrankopio de 2026-02-15 19-39-06"
src="https://github.com/user-attachments/assets/3f0c8ba3-105c-4f90-8b2e-3a1be543d3d2"
/>
2026-02-23 10:27:29 +01:00

1666 lines
50 KiB
JSON

{
"latitude": 40.7128,
"longitude": -74.006,
"timezone": "America/New_York",
"offset": -5.0,
"elevation": 19,
"currently": {
"time": 1770414300,
"summary": "Overcast",
"icon": "cloudy",
"nearestStormDistance": 115.95,
"nearestStormBearing": 233,
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipType": "none",
"temperature": -0.26,
"apparentTemperature": -4.77,
"dewPoint": -7.89,
"humidity": 0.56,
"pressure": 1004.92,
"windSpeed": 2.32,
"windGust": 3.2,
"windBearing": 166,
"cloudCover": 0.97,
"uvIndex": 0.54,
"visibility": 16.09,
"ozone": 401.41
},
"minutely": {
"summary": "Overcast for the hour.",
"icon": "cloudy",
"data": [
{ "time": 1770414300, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414360, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414420, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414480, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414540, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414600, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414660, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414720, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414780, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414840, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414900, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770414960, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415020, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415080, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415140, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415200, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415260, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415320, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415380, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415440, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415500, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415560, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415620, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415680, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415740, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415800, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415860, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415920, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770415980, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416040, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416100, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416160, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416220, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416280, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416340, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416400, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416460, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416520, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416580, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416640, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416700, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416760, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416820, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416880, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770416940, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417000, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417060, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417120, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417180, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417240, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417300, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417360, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417420, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417480, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417540, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417600, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417660, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417720, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417780, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417840, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" },
{ "time": 1770417900, "precipIntensity": 0.0, "precipProbability": 0.0, "precipIntensityError": 0.0, "precipType": "none" }
]
},
"hourly": {
"summary": "Hazy tonight and windy starting tomorrow morning.",
"icon": "fog",
"data": [
{
"time": 1770411600,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.16,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.19,
"apparentTemperature": -6.47,
"dewPoint": -6.77,
"humidity": 0.7,
"pressure": 1005.22,
"windSpeed": 3.6,
"windGust": 4.7,
"windBearing": 200,
"cloudCover": 0.77,
"uvIndex": 1.12,
"visibility": 16.09,
"ozone": 402.15,
"nearestStormDistance": 108.83,
"nearestStormBearing": 258
},
{
"time": 1770415200,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.16,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.11,
"apparentTemperature": -6.3,
"dewPoint": -6.64,
"humidity": 0.71,
"pressure": 1004.82,
"windSpeed": 3.6,
"windGust": 4.77,
"windBearing": 207,
"cloudCover": 0.8,
"uvIndex": 0.35,
"visibility": 14.72,
"ozone": 401.17,
"nearestStormDistance": 118.33,
"nearestStormBearing": 233
},
{
"time": 1770418800,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-night",
"precipIntensity": 0.0,
"precipProbability": 0.16,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.02,
"apparentTemperature": -6.13,
"dewPoint": -6.5,
"humidity": 0.71,
"pressure": 1004.19,
"windSpeed": 3.6,
"windGust": 4.83,
"windBearing": 213,
"cloudCover": 0.83,
"uvIndex": 0.01,
"visibility": 13.18,
"ozone": 403.38,
"nearestStormDistance": 63.25,
"nearestStormBearing": 270
},
{
"time": 1770422400,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-night",
"precipIntensity": 0.0,
"precipProbability": 0.16,
"precipIntensityError": 0.02,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -1.94,
"apparentTemperature": -5.96,
"dewPoint": -6.37,
"humidity": 0.72,
"pressure": 1004.33,
"windSpeed": 3.6,
"windGust": 4.9,
"windBearing": 220,
"cloudCover": 0.86,
"uvIndex": 0.0,
"visibility": 11.65,
"ozone": 406.37,
"nearestStormDistance": 34.89,
"nearestStormBearing": 225
},
{
"time": 1770426000,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-night",
"precipIntensity": 0.0,
"precipProbability": 0.22,
"precipIntensityError": 0.02,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -1.87,
"apparentTemperature": -6.11,
"dewPoint": -6.26,
"humidity": 0.73,
"pressure": 1003.94,
"windSpeed": 3.6,
"windGust": 4.93,
"windBearing": 223,
"cloudCover": 0.87,
"uvIndex": 0.0,
"visibility": 8.58,
"ozone": 408.33,
"nearestStormDistance": 21.08,
"nearestStormBearing": 270
},
{
"time": 1770429600,
"summary": "Overcast",
"icon": "cloudy",
"precipIntensity": 0.0,
"precipProbability": 0.27,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -1.79,
"apparentTemperature": -6.25,
"dewPoint": -6.15,
"humidity": 0.73,
"pressure": 1003.89,
"windSpeed": 3.6,
"windGust": 4.97,
"windBearing": 227,
"cloudCover": 0.88,
"uvIndex": 0.0,
"visibility": 5.5,
"ozone": 405.87,
"nearestStormDistance": 34.89,
"nearestStormBearing": 135
},
{
"time": 1770433200,
"summary": "Hazy",
"icon": "fog",
"precipIntensity": 0.0,
"precipProbability": 0.33,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -1.72,
"apparentTemperature": -6.4,
"dewPoint": -6.04,
"humidity": 0.74,
"pressure": 1003.77,
"windSpeed": 3.6,
"windGust": 5.0,
"windBearing": 230,
"cloudCover": 0.89,
"uvIndex": 0.0,
"visibility": 2.43,
"ozone": 406.71,
"nearestStormDistance": 21.08,
"nearestStormBearing": 90
},
{
"time": 1770436800,
"summary": "Hazy",
"icon": "fog",
"precipIntensity": 0.0,
"precipProbability": 0.33,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -1.89,
"apparentTemperature": -6.74,
"dewPoint": -6.17,
"humidity": 0.74,
"pressure": 1003.03,
"windSpeed": 3.87,
"windGust": 5.4,
"windBearing": 237,
"cloudCover": 0.86,
"uvIndex": 0.0,
"visibility": 2.73,
"ozone": 403.27,
"nearestStormDistance": 84.33,
"nearestStormBearing": 90
},
{
"time": 1770440400,
"summary": "Hazy",
"icon": "fog",
"precipIntensity": 0.0,
"precipProbability": 0.33,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.05,
"apparentTemperature": -7.07,
"dewPoint": -6.3,
"humidity": 0.73,
"pressure": 1002.42,
"windSpeed": 4.13,
"windGust": 5.8,
"windBearing": 243,
"cloudCover": 0.84,
"uvIndex": 0.0,
"visibility": 3.03,
"ozone": 408.05,
"nearestStormDistance": 105.41,
"nearestStormBearing": 90
},
{
"time": 1770444000,
"summary": "Hazy",
"icon": "fog",
"precipIntensity": 0.0,
"precipProbability": 0.33,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.22,
"apparentTemperature": -7.41,
"dewPoint": -6.43,
"humidity": 0.73,
"pressure": 1001.45,
"windSpeed": 4.4,
"windGust": 6.2,
"windBearing": 250,
"cloudCover": 0.81,
"uvIndex": 0.0,
"visibility": 3.33,
"ozone": 412.89,
"nearestStormDistance": 118.85,
"nearestStormBearing": 111
},
{
"time": 1770447600,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-night",
"precipIntensity": 0.0,
"precipProbability": 0.29,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.58,
"apparentTemperature": -8.29,
"dewPoint": -6.62,
"humidity": 0.74,
"pressure": 1000.84,
"windSpeed": 5.33,
"windGust": 7.5,
"windBearing": 260,
"cloudCover": 0.8,
"uvIndex": 0.0,
"visibility": 5.6,
"ozone": 417.97,
"nearestStormDistance": 118.85,
"nearestStormBearing": 111
},
{
"time": 1770451200,
"summary": "Mostly Cloudy",
"icon": "partly-cloudy-night",
"precipIntensity": 0.0,
"precipProbability": 0.24,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -2.95,
"apparentTemperature": -9.17,
"dewPoint": -6.82,
"humidity": 0.75,
"pressure": 1000.63,
"windSpeed": 6.27,
"windGust": 8.8,
"windBearing": 270,
"cloudCover": 0.78,
"uvIndex": 0.0,
"visibility": 8.4,
"ozone": 417.69,
"nearestStormDistance": 118.85,
"nearestStormBearing": 111
},
{
"time": 1770454800,
"summary": "Breezy and Mostly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.2,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -3.31,
"apparentTemperature": -10.05,
"dewPoint": -7.01,
"humidity": 0.76,
"pressure": 1000.26,
"windSpeed": 7.2,
"windGust": 10.1,
"windBearing": 280,
"cloudCover": 0.77,
"uvIndex": 0.0,
"visibility": 2.3,
"ozone": 416.64,
"nearestStormDistance": 55.66,
"nearestStormBearing": 180
},
{
"time": 1770458400,
"summary": "Breezy and Mostly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.2,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -4.07,
"apparentTemperature": -11.46,
"dewPoint": -8.19,
"humidity": 0.73,
"pressure": 1000.86,
"windSpeed": 8.13,
"windGust": 11.13,
"windBearing": 287,
"cloudCover": 0.73,
"uvIndex": 0.0,
"visibility": 2.5,
"ozone": 430.55,
"nearestStormDistance": 59.55,
"nearestStormBearing": 333
},
{
"time": 1770462000,
"summary": "Breezy and Mostly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.2,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -4.82,
"apparentTemperature": -12.87,
"dewPoint": -9.36,
"humidity": 0.71,
"pressure": 1001.53,
"windSpeed": 9.07,
"windGust": 12.17,
"windBearing": 293,
"cloudCover": 0.69,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 444.39,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770465600,
"summary": "Windy and Mostly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.2,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -5.58,
"apparentTemperature": -14.28,
"dewPoint": -10.54,
"humidity": 0.68,
"pressure": 1002.21,
"windSpeed": 10.0,
"windGust": 13.2,
"windBearing": 300,
"cloudCover": 0.65,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 445.07,
"nearestStormDistance": 101.31,
"nearestStormBearing": 63
},
{
"time": 1770469200,
"summary": "Windy and Partly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.16,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -6.72,
"apparentTemperature": -15.95,
"dewPoint": -11.67,
"humidity": 0.68,
"pressure": 1003.26,
"windSpeed": 10.4,
"windGust": 14.17,
"windBearing": 303,
"cloudCover": 0.57,
"uvIndex": 0.21,
"visibility": 16.09,
"ozone": 446.52,
"nearestStormDistance": 118.85,
"nearestStormBearing": 111
},
{
"time": 1770472800,
"summary": "Windy and Partly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.11,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -7.85,
"apparentTemperature": -17.63,
"dewPoint": -12.79,
"humidity": 0.68,
"pressure": 1003.8,
"windSpeed": 10.8,
"windGust": 15.13,
"windBearing": 307,
"cloudCover": 0.49,
"uvIndex": 1.08,
"visibility": 16.09,
"ozone": 451.89,
"nearestStormDistance": 68.99,
"nearestStormBearing": 108
},
{
"time": 1770476400,
"summary": "Windy and Partly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.07,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -8.99,
"apparentTemperature": -19.3,
"dewPoint": -13.92,
"humidity": 0.68,
"pressure": 1004.89,
"windSpeed": 11.2,
"windGust": 16.1,
"windBearing": 310,
"cloudCover": 0.41,
"uvIndex": 2.15,
"visibility": 6.5,
"ozone": 449.97,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770480000,
"summary": "Windy and Partly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.07,
"precipIntensityError": 0.04,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.07,
"apparentTemperature": -19.26,
"dewPoint": -14.3,
"humidity": 0.66,
"pressure": 1005.63,
"windSpeed": 11.07,
"windGust": 16.07,
"windBearing": 313,
"cloudCover": 0.39,
"uvIndex": 2.87,
"visibility": 4.3,
"ozone": 447.68,
"nearestStormDistance": 129.75,
"nearestStormBearing": 80
},
{
"time": 1770483600,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.07,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.14,
"apparentTemperature": -19.23,
"dewPoint": -14.68,
"humidity": 0.64,
"pressure": 1006.14,
"windSpeed": 10.93,
"windGust": 16.03,
"windBearing": 317,
"cloudCover": 0.36,
"uvIndex": 3.23,
"visibility": 9.5,
"ozone": 460.33,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770487200,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.07,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.22,
"apparentTemperature": -19.19,
"dewPoint": -15.06,
"humidity": 0.62,
"pressure": 1006.64,
"windSpeed": 10.8,
"windGust": 16.0,
"windBearing": 320,
"cloudCover": 0.34,
"uvIndex": 3.23,
"visibility": 16.09,
"ozone": 466.32,
"nearestStormDistance": 84.43,
"nearestStormBearing": 56
},
{
"time": 1770490800,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.06,
"precipIntensityError": 0.03,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.12,
"apparentTemperature": -19.17,
"dewPoint": -15.37,
"humidity": 0.6,
"pressure": 1007.56,
"windSpeed": 10.93,
"windGust": 16.2,
"windBearing": 320,
"cloudCover": 0.31,
"uvIndex": 2.88,
"visibility": 16.09,
"ozone": 461.77,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770494400,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.05,
"precipIntensityError": 0.02,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.02,
"apparentTemperature": -19.16,
"dewPoint": -15.67,
"humidity": 0.57,
"pressure": 1008.89,
"windSpeed": 11.07,
"windGust": 16.4,
"windBearing": 320,
"cloudCover": 0.28,
"uvIndex": 2.08,
"visibility": 16.09,
"ozone": 460.11,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770498000,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.02,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -8.92,
"apparentTemperature": -19.14,
"dewPoint": -15.98,
"humidity": 0.55,
"pressure": 1009.92,
"windSpeed": 11.2,
"windGust": 16.6,
"windBearing": 320,
"cloudCover": 0.25,
"uvIndex": 1.23,
"visibility": 16.09,
"ozone": 464.16,
"nearestStormDistance": 163.12,
"nearestStormBearing": 38
},
{
"time": 1770501600,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.09,
"apparentTemperature": -19.43,
"dewPoint": -16.42,
"humidity": 0.54,
"pressure": 1011.26,
"windSpeed": 11.33,
"windGust": 16.13,
"windBearing": 320,
"cloudCover": 0.23,
"uvIndex": 0.43,
"visibility": 16.09,
"ozone": 482.48,
"nearestStormDistance": 129.29,
"nearestStormBearing": 99
},
{
"time": 1770505200,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.25,
"apparentTemperature": -19.71,
"dewPoint": -16.86,
"humidity": 0.53,
"pressure": 1013.04,
"windSpeed": 11.47,
"windGust": 15.67,
"windBearing": 320,
"cloudCover": 0.22,
"uvIndex": 0.01,
"visibility": 16.09,
"ozone": 484.32,
"nearestStormDistance": 105.41,
"nearestStormBearing": 90
},
{
"time": 1770508800,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.42,
"apparentTemperature": -20.0,
"dewPoint": -17.3,
"humidity": 0.52,
"pressure": 1014.7,
"windSpeed": 11.6,
"windGust": 15.2,
"windBearing": 320,
"cloudCover": 0.2,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 476.4,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770512400,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.84,
"apparentTemperature": -20.51,
"dewPoint": -17.58,
"humidity": 0.53,
"pressure": 1015.83,
"windSpeed": 11.2,
"windGust": 14.73,
"windBearing": 320,
"cloudCover": 0.2,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 488.47,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770516000,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -10.26,
"apparentTemperature": -21.02,
"dewPoint": -17.87,
"humidity": 0.53,
"pressure": 1016.42,
"windSpeed": 10.8,
"windGust": 14.27,
"windBearing": 320,
"cloudCover": 0.19,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 488.94,
"nearestStormDistance": 42.17,
"nearestStormBearing": 90
},
{
"time": 1770519600,
"summary": "Windy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.02,
"precipAccumulation": 0.0,
"precipType": "none",
"temperature": -10.68,
"apparentTemperature": -21.53,
"dewPoint": -18.15,
"humidity": 0.54,
"pressure": 1017.26,
"windSpeed": 10.4,
"windGust": 13.8,
"windBearing": 320,
"cloudCover": 0.19,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 476.31,
"nearestStormDistance": 63.25,
"nearestStormBearing": 90
},
{
"time": 1770523200,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "none",
"temperature": -11.0,
"apparentTemperature": -21.6,
"dewPoint": -18.21,
"humidity": 0.55,
"pressure": 1017.96,
"windSpeed": 9.87,
"windGust": 13.07,
"windBearing": 320,
"cloudCover": 0.19,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 472.62,
"nearestStormDistance": 84.43,
"nearestStormBearing": 56
},
{
"time": 1770526800,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "none",
"temperature": -11.31,
"apparentTemperature": -21.67,
"dewPoint": -18.28,
"humidity": 0.55,
"pressure": 1018.54,
"windSpeed": 9.33,
"windGust": 12.33,
"windBearing": 320,
"cloudCover": 0.18,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 473.0,
"nearestStormDistance": 104.96,
"nearestStormBearing": 45
},
{
"time": 1770530400,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "none",
"temperature": -11.63,
"apparentTemperature": -21.74,
"dewPoint": -18.34,
"humidity": 0.56,
"pressure": 1018.94,
"windSpeed": 8.8,
"windGust": 11.6,
"windBearing": 320,
"cloudCover": 0.18,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 471.38,
"nearestStormDistance": 128.27,
"nearestStormBearing": 36
},
{
"time": 1770534000,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -11.85,
"apparentTemperature": -21.99,
"dewPoint": -18.42,
"humidity": 0.57,
"pressure": 1019.57,
"windSpeed": 8.53,
"windGust": 11.43,
"windBearing": 320,
"cloudCover": 0.2,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 469.74,
"nearestStormDistance": 163.12,
"nearestStormBearing": 38
},
{
"time": 1770537600,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.08,
"apparentTemperature": -22.23,
"dewPoint": -18.51,
"humidity": 0.58,
"pressure": 1020.57,
"windSpeed": 8.27,
"windGust": 11.27,
"windBearing": 320,
"cloudCover": 0.22,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 469.32,
"nearestStormDistance": 198.1,
"nearestStormBearing": 39
},
{
"time": 1770541200,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.3,
"apparentTemperature": -22.48,
"dewPoint": -18.59,
"humidity": 0.59,
"pressure": 1020.96,
"windSpeed": 8.0,
"windGust": 11.1,
"windBearing": 320,
"cloudCover": 0.24,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 470.4,
"nearestStormDistance": 210.33,
"nearestStormBearing": 45
},
{
"time": 1770544800,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.29,
"apparentTemperature": -22.26,
"dewPoint": -18.48,
"humidity": 0.6,
"pressure": 1021.44,
"windSpeed": 7.73,
"windGust": 10.67,
"windBearing": 317,
"cloudCover": 0.26,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 467.82,
"nearestStormDistance": 223.94,
"nearestStormBearing": 49
},
{
"time": 1770548400,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.29,
"apparentTemperature": -22.05,
"dewPoint": -18.38,
"humidity": 0.61,
"pressure": 1021.88,
"windSpeed": 7.47,
"windGust": 10.23,
"windBearing": 313,
"cloudCover": 0.27,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 467.33,
"nearestStormDistance": 222.15,
"nearestStormBearing": 35
},
{
"time": 1770552000,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.28,
"apparentTemperature": -21.83,
"dewPoint": -18.27,
"humidity": 0.62,
"pressure": 1022.51,
"windSpeed": 7.2,
"windGust": 9.8,
"windBearing": 310,
"cloudCover": 0.29,
"uvIndex": 0.0,
"visibility": 16.09,
"ozone": 470.61,
"nearestStormDistance": 222.15,
"nearestStormBearing": 35
},
{
"time": 1770555600,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -12.06,
"apparentTemperature": -21.37,
"dewPoint": -17.87,
"humidity": 0.63,
"pressure": 1023.17,
"windSpeed": 7.07,
"windGust": 9.83,
"windBearing": 313,
"cloudCover": 0.32,
"uvIndex": 0.23,
"visibility": 16.09,
"ozone": 475.74,
"nearestStormDistance": 198.1,
"nearestStormBearing": 39
},
{
"time": 1770559200,
"summary": "Breezy and Mostly Clear",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.0,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -11.85,
"apparentTemperature": -20.92,
"dewPoint": -17.48,
"humidity": 0.63,
"pressure": 1023.18,
"windSpeed": 6.93,
"windGust": 9.87,
"windBearing": 317,
"cloudCover": 0.35,
"uvIndex": 1.09,
"visibility": 16.09,
"ozone": 473.89,
"nearestStormDistance": 210.33,
"nearestStormBearing": 45
},
{
"time": 1770562800,
"summary": "Breezy and Partly Cloudy",
"icon": "wind",
"precipIntensity": 0.0,
"precipProbability": 0.05,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -11.63,
"apparentTemperature": -20.46,
"dewPoint": -17.08,
"humidity": 0.64,
"pressure": 1023.83,
"windSpeed": 6.8,
"windGust": 9.9,
"windBearing": 320,
"cloudCover": 0.38,
"uvIndex": 2.2,
"visibility": 16.09,
"ozone": 467.51,
"nearestStormDistance": 233.17,
"nearestStormBearing": 40
},
{
"time": 1770566400,
"summary": "Partly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.05,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -10.88,
"apparentTemperature": -19.39,
"dewPoint": -16.45,
"humidity": 0.64,
"pressure": 1024.02,
"windSpeed": 6.53,
"windGust": 9.77,
"windBearing": 317,
"cloudCover": 0.41,
"uvIndex": 3.21,
"visibility": 16.09,
"ozone": 453.24,
"nearestStormDistance": 233.17,
"nearestStormBearing": 40
},
{
"time": 1770570000,
"summary": "Partly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.05,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -10.12,
"apparentTemperature": -18.31,
"dewPoint": -15.82,
"humidity": 0.63,
"pressure": 1023.84,
"windSpeed": 6.27,
"windGust": 9.63,
"windBearing": 313,
"cloudCover": 0.45,
"uvIndex": 3.87,
"visibility": 16.09,
"ozone": 444.43,
"nearestStormDistance": 247.0,
"nearestStormBearing": 32
},
{
"time": 1770573600,
"summary": "Partly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.05,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -9.37,
"apparentTemperature": -17.24,
"dewPoint": -15.19,
"humidity": 0.63,
"pressure": 1023.45,
"windSpeed": 6.0,
"windGust": 9.5,
"windBearing": 310,
"cloudCover": 0.48,
"uvIndex": 3.98,
"visibility": 16.09,
"ozone": 441.37,
"nearestStormDistance": 280.82,
"nearestStormBearing": 45
},
{
"time": 1770577200,
"summary": "Partly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.06,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -8.97,
"apparentTemperature": -16.72,
"dewPoint": -14.92,
"humidity": 0.62,
"pressure": 1021.09,
"windSpeed": 6.07,
"windGust": 9.37,
"windBearing": 310,
"cloudCover": 0.49,
"uvIndex": 3.5,
"visibility": 16.09,
"ozone": 440.69,
"nearestStormDistance": 291.96,
"nearestStormBearing": 37
},
{
"time": 1770580800,
"summary": "Partly Cloudy",
"icon": "partly-cloudy-day",
"precipIntensity": 0.0,
"precipProbability": 0.06,
"precipIntensityError": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperature": -8.58,
"apparentTemperature": -16.2,
"dewPoint": -14.64,
"humidity": 0.62,
"pressure": 1021.18,
"windSpeed": 6.13,
"windGust": 9.23,
"windBearing": 310,
"cloudCover": 0.51,
"uvIndex": 2.58,
"visibility": 16.09,
"ozone": 433.53,
"nearestStormDistance": 303.53,
"nearestStormBearing": 41
}
]
},
"daily": {
"summary": "Snow next Friday, with high temperatures peaking at 2°C on Wednesday.",
"icon": "snow",
"data": [
{
"time": 1770354000,
"summary": "Hazy overnight.",
"icon": "fog",
"sunriseTime": 1770379258,
"sunsetTime": 1770416384,
"moonPhase": 0.66,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770354000,
"precipProbability": 0.33,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": -2.02,
"temperatureHighTime": 1770418800,
"temperatureLow": -4.82,
"temperatureLowTime": 1770462000,
"apparentTemperatureHigh": -5.66,
"apparentTemperatureHighTime": 1770411600,
"apparentTemperatureLow": -14.37,
"apparentTemperatureLowTime": 1770462000,
"dewPoint": -9.17,
"humidity": 0.71,
"pressure": 1007.52,
"windSpeed": 3.01,
"windGust": 4.09,
"windGustTime": 1770436800,
"windBearing": 281,
"cloudCover": 0.63,
"uvIndex": 3.7,
"uvIndexTime": 1770400800,
"visibility": 13.85,
"temperatureMin": -8.2,
"temperatureMinTime": 1770379200,
"temperatureMax": -1.72,
"temperatureMaxTime": 1770433200,
"apparentTemperatureMin": -13.29,
"apparentTemperatureMinTime": 1770379200,
"apparentTemperatureMax": -5.66,
"apparentTemperatureMaxTime": 1770411600
},
{
"time": 1770440400,
"summary": "Windy throughout the day.",
"icon": "wind",
"sunriseTime": 1770465591,
"sunsetTime": 1770502858,
"moonPhase": 0.69,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770440400,
"precipProbability": 0.33,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": -5.58,
"temperatureHighTime": 1770465600,
"temperatureLow": -12.3,
"temperatureLowTime": 1770541200,
"apparentTemperatureHigh": -15.88,
"apparentTemperatureHighTime": 1770465600,
"apparentTemperatureLow": -21.7,
"apparentTemperatureLowTime": 1770519600,
"dewPoint": -13.05,
"humidity": 0.64,
"pressure": 1007.22,
"windSpeed": 9.57,
"windGust": 13.35,
"windGustTime": 1770498000,
"windBearing": 302,
"cloudCover": 0.45,
"uvIndex": 3.23,
"uvIndexTime": 1770483600,
"visibility": 11.95,
"temperatureMin": -11.0,
"temperatureMinTime": 1770523200,
"temperatureMax": -2.05,
"temperatureMaxTime": 1770440400,
"apparentTemperatureMin": -21.7,
"apparentTemperatureMinTime": 1770519600,
"apparentTemperatureMax": -7.86,
"apparentTemperatureMaxTime": 1770440400
},
{
"time": 1770526800,
"summary": "Breezy in the morning.",
"icon": "wind",
"sunriseTime": 1770551923,
"sunsetTime": 1770589332,
"moonPhase": 0.72,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770526800,
"precipProbability": 0.07,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": -7.97,
"temperatureHighTime": 1770591600,
"temperatureLow": -10.64,
"temperatureLowTime": 1770634800,
"apparentTemperatureHigh": -14.7,
"apparentTemperatureHighTime": 1770584400,
"apparentTemperatureLow": -17.9,
"apparentTemperatureLowTime": 1770634800,
"dewPoint": -16.36,
"humidity": 0.61,
"pressure": 1022.11,
"windSpeed": 6.89,
"windGust": 9.71,
"windGustTime": 1770526800,
"windBearing": 313,
"cloudCover": 0.37,
"uvIndex": 3.98,
"uvIndexTime": 1770573600,
"visibility": 16.09,
"temperatureMin": -12.3,
"temperatureMinTime": 1770541200,
"temperatureMax": -7.86,
"temperatureMaxTime": 1770595200,
"apparentTemperatureMin": -21.66,
"apparentTemperatureMinTime": 1770541200,
"apparentTemperatureMax": -14.7,
"apparentTemperatureMaxTime": 1770584400
},
{
"time": 1770613200,
"summary": "Mostly clear until night.",
"icon": "clear-day",
"sunriseTime": 1770638253,
"sunsetTime": 1770675806,
"moonPhase": 0.75,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770613200,
"precipProbability": 0.07,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": -4.77,
"temperatureHighTime": 1770670800,
"temperatureLow": -7.39,
"temperatureLowTime": 1770721200,
"apparentTemperatureHigh": -10.59,
"apparentTemperatureHighTime": 1770670800,
"apparentTemperatureLow": -14.19,
"apparentTemperatureLowTime": 1770714000,
"dewPoint": -13.37,
"humidity": 0.64,
"pressure": 1023.19,
"windSpeed": 5.64,
"windGust": 8.0,
"windGustTime": 1770670800,
"windBearing": 306,
"cloudCover": 0.35,
"uvIndex": 3.54,
"uvIndexTime": 1770660000,
"visibility": 16.09,
"temperatureMin": -10.96,
"temperatureMinTime": 1770638400,
"temperatureMax": -4.77,
"temperatureMaxTime": 1770670800,
"apparentTemperatureMin": -18.23,
"apparentTemperatureMinTime": 1770638400,
"apparentTemperatureMax": -10.59,
"apparentTemperatureMaxTime": 1770670800
},
{
"time": 1770699600,
"summary": "Mostly clear until evening.",
"icon": "clear-day",
"sunriseTime": 1770724581,
"sunsetTime": 1770762279,
"moonPhase": 0.78,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770699600,
"precipProbability": 0.0,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": -1.3,
"temperatureHighTime": 1770757200,
"temperatureLow": -4.83,
"temperatureLowTime": 1770807600,
"apparentTemperatureHigh": -6.5,
"apparentTemperatureHighTime": 1770757200,
"apparentTemperatureLow": -10.85,
"apparentTemperatureLowTime": 1770807600,
"dewPoint": -10.03,
"humidity": 0.65,
"pressure": 1021.43,
"windSpeed": 4.8,
"windGust": 6.78,
"windGustTime": 1770699600,
"windBearing": 303,
"cloudCover": 0.37,
"uvIndex": 4.35,
"uvIndexTime": 1770746400,
"visibility": 15.2,
"temperatureMin": -7.39,
"temperatureMinTime": 1770721200,
"temperatureMax": -1.3,
"temperatureMaxTime": 1770757200,
"apparentTemperatureMin": -14.19,
"apparentTemperatureMinTime": 1770714000,
"apparentTemperatureMax": -6.5,
"apparentTemperatureMaxTime": 1770757200
},
{
"time": 1770786000,
"summary": "Hazy in the afternoon.",
"icon": "fog",
"sunriseTime": 1770810908,
"sunsetTime": 1770848753,
"moonPhase": 0.81,
"precipIntensity": 0.0,
"precipIntensityMax": 0.0,
"precipIntensityMaxTime": 1770786000,
"precipProbability": 0.08,
"precipAccumulation": 0.0,
"precipType": "snow",
"temperatureHigh": 2.11,
"temperatureHighTime": 1770836400,
"temperatureLow": -5.5,
"temperatureLowTime": 1770865200,
"apparentTemperatureHigh": -2.01,
"apparentTemperatureHighTime": 1770836400,
"apparentTemperatureLow": -8.93,
"apparentTemperatureLowTime": 1770876000,
"dewPoint": -6.87,
"humidity": 0.78,
"pressure": 1018.44,
"windSpeed": 3.33,
"windGust": 7.15,
"windGustTime": 1770854400,
"windBearing": 303,
"cloudCover": 0.5,
"uvIndex": 0.47,
"uvIndexTime": 1770832800,
"visibility": 10.62,
"temperatureMin": -5.5,
"temperatureMinTime": 1770865200,
"temperatureMax": 2.11,
"temperatureMaxTime": 1770836400,
"apparentTemperatureMin": -10.85,
"apparentTemperatureMinTime": 1770811200,
"apparentTemperatureMax": -2.01,
"apparentTemperatureMaxTime": 1770836400
},
{
"time": 1770872400,
"summary": "Possible snow (< 4 cm.) starting in the evening.",
"icon": "partly-cloudy-day",
"sunriseTime": 1770897234,
"sunsetTime": 1770935226,
"moonPhase": 0.84,
"precipIntensity": 0.15,
"precipIntensityMax": 1.008,
"precipIntensityMaxTime": 1770955200,
"precipProbability": 0.12,
"precipAccumulation": 0.9236,
"precipType": "snow",
"temperatureHigh": -0.19,
"temperatureHighTime": 1770919200,
"temperatureLow": -2.21,
"temperatureLowTime": 1770962400,
"apparentTemperatureHigh": 1.12,
"apparentTemperatureHighTime": 1770919200,
"apparentTemperatureLow": -7.73,
"apparentTemperatureLowTime": 1770980400,
"dewPoint": -4.45,
"humidity": 0.78,
"pressure": 1023.22,
"windSpeed": 0.95,
"windGust": 11.32,
"windGustTime": 1770886800,
"windBearing": 248,
"cloudCover": 0.47,
"uvIndex": 3.94,
"uvIndexTime": 1770919200,
"visibility": 16.09,
"temperatureMin": -5.35,
"temperatureMinTime": 1770872400,
"temperatureMax": -0.19,
"temperatureMaxTime": 1770919200,
"apparentTemperatureMin": -8.93,
"apparentTemperatureMinTime": 1770876000,
"apparentTemperatureMax": 1.12,
"apparentTemperatureMaxTime": 1770919200
},
{
"time": 1770958800,
"summary": "Light snow (< 10 cm.) throughout the day.",
"icon": "snow",
"sunriseTime": 1770983559,
"sunsetTime": 1771021699,
"moonPhase": 0.87,
"precipIntensity": 0.381,
"precipIntensityMax": 1.368,
"precipIntensityMaxTime": 1770962400,
"precipProbability": 0.34,
"precipAccumulation": 4.0291,
"precipType": "snow",
"temperatureHigh": -0.77,
"temperatureHighTime": 1771023600,
"temperatureLow": -0.81,
"temperatureLowTime": 1771048800,
"apparentTemperatureHigh": -3.43,
"apparentTemperatureHighTime": 1771005600,
"apparentTemperatureLow": -5.95,
"apparentTemperatureLowTime": 1771059600,
"dewPoint": -2.67,
"humidity": 0.8,
"pressure": 1015.78,
"windSpeed": 3.24,
"windGust": 12.21,
"windGustTime": 1771038000,
"windBearing": 30,
"cloudCover": 0.36,
"uvIndex": 3.8,
"uvIndexTime": 1771005600,
"visibility": 16.09,
"temperatureMin": -2.21,
"temperatureMinTime": 1770962400,
"temperatureMax": -0.64,
"temperatureMaxTime": 1771027200,
"apparentTemperatureMin": -7.91,
"apparentTemperatureMinTime": 1770984000,
"apparentTemperatureMax": -3.43,
"apparentTemperatureMaxTime": 1771005600
}
]
},
"alerts": [
{
"title": "Extreme Cold Warning",
"regions": [
"Eastern Passaic",
"Hudson",
"Western Bergen",
"Eastern Bergen",
"Western Essex",
"Eastern Essex",
"Western Union",
"Eastern Union",
"Putnam",
"Rockland",
"Northern Westchester",
"Southern Westchester",
"New York (Manhattan)",
"Bronx",
"Richmond (Staten Is.)",
"Kings (Brooklyn)",
"Northern Queens",
"Southern Queens"
],
"severity": "Severe",
"time": 1770402120,
"expires": 1770458400,
"description": "* WHAT...For the Wind Advisory, northwest winds 20 to 30 mph with gusts up to 50 mph expected. For the Extreme Cold Warning, dangerously cold wind chills as low as 20 below expected.\n* WHERE...Portions of northeast New Jersey and southeast New York.\n* WHEN...For the Wind Advisory, from 9 AM Saturday to midnight EST Saturday Night. For the Extreme Cold Warning, from 10 AM Saturday to 1 PM EST Sunday.\n* IMPACTS...Gusty winds will blow around unsecured objects. Tree limbs could be blown down and a few power outages may result. The cold wind chills could cause frostbite on exposed skin in as little as 30 minutes.",
"uri": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.5df73ec191a300e305a2e7beb31cdbaded01fd49.004.1"
},
{
"title": "Wind Advisory",
"regions": [
"Eastern Passaic",
"Hudson",
"Western Bergen",
"Eastern Bergen",
"Western Essex",
"Eastern Essex",
"Western Union",
"Eastern Union",
"Putnam",
"Rockland",
"Northern Westchester",
"Southern Westchester",
"New York (Manhattan)",
"Bronx",
"Richmond (Staten Is.)",
"Kings (Brooklyn)",
"Northern Queens",
"Southern Queens"
],
"severity": "Moderate",
"time": 1770402120,
"expires": 1770458400,
"description": "* WHAT...For the Wind Advisory, northwest winds 20 to 30 mph with gusts up to 50 mph expected. For the Extreme Cold Warning, dangerously cold wind chills as low as 20 below expected.\n* WHERE...Portions of northeast New Jersey and southeast New York.\n* WHEN...For the Wind Advisory, from 9 AM Saturday to midnight EST Saturday Night. For the Extreme Cold Warning, from 10 AM Saturday to 1 PM EST Sunday.\n* IMPACTS...Gusty winds will blow around unsecured objects. Tree limbs could be blown down and a few power outages may result. The cold wind chills could cause frostbite on exposed skin in as little as 30 minutes.",
"uri": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.5df73ec191a300e305a2e7beb31cdbaded01fd49.004.2"
}
],
"flags": {
"sources": ["ETOPO1", "hrrrsubh", "rtma_ru", "hrrr_0-18", "nbm", "nbm_fire", "dwd_mosmix", "ecmwf_ifs", "hrrr_18-48", "gfs", "gefs"],
"sourceTimes": {
"hrrr_subh": "2026-02-06 19Z",
"rtma_ru": "2026-02-06 21:15Z",
"hrrr_0-18": "2026-02-06 19Z",
"nbm": "2026-02-03 23Z",
"nbm_fire": "2026-02-06 12Z",
"dwd_mosmix": "2026-02-06 20Z",
"ecmwf_ifs": "2026-02-06 12Z",
"hrrr_18-48": "2026-02-06 18Z",
"gfs": "2026-02-06 12Z",
"gefs": "2026-02-06 12Z"
},
"nearest-station": 10.96,
"units": "si",
"version": "V2.9.1"
}
}