From 17db20fdd7f6eb5235e3d29cf8211f6d2a2d9560 Mon Sep 17 00:00:00 2001 From: TJ Horner Date: Mon, 11 Sep 2023 10:06:55 -0700 Subject: [PATCH] Add Apple WeatherKit integration (#99895) --- CODEOWNERS | 2 + homeassistant/brands/apple.json | 3 +- .../components/weatherkit/__init__.py | 62 + .../components/weatherkit/config_flow.py | 126 + homeassistant/components/weatherkit/const.py | 13 + .../components/weatherkit/coordinator.py | 70 + .../components/weatherkit/manifest.json | 9 + .../components/weatherkit/strings.json | 25 + .../components/weatherkit/weather.py | 249 + homeassistant/generated/config_flows.py | 1 + homeassistant/generated/integrations.json | 6 + requirements_all.txt | 3 + requirements_test_all.txt | 3 + tests/components/weatherkit/__init__.py | 71 + tests/components/weatherkit/conftest.py | 14 + .../weatherkit/fixtures/weather_response.json | 6344 +++++++++++++++++ .../weatherkit/snapshots/test_weather.ambr | 4087 +++++++++++ .../components/weatherkit/test_config_flow.py | 134 + .../components/weatherkit/test_coordinator.py | 32 + tests/components/weatherkit/test_setup.py | 63 + tests/components/weatherkit/test_weather.py | 115 + 21 files changed, 11431 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/weatherkit/__init__.py create mode 100644 homeassistant/components/weatherkit/config_flow.py create mode 100644 homeassistant/components/weatherkit/const.py create mode 100644 homeassistant/components/weatherkit/coordinator.py create mode 100644 homeassistant/components/weatherkit/manifest.json create mode 100644 homeassistant/components/weatherkit/strings.json create mode 100644 homeassistant/components/weatherkit/weather.py create mode 100644 tests/components/weatherkit/__init__.py create mode 100644 tests/components/weatherkit/conftest.py create mode 100644 tests/components/weatherkit/fixtures/weather_response.json create mode 100644 tests/components/weatherkit/snapshots/test_weather.ambr create mode 100644 tests/components/weatherkit/test_config_flow.py create mode 100644 tests/components/weatherkit/test_coordinator.py create mode 100644 tests/components/weatherkit/test_setup.py create mode 100644 tests/components/weatherkit/test_weather.py diff --git a/CODEOWNERS b/CODEOWNERS index 8a454cf775a53..29c744ce42e9a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1404,6 +1404,8 @@ build.json @home-assistant/supervisor /tests/components/waze_travel_time/ @eifinger /homeassistant/components/weather/ @home-assistant/core /tests/components/weather/ @home-assistant/core +/homeassistant/components/weatherkit/ @tjhorner +/tests/components/weatherkit/ @tjhorner /homeassistant/components/webhook/ @home-assistant/core /tests/components/webhook/ @home-assistant/core /homeassistant/components/webostv/ @thecode diff --git a/homeassistant/brands/apple.json b/homeassistant/brands/apple.json index 00f646e435ec7..b0b66de0bccaf 100644 --- a/homeassistant/brands/apple.json +++ b/homeassistant/brands/apple.json @@ -7,6 +7,7 @@ "homekit", "ibeacon", "icloud", - "itunes" + "itunes", + "weatherkit" ] } diff --git a/homeassistant/components/weatherkit/__init__.py b/homeassistant/components/weatherkit/__init__.py new file mode 100644 index 0000000000000..fb41ffc108440 --- /dev/null +++ b/homeassistant/components/weatherkit/__init__.py @@ -0,0 +1,62 @@ +"""Integration for Apple's WeatherKit API.""" +from __future__ import annotations + +from apple_weatherkit.client import ( + WeatherKitApiClient, + WeatherKitApiClientAuthenticationError, + WeatherKitApiClientError, +) + +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import ConfigEntryNotReady +from homeassistant.helpers.aiohttp_client import async_get_clientsession + +from .const import ( + CONF_KEY_ID, + CONF_KEY_PEM, + CONF_SERVICE_ID, + CONF_TEAM_ID, + DOMAIN, + LOGGER, +) +from .coordinator import WeatherKitDataUpdateCoordinator + +PLATFORMS: list[Platform] = [Platform.WEATHER] + + +async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Set up this integration using UI.""" + hass.data.setdefault(DOMAIN, {}) + coordinator = WeatherKitDataUpdateCoordinator( + hass=hass, + client=WeatherKitApiClient( + key_id=entry.data[CONF_KEY_ID], + service_id=entry.data[CONF_SERVICE_ID], + team_id=entry.data[CONF_TEAM_ID], + key_pem=entry.data[CONF_KEY_PEM], + session=async_get_clientsession(hass), + ), + ) + + try: + await coordinator.update_supported_data_sets() + except WeatherKitApiClientAuthenticationError as ex: + LOGGER.error("Authentication error initializing integration: %s", ex) + return False + except WeatherKitApiClientError as ex: + raise ConfigEntryNotReady from ex + + await coordinator.async_config_entry_first_refresh() + hass.data[DOMAIN][entry.entry_id] = coordinator + + await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Handle removal of an entry.""" + if unloaded := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): + hass.data[DOMAIN].pop(entry.entry_id) + return unloaded diff --git a/homeassistant/components/weatherkit/config_flow.py b/homeassistant/components/weatherkit/config_flow.py new file mode 100644 index 0000000000000..d9db70dde114a --- /dev/null +++ b/homeassistant/components/weatherkit/config_flow.py @@ -0,0 +1,126 @@ +"""Adds config flow for WeatherKit.""" +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any + +from apple_weatherkit.client import ( + WeatherKitApiClient, + WeatherKitApiClientAuthenticationError, + WeatherKitApiClientCommunicationError, + WeatherKitApiClientError, +) +import voluptuous as vol + +from homeassistant import config_entries, data_entry_flow +from homeassistant.const import CONF_LATITUDE, CONF_LOCATION, CONF_LONGITUDE +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.selector import ( + LocationSelector, + LocationSelectorConfig, + TextSelector, + TextSelectorConfig, +) + +from .const import ( + CONF_KEY_ID, + CONF_KEY_PEM, + CONF_SERVICE_ID, + CONF_TEAM_ID, + DOMAIN, + LOGGER, +) + +DATA_SCHEMA = vol.Schema( + { + vol.Required(CONF_LOCATION): LocationSelector( + LocationSelectorConfig(radius=False, icon="") + ), + # Auth + vol.Required(CONF_KEY_ID): str, + vol.Required(CONF_SERVICE_ID): str, + vol.Required(CONF_TEAM_ID): str, + vol.Required(CONF_KEY_PEM): TextSelector( + TextSelectorConfig( + multiline=True, + ) + ), + } +) + + +class WeatherKitUnsupportedLocationError(Exception): + """Error to indicate a location is unsupported.""" + + +class WeatherKitFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): + """Config flow for WeatherKit.""" + + VERSION = 1 + + async def async_step_user( + self, + user_input: dict[str, Any] | None = None, + ) -> data_entry_flow.FlowResult: + """Handle a flow initialized by the user.""" + errors = {} + if user_input is not None: + try: + await self._test_config(user_input) + except WeatherKitUnsupportedLocationError as exception: + LOGGER.error(exception) + errors["base"] = "unsupported_location" + except WeatherKitApiClientAuthenticationError as exception: + LOGGER.warning(exception) + errors["base"] = "invalid_auth" + except WeatherKitApiClientCommunicationError as exception: + LOGGER.error(exception) + errors["base"] = "cannot_connect" + except WeatherKitApiClientError as exception: + LOGGER.exception(exception) + errors["base"] = "unknown" + else: + # Flatten location + location = user_input.pop(CONF_LOCATION) + user_input[CONF_LATITUDE] = location[CONF_LATITUDE] + user_input[CONF_LONGITUDE] = location[CONF_LONGITUDE] + + return self.async_create_entry( + title=f"{user_input[CONF_LATITUDE]}, {user_input[CONF_LONGITUDE]}", + data=user_input, + ) + + suggested_values: Mapping[str, Any] = { + CONF_LOCATION: { + CONF_LATITUDE: self.hass.config.latitude, + CONF_LONGITUDE: self.hass.config.longitude, + } + } + + data_schema = self.add_suggested_values_to_schema(DATA_SCHEMA, suggested_values) + return self.async_show_form( + step_id="user", + data_schema=data_schema, + errors=errors, + ) + + async def _test_config(self, user_input: dict[str, Any]) -> None: + """Validate credentials.""" + client = WeatherKitApiClient( + key_id=user_input[CONF_KEY_ID], + service_id=user_input[CONF_SERVICE_ID], + team_id=user_input[CONF_TEAM_ID], + key_pem=user_input[CONF_KEY_PEM], + session=async_get_clientsession(self.hass), + ) + + location = user_input[CONF_LOCATION] + availability = await client.get_availability( + location[CONF_LATITUDE], + location[CONF_LONGITUDE], + ) + + if len(availability) == 0: + raise WeatherKitUnsupportedLocationError( + "API does not support this location" + ) diff --git a/homeassistant/components/weatherkit/const.py b/homeassistant/components/weatherkit/const.py new file mode 100644 index 0000000000000..f2ef7e4c7202d --- /dev/null +++ b/homeassistant/components/weatherkit/const.py @@ -0,0 +1,13 @@ +"""Constants for WeatherKit.""" +from logging import Logger, getLogger + +LOGGER: Logger = getLogger(__package__) + +NAME = "Apple WeatherKit" +DOMAIN = "weatherkit" +ATTRIBUTION = "Data provided by Apple Weather. https://developer.apple.com/weatherkit/data-source-attribution/" + +CONF_KEY_ID = "key_id" +CONF_SERVICE_ID = "service_id" +CONF_TEAM_ID = "team_id" +CONF_KEY_PEM = "key_pem" diff --git a/homeassistant/components/weatherkit/coordinator.py b/homeassistant/components/weatherkit/coordinator.py new file mode 100644 index 0000000000000..a918ce0f850d0 --- /dev/null +++ b/homeassistant/components/weatherkit/coordinator.py @@ -0,0 +1,70 @@ +"""DataUpdateCoordinator for WeatherKit integration.""" +from __future__ import annotations + +from datetime import timedelta + +from apple_weatherkit import DataSetType +from apple_weatherkit.client import WeatherKitApiClient, WeatherKitApiClientError + +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed + +from .const import DOMAIN, LOGGER + +REQUESTED_DATA_SETS = [ + DataSetType.CURRENT_WEATHER, + DataSetType.DAILY_FORECAST, + DataSetType.HOURLY_FORECAST, +] + + +class WeatherKitDataUpdateCoordinator(DataUpdateCoordinator): + """Class to manage fetching data from the API.""" + + config_entry: ConfigEntry + supported_data_sets: list[DataSetType] | None = None + + def __init__( + self, + hass: HomeAssistant, + client: WeatherKitApiClient, + ) -> None: + """Initialize.""" + self.client = client + super().__init__( + hass=hass, + logger=LOGGER, + name=DOMAIN, + update_interval=timedelta(minutes=15), + ) + + async def update_supported_data_sets(self): + """Obtain the supported data sets for this location and store them.""" + supported_data_sets = await self.client.get_availability( + self.config_entry.data[CONF_LATITUDE], + self.config_entry.data[CONF_LONGITUDE], + ) + + self.supported_data_sets = [ + data_set + for data_set in REQUESTED_DATA_SETS + if data_set in supported_data_sets + ] + + LOGGER.debug("Supported data sets: %s", self.supported_data_sets) + + async def _async_update_data(self): + """Update the current weather and forecasts.""" + try: + if not self.supported_data_sets: + await self.update_supported_data_sets() + + return await self.client.get_weather_data( + self.config_entry.data[CONF_LATITUDE], + self.config_entry.data[CONF_LONGITUDE], + self.supported_data_sets, + ) + except WeatherKitApiClientError as exception: + raise UpdateFailed(exception) from exception diff --git a/homeassistant/components/weatherkit/manifest.json b/homeassistant/components/weatherkit/manifest.json new file mode 100644 index 0000000000000..984e36483c7ff --- /dev/null +++ b/homeassistant/components/weatherkit/manifest.json @@ -0,0 +1,9 @@ +{ + "domain": "weatherkit", + "name": "Apple WeatherKit", + "codeowners": ["@tjhorner"], + "config_flow": true, + "documentation": "https://www.home-assistant.io/integrations/weatherkit", + "iot_class": "cloud_polling", + "requirements": ["apple_weatherkit==1.0.1"] +} diff --git a/homeassistant/components/weatherkit/strings.json b/homeassistant/components/weatherkit/strings.json new file mode 100644 index 0000000000000..4581028f209e9 --- /dev/null +++ b/homeassistant/components/weatherkit/strings.json @@ -0,0 +1,25 @@ +{ + "config": { + "step": { + "user": { + "title": "WeatherKit setup", + "description": "Enter your location details and WeatherKit authentication credentials below.", + "data": { + "name": "Name", + "location": "[%key:common::config_flow::data::location%]", + "key_id": "Key ID", + "team_id": "Apple team ID", + "service_id": "Service ID", + "key_pem": "Private key (.p8)" + } + } + }, + "error": { + "already_configured": "[%key:common::config_flow::abort::already_configured_location%]", + "unsupported_location": "Apple WeatherKit does not provide data for this location.", + "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", + "unknown": "[%key:common::config_flow::error::unknown%]", + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" + } + } +} diff --git a/homeassistant/components/weatherkit/weather.py b/homeassistant/components/weatherkit/weather.py new file mode 100644 index 0000000000000..fc6b0dac1cba2 --- /dev/null +++ b/homeassistant/components/weatherkit/weather.py @@ -0,0 +1,249 @@ +"""Weather entity for Apple WeatherKit integration.""" + +from typing import Any, cast + +from apple_weatherkit import DataSetType + +from homeassistant.components.weather import ( + Forecast, + SingleCoordinatorWeatherEntity, + WeatherEntityFeature, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import ( + CONF_LATITUDE, + CONF_LONGITUDE, + UnitOfLength, + UnitOfPressure, + UnitOfSpeed, + UnitOfTemperature, +) +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .const import ATTRIBUTION, DOMAIN +from .coordinator import WeatherKitDataUpdateCoordinator + + +async def async_setup_entry( + hass: HomeAssistant, + config_entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Add a weather entity from a config_entry.""" + coordinator: WeatherKitDataUpdateCoordinator = hass.data[DOMAIN][ + config_entry.entry_id + ] + + async_add_entities([WeatherKitWeather(coordinator)]) + + +condition_code_to_hass = { + "BlowingDust": "windy", + "Clear": "sunny", + "Cloudy": "cloudy", + "Foggy": "fog", + "Haze": "fog", + "MostlyClear": "sunny", + "MostlyCloudy": "cloudy", + "PartlyCloudy": "partlycloudy", + "Smoky": "fog", + "Breezy": "windy", + "Windy": "windy", + "Drizzle": "rainy", + "HeavyRain": "pouring", + "IsolatedThunderstorms": "lightning", + "Rain": "rainy", + "SunShowers": "rainy", + "ScatteredThunderstorms": "lightning", + "StrongStorms": "lightning", + "Thunderstorms": "lightning", + "Frigid": "snowy", + "Hail": "hail", + "Hot": "sunny", + "Flurries": "snowy", + "Sleet": "snowy", + "Snow": "snowy", + "SunFlurries": "snowy", + "WintryMix": "snowy", + "Blizzard": "snowy", + "BlowingSnow": "snowy", + "FreezingDrizzle": "snowy-rainy", + "FreezingRain": "snowy-rainy", + "HeavySnow": "snowy", + "Hurricane": "exceptional", + "TropicalStorm": "exceptional", +} + + +def _map_daily_forecast(forecast) -> Forecast: + return { + "datetime": forecast.get("forecastStart"), + "condition": condition_code_to_hass[forecast.get("conditionCode")], + "native_temperature": forecast.get("temperatureMax"), + "native_templow": forecast.get("temperatureMin"), + "native_precipitation": forecast.get("precipitationAmount"), + "precipitation_probability": forecast.get("precipitationChance") * 100, + "uv_index": forecast.get("maxUvIndex"), + } + + +def _map_hourly_forecast(forecast) -> Forecast: + return { + "datetime": forecast.get("forecastStart"), + "condition": condition_code_to_hass[forecast.get("conditionCode")], + "native_temperature": forecast.get("temperature"), + "native_apparent_temperature": forecast.get("temperatureApparent"), + "native_dew_point": forecast.get("temperatureDewPoint"), + "native_pressure": forecast.get("pressure"), + "native_wind_gust_speed": forecast.get("windGust"), + "native_wind_speed": forecast.get("windSpeed"), + "wind_bearing": forecast.get("windDirection"), + "humidity": forecast.get("humidity") * 100, + "native_precipitation": forecast.get("precipitationAmount"), + "precipitation_probability": forecast.get("precipitationChance") * 100, + "cloud_coverage": forecast.get("cloudCover") * 100, + "uv_index": forecast.get("uvIndex"), + } + + +class WeatherKitWeather( + SingleCoordinatorWeatherEntity[WeatherKitDataUpdateCoordinator] +): + """Weather entity for Apple WeatherKit integration.""" + + _attr_attribution = ATTRIBUTION + + _attr_has_entity_name = True + _attr_name = None + + _attr_native_temperature_unit = UnitOfTemperature.CELSIUS + _attr_native_pressure_unit = UnitOfPressure.MBAR + _attr_native_visibility_unit = UnitOfLength.KILOMETERS + _attr_native_wind_speed_unit = UnitOfSpeed.KILOMETERS_PER_HOUR + + def __init__( + self, + coordinator: WeatherKitDataUpdateCoordinator, + ) -> None: + """Initialise the platform with a data instance and site.""" + super().__init__(coordinator) + config_data = coordinator.config_entry.data + self._attr_unique_id = ( + f"{config_data[CONF_LATITUDE]}-{config_data[CONF_LONGITUDE]}" + ) + self._attr_device_info = DeviceInfo( + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, self._attr_unique_id)}, + manufacturer="Apple Weather", + ) + + @property + def supported_features(self) -> WeatherEntityFeature: + """Determine supported features based on available data sets reported by WeatherKit.""" + if not self.coordinator.supported_data_sets: + return WeatherEntityFeature(0) + + features = WeatherEntityFeature(0) + if DataSetType.DAILY_FORECAST in self.coordinator.supported_data_sets: + features |= WeatherEntityFeature.FORECAST_DAILY + if DataSetType.HOURLY_FORECAST in self.coordinator.supported_data_sets: + features |= WeatherEntityFeature.FORECAST_HOURLY + return features + + @property + def data(self) -> dict[str, Any]: + """Return coordinator data.""" + return self.coordinator.data + + @property + def current_weather(self) -> dict[str, Any]: + """Return current weather data.""" + return self.data["currentWeather"] + + @property + def condition(self) -> str | None: + """Return the current condition.""" + condition_code = cast(str, self.current_weather.get("conditionCode")) + condition = condition_code_to_hass[condition_code] + + if condition == "sunny" and self.current_weather.get("daylight") is False: + condition = "clear-night" + + return condition + + @property + def native_temperature(self) -> float | None: + """Return the current temperature.""" + return self.current_weather.get("temperature") + + @property + def native_apparent_temperature(self) -> float | None: + """Return the current apparent_temperature.""" + return self.current_weather.get("temperatureApparent") + + @property + def native_dew_point(self) -> float | None: + """Return the current dew_point.""" + return self.current_weather.get("temperatureDewPoint") + + @property + def native_pressure(self) -> float | None: + """Return the current pressure.""" + return self.current_weather.get("pressure") + + @property + def humidity(self) -> float | None: + """Return the current humidity.""" + return cast(float, self.current_weather.get("humidity")) * 100 + + @property + def cloud_coverage(self) -> float | None: + """Return the current cloud_coverage.""" + return cast(float, self.current_weather.get("cloudCover")) * 100 + + @property + def uv_index(self) -> float | None: + """Return the current uv_index.""" + return self.current_weather.get("uvIndex") + + @property + def native_visibility(self) -> float | None: + """Return the current visibility.""" + return cast(float, self.current_weather.get("visibility")) / 1000 + + @property + def native_wind_gust_speed(self) -> float | None: + """Return the current wind_gust_speed.""" + return self.current_weather.get("windGust") + + @property + def native_wind_speed(self) -> float | None: + """Return the current wind_speed.""" + return self.current_weather.get("windSpeed") + + @property + def wind_bearing(self) -> float | None: + """Return the current wind_bearing.""" + return self.current_weather.get("windDirection") + + @callback + def _async_forecast_daily(self) -> list[Forecast] | None: + """Return the daily forecast.""" + daily_forecast = self.data.get("forecastDaily") + if not daily_forecast: + return None + + forecast = daily_forecast.get("days") + return [_map_daily_forecast(f) for f in forecast] + + @callback + def _async_forecast_hourly(self) -> list[Forecast] | None: + """Return the hourly forecast.""" + hourly_forecast = self.data.get("forecastHourly") + if not hourly_forecast: + return None + + forecast = hourly_forecast.get("hours") + return [_map_hourly_forecast(f) for f in forecast] diff --git a/homeassistant/generated/config_flows.py b/homeassistant/generated/config_flows.py index 0f55df7cc99b9..1557df8f33b21 100644 --- a/homeassistant/generated/config_flows.py +++ b/homeassistant/generated/config_flows.py @@ -519,6 +519,7 @@ "waqi", "watttime", "waze_travel_time", + "weatherkit", "webostv", "wemo", "whirlpool", diff --git a/homeassistant/generated/integrations.json b/homeassistant/generated/integrations.json index 5eaf1b8d0a4d1..7cad78a49fcb1 100644 --- a/homeassistant/generated/integrations.json +++ b/homeassistant/generated/integrations.json @@ -335,6 +335,12 @@ "config_flow": false, "iot_class": "local_polling", "name": "Apple iTunes" + }, + "weatherkit": { + "integration_type": "hub", + "config_flow": true, + "iot_class": "cloud_polling", + "name": "Apple WeatherKit" } } }, diff --git a/requirements_all.txt b/requirements_all.txt index a31e45c47cc0e..4f22107c76f7f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -423,6 +423,9 @@ anthemav==1.4.1 # homeassistant.components.apcupsd apcaccess==0.0.13 +# homeassistant.components.weatherkit +apple_weatherkit==1.0.1 + # homeassistant.components.apprise apprise==1.4.5 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7a0eb6c1e25ab..9df6f6b1a11f8 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -389,6 +389,9 @@ anthemav==1.4.1 # homeassistant.components.apcupsd apcaccess==0.0.13 +# homeassistant.components.weatherkit +apple_weatherkit==1.0.1 + # homeassistant.components.apprise apprise==1.4.5 diff --git a/tests/components/weatherkit/__init__.py b/tests/components/weatherkit/__init__.py new file mode 100644 index 0000000000000..5118c44c45be8 --- /dev/null +++ b/tests/components/weatherkit/__init__.py @@ -0,0 +1,71 @@ +"""Tests for the Apple WeatherKit integration.""" +from unittest.mock import patch + +from apple_weatherkit import DataSetType + +from homeassistant.components.weatherkit.const import ( + CONF_KEY_ID, + CONF_KEY_PEM, + CONF_SERVICE_ID, + CONF_TEAM_ID, + DOMAIN, +) +from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE +from homeassistant.core import HomeAssistant + +from tests.common import MockConfigEntry, load_json_object_fixture + +EXAMPLE_CONFIG_DATA = { + CONF_LATITUDE: 35.4690101707532, + CONF_LONGITUDE: 135.74817234593166, + CONF_KEY_ID: "QABCDEFG123", + CONF_SERVICE_ID: "io.home-assistant.testing", + CONF_TEAM_ID: "ABCD123456", + CONF_KEY_PEM: "-----BEGIN PRIVATE KEY-----\nwhateverkey\n-----END PRIVATE KEY-----", +} + + +async def init_integration( + hass: HomeAssistant, + is_night_time: bool = False, + has_hourly_forecast: bool = True, + has_daily_forecast: bool = True, +) -> MockConfigEntry: + """Set up the WeatherKit integration in Home Assistant.""" + entry = MockConfigEntry( + domain=DOMAIN, + title="Home", + unique_id="0123456", + data=EXAMPLE_CONFIG_DATA, + ) + + weather_response = load_json_object_fixture("weatherkit/weather_response.json") + + available_data_sets = [DataSetType.CURRENT_WEATHER] + + if is_night_time: + weather_response["currentWeather"]["daylight"] = False + weather_response["currentWeather"]["conditionCode"] = "Clear" + + if not has_daily_forecast: + del weather_response["forecastDaily"] + else: + available_data_sets.append(DataSetType.DAILY_FORECAST) + + if not has_hourly_forecast: + del weather_response["forecastHourly"] + else: + available_data_sets.append(DataSetType.HOURLY_FORECAST) + + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_weather_data", + return_value=weather_response, + ), patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + return_value=available_data_sets, + ): + entry.add_to_hass(hass) + await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + return entry diff --git a/tests/components/weatherkit/conftest.py b/tests/components/weatherkit/conftest.py new file mode 100644 index 0000000000000..7cfa2f7eef537 --- /dev/null +++ b/tests/components/weatherkit/conftest.py @@ -0,0 +1,14 @@ +"""Common fixtures for the Apple WeatherKit tests.""" +from collections.abc import Generator +from unittest.mock import AsyncMock, patch + +import pytest + + +@pytest.fixture +def mock_setup_entry() -> Generator[AsyncMock, None, None]: + """Override async_setup_entry.""" + with patch( + "homeassistant.components.weatherkit.async_setup_entry", return_value=True + ) as mock_setup_entry: + yield mock_setup_entry diff --git a/tests/components/weatherkit/fixtures/weather_response.json b/tests/components/weatherkit/fixtures/weather_response.json new file mode 100644 index 0000000000000..c2d619d85d8c9 --- /dev/null +++ b/tests/components/weatherkit/fixtures/weather_response.json @@ -0,0 +1,6344 @@ +{ + "currentWeather": { + "name": "CurrentWeather", + "metadata": { + "attributionURL": "https://developer.apple.com/weatherkit/data-source-attribution/", + "expireTime": "2023-09-08T22:08:04Z", + "latitude": 35.47, + "longitude": 135.749, + "readTime": "2023-09-08T22:03:04Z", + "reportedTime": "2023-09-08T21:02:40Z", + "units": "m", + "version": 1 + }, + "asOf": "2023-09-08T22:03:04Z", + "cloudCover": 0.62, + "cloudCoverLowAltPct": 0.35, + "cloudCoverMidAltPct": 0.22, + "cloudCoverHighAltPct": 0.32, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.91, + "precipitationIntensity": 0.0, + "pressure": 1009.8, + "pressureTrend": "rising", + "temperature": 22.9, + "temperatureApparent": 24.92, + "temperatureDewPoint": 21.28, + "uvIndex": 1, + "visibility": 20965.22, + "windDirection": 259, + "windGust": 10.53, + "windSpeed": 5.23 + }, + "forecastDaily": { + "name": "DailyForecast", + "metadata": { + "attributionURL": "https://developer.apple.com/weatherkit/data-source-attribution/", + "expireTime": "2023-09-08T23:03:04Z", + "latitude": 35.47, + "longitude": 135.749, + "readTime": "2023-09-08T22:03:04Z", + "reportedTime": "2023-09-08T21:02:40Z", + "units": "m", + "version": 1 + }, + "days": [ + { + "forecastStart": "2023-09-08T15:00:00Z", + "forecastEnd": "2023-09-09T15:00:00Z", + "conditionCode": "MostlyCloudy", + "maxUvIndex": 6, + "moonPhase": "waningCrescent", + "moonset": "2023-09-09T06:10:26Z", + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-09T14:54:36Z", + "solarNoon": "2023-09-09T02:54:26Z", + "sunrise": "2023-09-08T20:34:47Z", + "sunriseCivil": "2023-09-08T20:09:00Z", + "sunriseNautical": "2023-09-08T19:38:47Z", + "sunriseAstronomical": "2023-09-08T19:07:36Z", + "sunset": "2023-09-09T09:13:58Z", + "sunsetCivil": "2023-09-09T09:39:40Z", + "sunsetNautical": "2023-09-09T10:09:52Z", + "sunsetAstronomical": "2023-09-09T10:40:54Z", + "temperatureMax": 28.62, + "temperatureMin": 21.18, + "daytimeForecast": { + "forecastStart": "2023-09-08T22:00:00Z", + "forecastEnd": "2023-09-09T10:00:00Z", + "cloudCover": 0.75, + "conditionCode": "MostlyCloudy", + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 318, + "windSpeed": 7.36 + }, + "overnightForecast": { + "forecastStart": "2023-09-09T10:00:00Z", + "forecastEnd": "2023-09-09T22:00:00Z", + "cloudCover": 0.57, + "conditionCode": "PartlyCloudy", + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 166, + "windSpeed": 2.99 + }, + "restOfDayForecast": { + "forecastStart": "2023-09-08T22:03:04Z", + "forecastEnd": "2023-09-09T15:00:00Z", + "cloudCover": 0.69, + "conditionCode": "MostlyCloudy", + "humidity": 0.8, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 315, + "windSpeed": 5.78 + } + }, + { + "forecastStart": "2023-09-09T15:00:00Z", + "forecastEnd": "2023-09-10T15:00:00Z", + "conditionCode": "Rain", + "maxUvIndex": 6, + "moonPhase": "waningCrescent", + "moonrise": "2023-09-09T15:36:16Z", + "moonset": "2023-09-10T06:54:57Z", + "precipitationAmount": 3.6, + "precipitationAmountByType": {}, + "precipitationChance": 0.45, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-10T14:54:15Z", + "solarNoon": "2023-09-10T02:54:05Z", + "sunrise": "2023-09-09T20:35:31Z", + "sunriseCivil": "2023-09-09T20:09:47Z", + "sunriseNautical": "2023-09-09T19:39:37Z", + "sunriseAstronomical": "2023-09-09T19:08:32Z", + "sunset": "2023-09-10T09:12:31Z", + "sunsetCivil": "2023-09-10T09:38:11Z", + "sunsetNautical": "2023-09-10T10:08:20Z", + "sunsetAstronomical": "2023-09-10T10:39:18Z", + "temperatureMax": 30.64, + "temperatureMin": 21.0, + "daytimeForecast": { + "forecastStart": "2023-09-09T22:00:00Z", + "forecastEnd": "2023-09-10T10:00:00Z", + "cloudCover": 0.76, + "conditionCode": "Rain", + "humidity": 0.73, + "precipitationAmount": 3.6, + "precipitationAmountByType": {}, + "precipitationChance": 0.35, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 96, + "windSpeed": 4.94 + }, + "overnightForecast": { + "forecastStart": "2023-09-10T10:00:00Z", + "forecastEnd": "2023-09-10T22:00:00Z", + "cloudCover": 0.77, + "conditionCode": "MostlyCloudy", + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 141, + "windSpeed": 7.84 + } + }, + { + "forecastStart": "2023-09-10T15:00:00Z", + "forecastEnd": "2023-09-11T15:00:00Z", + "conditionCode": "MostlyCloudy", + "maxUvIndex": 6, + "moonPhase": "waningCrescent", + "moonrise": "2023-09-10T16:34:55Z", + "moonset": "2023-09-11T07:32:40Z", + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-11T14:53:54Z", + "solarNoon": "2023-09-11T02:53:44Z", + "sunrise": "2023-09-10T20:36:16Z", + "sunriseCivil": "2023-09-10T20:10:33Z", + "sunriseNautical": "2023-09-10T19:40:27Z", + "sunriseAstronomical": "2023-09-10T19:09:28Z", + "sunset": "2023-09-11T09:11:04Z", + "sunsetCivil": "2023-09-11T09:36:43Z", + "sunsetNautical": "2023-09-11T10:06:47Z", + "sunsetAstronomical": "2023-09-11T10:37:41Z", + "temperatureMax": 30.44, + "temperatureMin": 23.14, + "daytimeForecast": { + "forecastStart": "2023-09-10T22:00:00Z", + "forecastEnd": "2023-09-11T10:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 139, + "windSpeed": 14.23 + }, + "overnightForecast": { + "forecastStart": "2023-09-11T10:00:00Z", + "forecastEnd": "2023-09-11T22:00:00Z", + "cloudCover": 0.83, + "conditionCode": "MostlyCloudy", + "humidity": 0.85, + "precipitationAmount": 0.5, + "precipitationAmountByType": {}, + "precipitationChance": 0.22, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 144, + "windSpeed": 11.26 + } + }, + { + "forecastStart": "2023-09-11T15:00:00Z", + "forecastEnd": "2023-09-12T15:00:00Z", + "conditionCode": "Drizzle", + "maxUvIndex": 5, + "moonPhase": "waningCrescent", + "moonrise": "2023-09-11T17:34:35Z", + "moonset": "2023-09-12T08:04:36Z", + "precipitationAmount": 0.7, + "precipitationAmountByType": {}, + "precipitationChance": 0.47, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-12T14:53:33Z", + "solarNoon": "2023-09-12T02:53:22Z", + "sunrise": "2023-09-11T20:37:00Z", + "sunriseCivil": "2023-09-11T20:11:20Z", + "sunriseNautical": "2023-09-11T19:41:16Z", + "sunriseAstronomical": "2023-09-11T19:10:23Z", + "sunset": "2023-09-12T09:09:37Z", + "sunsetCivil": "2023-09-12T09:35:14Z", + "sunsetNautical": "2023-09-12T10:05:15Z", + "sunsetAstronomical": "2023-09-12T10:36:04Z", + "temperatureMax": 30.42, + "temperatureMin": 23.15, + "daytimeForecast": { + "forecastStart": "2023-09-11T22:00:00Z", + "forecastEnd": "2023-09-12T10:00:00Z", + "cloudCover": 0.68, + "conditionCode": "Drizzle", + "humidity": 0.72, + "precipitationAmount": 0.2, + "precipitationAmountByType": {}, + "precipitationChance": 0.32, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 140, + "windSpeed": 12.44 + }, + "overnightForecast": { + "forecastStart": "2023-09-12T10:00:00Z", + "forecastEnd": "2023-09-12T22:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.47, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 148, + "windSpeed": 8.78 + } + }, + { + "forecastStart": "2023-09-12T15:00:00Z", + "forecastEnd": "2023-09-13T15:00:00Z", + "conditionCode": "Rain", + "maxUvIndex": 6, + "moonPhase": "new", + "moonrise": "2023-09-12T18:33:48Z", + "moonset": "2023-09-13T08:32:25Z", + "precipitationAmount": 7.7, + "precipitationAmountByType": {}, + "precipitationChance": 0.37, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-13T14:53:11Z", + "solarNoon": "2023-09-13T02:53:01Z", + "sunrise": "2023-09-12T20:37:45Z", + "sunriseCivil": "2023-09-12T20:12:07Z", + "sunriseNautical": "2023-09-12T19:42:05Z", + "sunriseAstronomical": "2023-09-12T19:11:18Z", + "sunset": "2023-09-13T09:08:10Z", + "sunsetCivil": "2023-09-13T09:33:46Z", + "sunsetNautical": "2023-09-13T10:03:43Z", + "sunsetAstronomical": "2023-09-13T10:34:27Z", + "temperatureMax": 30.4, + "temperatureMin": 22.15, + "daytimeForecast": { + "forecastStart": "2023-09-12T22:00:00Z", + "forecastEnd": "2023-09-13T10:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "humidity": 0.7, + "precipitationAmount": 7.7, + "precipitationAmountByType": {}, + "precipitationChance": 0.24, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 70, + "windSpeed": 7.79 + }, + "overnightForecast": { + "forecastStart": "2023-09-13T10:00:00Z", + "forecastEnd": "2023-09-13T22:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 151, + "windSpeed": 5.69 + } + }, + { + "forecastStart": "2023-09-13T15:00:00Z", + "forecastEnd": "2023-09-14T15:00:00Z", + "conditionCode": "Drizzle", + "maxUvIndex": 6, + "moonPhase": "new", + "moonrise": "2023-09-13T19:31:58Z", + "moonset": "2023-09-14T08:57:12Z", + "precipitationAmount": 0.6, + "precipitationAmountByType": {}, + "precipitationChance": 0.45, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-14T14:52:50Z", + "solarNoon": "2023-09-14T02:52:40Z", + "sunrise": "2023-09-13T20:38:29Z", + "sunriseCivil": "2023-09-13T20:12:53Z", + "sunriseNautical": "2023-09-13T19:42:55Z", + "sunriseAstronomical": "2023-09-13T19:12:12Z", + "sunset": "2023-09-14T09:06:42Z", + "sunsetCivil": "2023-09-14T09:32:17Z", + "sunsetNautical": "2023-09-14T10:02:11Z", + "sunsetAstronomical": "2023-09-14T10:32:51Z", + "temperatureMax": 30.98, + "temperatureMin": 22.62, + "daytimeForecast": { + "forecastStart": "2023-09-13T22:00:00Z", + "forecastEnd": "2023-09-14T10:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "humidity": 0.71, + "precipitationAmount": 0.6, + "precipitationAmountByType": {}, + "precipitationChance": 0.45, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 11, + "windSpeed": 5.37 + }, + "overnightForecast": { + "forecastStart": "2023-09-14T10:00:00Z", + "forecastEnd": "2023-09-14T22:00:00Z", + "cloudCover": 0.35, + "conditionCode": "MostlyClear", + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.52, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 166, + "windSpeed": 5.09 + } + }, + { + "forecastStart": "2023-09-14T15:00:00Z", + "forecastEnd": "2023-09-15T15:00:00Z", + "conditionCode": "PartlyCloudy", + "maxUvIndex": 7, + "moonPhase": "new", + "moonrise": "2023-09-14T20:29:10Z", + "moonset": "2023-09-15T09:20:27Z", + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.52, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-15T14:52:28Z", + "solarNoon": "2023-09-15T02:52:18Z", + "sunrise": "2023-09-14T20:39:14Z", + "sunriseCivil": "2023-09-14T20:13:39Z", + "sunriseNautical": "2023-09-14T19:43:43Z", + "sunriseAstronomical": "2023-09-14T19:13:06Z", + "sunset": "2023-09-15T09:05:15Z", + "sunsetCivil": "2023-09-15T09:30:48Z", + "sunsetNautical": "2023-09-15T10:00:39Z", + "sunsetAstronomical": "2023-09-15T10:31:15Z", + "temperatureMax": 31.47, + "temperatureMin": 22.4, + "daytimeForecast": { + "forecastStart": "2023-09-14T22:00:00Z", + "forecastEnd": "2023-09-15T10:00:00Z", + "cloudCover": 0.39, + "conditionCode": "PartlyCloudy", + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.29, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 356, + "windSpeed": 7.68 + }, + "overnightForecast": { + "forecastStart": "2023-09-15T10:00:00Z", + "forecastEnd": "2023-09-15T22:00:00Z", + "cloudCover": 0.61, + "conditionCode": "PartlyCloudy", + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 179, + "windSpeed": 5.46 + } + }, + { + "forecastStart": "2023-09-15T15:00:00Z", + "forecastEnd": "2023-09-16T15:00:00Z", + "conditionCode": "MostlyClear", + "maxUvIndex": 8, + "moonPhase": "waxingCrescent", + "moonrise": "2023-09-15T21:26:00Z", + "moonset": "2023-09-16T09:43:08Z", + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-16T14:52:07Z", + "solarNoon": "2023-09-16T02:51:57Z", + "sunrise": "2023-09-15T20:39:59Z", + "sunriseCivil": "2023-09-15T20:14:26Z", + "sunriseNautical": "2023-09-15T19:44:32Z", + "sunriseAstronomical": "2023-09-15T19:13:59Z", + "sunset": "2023-09-16T09:03:47Z", + "sunsetCivil": "2023-09-16T09:29:19Z", + "sunsetNautical": "2023-09-16T09:59:07Z", + "sunsetAstronomical": "2023-09-16T10:29:39Z", + "temperatureMax": 31.77, + "temperatureMin": 23.29, + "daytimeForecast": { + "forecastStart": "2023-09-15T22:00:00Z", + "forecastEnd": "2023-09-16T10:00:00Z", + "cloudCover": 0.18, + "conditionCode": "MostlyClear", + "humidity": 0.65, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 68, + "windSpeed": 6.49 + }, + "overnightForecast": { + "forecastStart": "2023-09-16T10:00:00Z", + "forecastEnd": "2023-09-16T22:00:00Z", + "cloudCover": 0.56, + "conditionCode": "PartlyCloudy", + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.0, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 158, + "windSpeed": 7.94 + } + }, + { + "forecastStart": "2023-09-16T15:00:00Z", + "forecastEnd": "2023-09-17T15:00:00Z", + "conditionCode": "Thunderstorms", + "maxUvIndex": 8, + "moonPhase": "waxingCrescent", + "moonrise": "2023-09-16T22:23:20Z", + "moonset": "2023-09-17T10:06:21Z", + "precipitationAmount": 5.3, + "precipitationAmountByType": {}, + "precipitationChance": 0.35, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-17T14:51:45Z", + "solarNoon": "2023-09-17T02:51:35Z", + "sunrise": "2023-09-16T20:40:43Z", + "sunriseCivil": "2023-09-16T20:15:12Z", + "sunriseNautical": "2023-09-16T19:45:21Z", + "sunriseAstronomical": "2023-09-16T19:14:53Z", + "sunset": "2023-09-17T09:02:19Z", + "sunsetCivil": "2023-09-17T09:27:50Z", + "sunsetNautical": "2023-09-17T09:57:36Z", + "sunsetAstronomical": "2023-09-17T10:28:03Z", + "temperatureMax": 30.68, + "temperatureMin": 23.21, + "daytimeForecast": { + "forecastStart": "2023-09-16T22:00:00Z", + "forecastEnd": "2023-09-17T10:00:00Z", + "cloudCover": 0.38, + "conditionCode": "PartlyCloudy", + "humidity": 0.69, + "precipitationAmount": 3.8, + "precipitationAmountByType": {}, + "precipitationChance": 0.22, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 273, + "windSpeed": 8.43 + }, + "overnightForecast": { + "forecastStart": "2023-09-17T10:00:00Z", + "forecastEnd": "2023-09-17T22:00:00Z", + "cloudCover": 0.52, + "conditionCode": "Thunderstorms", + "humidity": 0.9, + "precipitationAmount": 2.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.43, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 228, + "windSpeed": 4.22 + } + }, + { + "forecastStart": "2023-09-17T15:00:00Z", + "forecastEnd": "2023-09-18T15:00:00Z", + "conditionCode": "Thunderstorms", + "maxUvIndex": 6, + "moonPhase": "waxingCrescent", + "moonrise": "2023-09-17T23:22:07Z", + "moonset": "2023-09-18T10:31:34Z", + "precipitationAmount": 2.1, + "precipitationAmountByType": {}, + "precipitationChance": 0.49, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "solarMidnight": "2023-09-18T14:51:24Z", + "solarNoon": "2023-09-18T02:51:14Z", + "sunrise": "2023-09-17T20:41:28Z", + "sunriseCivil": "2023-09-17T20:15:58Z", + "sunriseNautical": "2023-09-17T19:46:09Z", + "sunriseAstronomical": "2023-09-17T19:15:46Z", + "sunset": "2023-09-18T09:00:51Z", + "sunsetCivil": "2023-09-18T09:26:21Z", + "sunsetNautical": "2023-09-18T09:56:06Z", + "sunsetAstronomical": "2023-09-18T10:26:28Z", + "temperatureMax": 28.15, + "temperatureMin": 22.47, + "daytimeForecast": { + "forecastStart": "2023-09-17T22:00:00Z", + "forecastEnd": "2023-09-18T10:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "humidity": 0.73, + "precipitationAmount": 1.6, + "precipitationAmountByType": {}, + "precipitationChance": 0.3, + "precipitationType": "rain", + "snowfallAmount": 0.0, + "windDirection": 336, + "windSpeed": 12.53 + }, + "overnightForecast": { + "forecastStart": "2023-09-18T10:00:00Z", + "forecastEnd": "2023-09-18T22:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationAmountByType": {}, + "precipitationChance": 0.26, + "precipitationType": "clear", + "snowfallAmount": 0.0, + "windDirection": 162, + "windSpeed": 8.23 + } + } + ] + }, + "forecastHourly": { + "name": "HourlyForecast", + "metadata": { + "attributionURL": "https://developer.apple.com/weatherkit/data-source-attribution/", + "expireTime": "2023-09-08T23:03:04Z", + "latitude": 35.47, + "longitude": 135.749, + "readTime": "2023-09-08T22:03:04Z", + "reportedTime": "2023-09-08T21:02:40Z", + "units": "m", + "version": 1 + }, + "hours": [ + { + "forecastStart": "2023-09-08T14:00:00Z", + "cloudCover": 0.79, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.24, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.55, + "temperatureApparent": 24.61, + "temperatureDewPoint": 21.47, + "uvIndex": 0, + "visibility": 17056.0, + "windDirection": 264, + "windGust": 13.44, + "windSpeed": 6.62 + }, + { + "forecastStart": "2023-09-08T15:00:00Z", + "cloudCover": 0.8, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.24, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.38, + "temperatureApparent": 24.42, + "temperatureDewPoint": 21.44, + "uvIndex": 0, + "visibility": 19190.0, + "windDirection": 261, + "windGust": 11.91, + "windSpeed": 6.64 + }, + { + "forecastStart": "2023-09-08T16:00:00Z", + "cloudCover": 0.89, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.12, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.96, + "temperatureApparent": 23.84, + "temperatureDewPoint": 21.09, + "uvIndex": 0, + "visibility": 17045.0, + "windDirection": 252, + "windGust": 11.15, + "windSpeed": 6.14 + }, + { + "forecastStart": "2023-09-08T17:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.03, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.73, + "temperatureApparent": 23.54, + "temperatureDewPoint": 20.93, + "uvIndex": 0, + "visibility": 16267.0, + "windDirection": 248, + "windGust": 11.57, + "windSpeed": 5.95 + }, + { + "forecastStart": "2023-09-08T18:00:00Z", + "cloudCover": 0.85, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.05, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.57, + "temperatureApparent": 23.32, + "temperatureDewPoint": 20.77, + "uvIndex": 0, + "visibility": 17319.0, + "windDirection": 237, + "windGust": 12.42, + "windSpeed": 5.86 + }, + { + "forecastStart": "2023-09-08T19:00:00Z", + "cloudCover": 0.75, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.96, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.03, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.33, + "temperatureApparent": 23.01, + "temperatureDewPoint": 20.6, + "uvIndex": 0, + "visibility": 16586.0, + "windDirection": 224, + "windGust": 11.3, + "windSpeed": 5.34 + }, + { + "forecastStart": "2023-09-08T20:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.96, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.31, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.18, + "temperatureApparent": 22.8, + "temperatureDewPoint": 20.45, + "uvIndex": 0, + "visibility": 15051.0, + "windDirection": 221, + "windGust": 10.57, + "windSpeed": 5.13 + }, + { + "forecastStart": "2023-09-08T21:00:00Z", + "cloudCover": 0.57, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.55, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.41, + "temperatureApparent": 23.07, + "temperatureDewPoint": 20.54, + "uvIndex": 0, + "visibility": 14835.0, + "windDirection": 237, + "windGust": 10.63, + "windSpeed": 5.7 + }, + { + "forecastStart": "2023-09-08T22:00:00Z", + "cloudCover": 0.61, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.79, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.84, + "temperatureApparent": 24.85, + "temperatureDewPoint": 21.26, + "uvIndex": 1, + "visibility": 20790.0, + "windDirection": 258, + "windGust": 10.47, + "windSpeed": 5.22 + }, + { + "forecastStart": "2023-09-08T23:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.95, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.98, + "temperatureApparent": 26.11, + "temperatureDewPoint": 21.34, + "uvIndex": 2, + "visibility": 22144.0, + "windDirection": 282, + "windGust": 12.74, + "windSpeed": 5.71 + }, + { + "forecastStart": "2023-09-09T00:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.8, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.35, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.13, + "temperatureApparent": 27.42, + "temperatureDewPoint": 21.52, + "uvIndex": 3, + "visibility": 23376.0, + "windDirection": 294, + "windGust": 13.87, + "windSpeed": 6.53 + }, + { + "forecastStart": "2023-09-09T01:00:00Z", + "cloudCover": 0.72, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.75, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.48, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.52, + "temperatureApparent": 29.04, + "temperatureDewPoint": 21.77, + "uvIndex": 5, + "visibility": 23945.0, + "windDirection": 308, + "windGust": 16.04, + "windSpeed": 6.54 + }, + { + "forecastStart": "2023-09-09T02:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.23, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.55, + "temperatureApparent": 30.26, + "temperatureDewPoint": 21.96, + "uvIndex": 6, + "visibility": 19031.0, + "windDirection": 314, + "windGust": 18.1, + "windSpeed": 7.32 + }, + { + "forecastStart": "2023-09-09T03:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.86, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.27, + "temperatureApparent": 31.12, + "temperatureDewPoint": 22.09, + "uvIndex": 6, + "visibility": 20583.0, + "windDirection": 317, + "windGust": 20.77, + "windSpeed": 9.1 + }, + { + "forecastStart": "2023-09-09T04:00:00Z", + "cloudCover": 0.69, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.65, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.62, + "temperatureApparent": 31.53, + "temperatureDewPoint": 22.13, + "uvIndex": 6, + "visibility": 20816.0, + "windDirection": 311, + "windGust": 21.27, + "windSpeed": 10.21 + }, + { + "forecastStart": "2023-09-09T05:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.48, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.42, + "temperatureApparent": 31.3, + "temperatureDewPoint": 22.14, + "uvIndex": 5, + "visibility": 25254.0, + "windDirection": 317, + "windGust": 19.62, + "windSpeed": 10.53 + }, + { + "forecastStart": "2023-09-09T06:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.71, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.54, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.9, + "temperatureApparent": 30.76, + "temperatureDewPoint": 22.2, + "uvIndex": 3, + "visibility": 23283.0, + "windDirection": 335, + "windGust": 18.98, + "windSpeed": 8.63 + }, + { + "forecastStart": "2023-09-09T07:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.74, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.76, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.12, + "temperatureApparent": 29.88, + "temperatureDewPoint": 22.17, + "uvIndex": 2, + "visibility": 24299.0, + "windDirection": 338, + "windGust": 17.04, + "windSpeed": 7.75 + }, + { + "forecastStart": "2023-09-09T08:00:00Z", + "cloudCover": 0.72, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.05, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.38, + "temperatureApparent": 29.06, + "temperatureDewPoint": 22.15, + "uvIndex": 0, + "visibility": 21872.0, + "windDirection": 342, + "windGust": 14.75, + "windSpeed": 6.26 + }, + { + "forecastStart": "2023-09-09T09:00:00Z", + "cloudCover": 0.72, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.38, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.37, + "temperatureApparent": 27.88, + "temperatureDewPoint": 21.99, + "uvIndex": 0, + "visibility": 19645.0, + "windDirection": 344, + "windGust": 10.43, + "windSpeed": 5.2 + }, + { + "forecastStart": "2023-09-09T10:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.73, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.53, + "temperatureApparent": 26.92, + "temperatureDewPoint": 21.88, + "uvIndex": 0, + "visibility": 20088.0, + "windDirection": 339, + "windGust": 6.95, + "windSpeed": 3.59 + }, + { + "forecastStart": "2023-09-09T11:00:00Z", + "cloudCover": 0.51, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.3, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.07, + "temperatureApparent": 26.39, + "temperatureDewPoint": 21.81, + "uvIndex": 0, + "visibility": 17853.0, + "windDirection": 326, + "windGust": 5.27, + "windSpeed": 2.1 + }, + { + "forecastStart": "2023-09-09T12:00:00Z", + "cloudCover": 0.53, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.52, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.87, + "temperatureApparent": 26.15, + "temperatureDewPoint": 21.76, + "uvIndex": 0, + "visibility": 15352.0, + "windDirection": 257, + "windGust": 5.48, + "windSpeed": 0.93 + }, + { + "forecastStart": "2023-09-09T13:00:00Z", + "cloudCover": 0.57, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.53, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.53, + "temperatureApparent": 25.79, + "temperatureDewPoint": 21.79, + "uvIndex": 0, + "visibility": 16260.0, + "windDirection": 188, + "windGust": 4.44, + "windSpeed": 1.79 + }, + { + "forecastStart": "2023-09-09T14:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.46, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.11, + "temperatureApparent": 25.29, + "temperatureDewPoint": 21.67, + "uvIndex": 0, + "visibility": 17443.0, + "windDirection": 183, + "windGust": 4.49, + "windSpeed": 2.19 + }, + { + "forecastStart": "2023-09-09T15:00:00Z", + "cloudCover": 0.45, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.21, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.59, + "temperatureApparent": 24.62, + "temperatureDewPoint": 21.36, + "uvIndex": 0, + "visibility": 17538.0, + "windDirection": 179, + "windGust": 5.32, + "windSpeed": 2.65 + }, + { + "forecastStart": "2023-09-09T16:00:00Z", + "cloudCover": 0.42, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.09, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.09, + "temperatureApparent": 23.98, + "temperatureDewPoint": 21.08, + "uvIndex": 0, + "visibility": 18544.0, + "windDirection": 173, + "windGust": 5.81, + "windSpeed": 3.2 + }, + { + "forecastStart": "2023-09-09T17:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.88, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.85, + "temperatureApparent": 23.66, + "temperatureDewPoint": 20.91, + "uvIndex": 0, + "visibility": 15814.0, + "windDirection": 159, + "windGust": 5.53, + "windSpeed": 3.16 + }, + { + "forecastStart": "2023-09-09T18:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.94, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.62, + "temperatureApparent": 23.34, + "temperatureDewPoint": 20.68, + "uvIndex": 0, + "visibility": 13955.0, + "windDirection": 153, + "windGust": 6.09, + "windSpeed": 3.36 + }, + { + "forecastStart": "2023-09-09T19:00:00Z", + "cloudCover": 0.51, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.96, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.42, + "temperatureApparent": 23.06, + "temperatureDewPoint": 20.48, + "uvIndex": 0, + "visibility": 13042.0, + "windDirection": 150, + "windGust": 6.83, + "windSpeed": 3.71 + }, + { + "forecastStart": "2023-09-09T20:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.29, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.04, + "temperatureApparent": 22.52, + "temperatureDewPoint": 20.04, + "uvIndex": 0, + "visibility": 13016.0, + "windDirection": 156, + "windGust": 7.98, + "windSpeed": 4.27 + }, + { + "forecastStart": "2023-09-09T21:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.61, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.25, + "temperatureApparent": 22.78, + "temperatureDewPoint": 20.18, + "uvIndex": 0, + "visibility": 13648.0, + "windDirection": 156, + "windGust": 8.4, + "windSpeed": 4.69 + }, + { + "forecastStart": "2023-09-09T22:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.87, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.06, + "temperatureApparent": 25.08, + "temperatureDewPoint": 21.26, + "uvIndex": 1, + "visibility": 20589.0, + "windDirection": 150, + "windGust": 7.66, + "windSpeed": 4.33 + }, + { + "forecastStart": "2023-09-09T23:00:00Z", + "cloudCover": 0.58, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.93, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.64, + "temperatureApparent": 28.29, + "temperatureDewPoint": 22.26, + "uvIndex": 2, + "visibility": 24505.0, + "windDirection": 123, + "windGust": 9.63, + "windSpeed": 3.91 + }, + { + "forecastStart": "2023-09-10T00:00:00Z", + "cloudCover": 0.63, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.75, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.93, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.42, + "temperatureApparent": 30.44, + "temperatureDewPoint": 22.64, + "uvIndex": 4, + "visibility": 25988.0, + "windDirection": 105, + "windGust": 12.59, + "windSpeed": 3.96 + }, + { + "forecastStart": "2023-09-10T01:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.79, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.88, + "temperatureApparent": 32.23, + "temperatureDewPoint": 22.95, + "uvIndex": 5, + "visibility": 26343.0, + "windDirection": 99, + "windGust": 14.17, + "windSpeed": 4.06 + }, + { + "forecastStart": "2023-09-10T02:00:00Z", + "cloudCover": 0.62, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.07, + "precipitationType": "rain", + "pressure": 1011.29, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.89, + "temperatureApparent": 33.37, + "temperatureDewPoint": 22.95, + "uvIndex": 6, + "visibility": 20305.0, + "windDirection": 93, + "windGust": 17.75, + "windSpeed": 4.87 + }, + { + "forecastStart": "2023-09-10T03:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.11, + "precipitationType": "rain", + "pressure": 1010.78, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.63, + "temperatureApparent": 34.32, + "temperatureDewPoint": 23.15, + "uvIndex": 6, + "visibility": 21524.0, + "windDirection": 78, + "windGust": 17.43, + "windSpeed": 4.54 + }, + { + "forecastStart": "2023-09-10T04:00:00Z", + "cloudCover": 0.74, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.4, + "precipitationIntensity": 0.4, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1010.37, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.32, + "temperatureApparent": 33.97, + "temperatureDewPoint": 23.16, + "uvIndex": 5, + "visibility": 19608.0, + "windDirection": 60, + "windGust": 15.24, + "windSpeed": 4.9 + }, + { + "forecastStart": "2023-09-10T05:00:00Z", + "cloudCover": 0.79, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.7, + "precipitationIntensity": 0.7, + "precipitationChance": 0.17, + "precipitationType": "rain", + "pressure": 1010.09, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.01, + "temperatureApparent": 33.68, + "temperatureDewPoint": 23.26, + "uvIndex": 4, + "visibility": 19170.0, + "windDirection": 80, + "windGust": 13.53, + "windSpeed": 5.98 + }, + { + "forecastStart": "2023-09-10T06:00:00Z", + "cloudCover": 0.8, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 1.0, + "precipitationIntensity": 1.0, + "precipitationChance": 0.17, + "precipitationType": "rain", + "pressure": 1010.0, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.51, + "temperatureApparent": 33.17, + "temperatureDewPoint": 23.37, + "uvIndex": 3, + "visibility": 20385.0, + "windDirection": 83, + "windGust": 12.55, + "windSpeed": 6.84 + }, + { + "forecastStart": "2023-09-10T07:00:00Z", + "cloudCover": 0.88, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.73, + "precipitationAmount": 0.4, + "precipitationIntensity": 0.4, + "precipitationChance": 0.16, + "precipitationType": "rain", + "pressure": 1010.27, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.73, + "temperatureApparent": 32.28, + "temperatureDewPoint": 23.36, + "uvIndex": 2, + "visibility": 21033.0, + "windDirection": 90, + "windGust": 10.16, + "windSpeed": 6.07 + }, + { + "forecastStart": "2023-09-10T08:00:00Z", + "cloudCover": 0.92, + "conditionCode": "Cloudy", + "daylight": true, + "humidity": 0.77, + "precipitationAmount": 0.5, + "precipitationIntensity": 0.5, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1010.71, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.6, + "temperatureApparent": 30.9, + "temperatureDewPoint": 23.16, + "uvIndex": 0, + "visibility": 19490.0, + "windDirection": 101, + "windGust": 8.18, + "windSpeed": 4.82 + }, + { + "forecastStart": "2023-09-10T09:00:00Z", + "cloudCover": 0.93, + "conditionCode": "Cloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.9, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.52, + "temperatureApparent": 29.7, + "temperatureDewPoint": 23.2, + "uvIndex": 0, + "visibility": 15809.0, + "windDirection": 128, + "windGust": 8.89, + "windSpeed": 4.95 + }, + { + "forecastStart": "2023-09-10T10:00:00Z", + "cloudCover": 0.88, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.12, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.61, + "temperatureApparent": 28.6, + "temperatureDewPoint": 23.02, + "uvIndex": 0, + "visibility": 16975.0, + "windDirection": 134, + "windGust": 10.03, + "windSpeed": 4.52 + }, + { + "forecastStart": "2023-09-10T11:00:00Z", + "cloudCover": 0.87, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.43, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.06, + "temperatureApparent": 27.88, + "temperatureDewPoint": 22.78, + "uvIndex": 0, + "visibility": 17463.0, + "windDirection": 137, + "windGust": 12.4, + "windSpeed": 5.41 + }, + { + "forecastStart": "2023-09-10T12:00:00Z", + "cloudCover": 0.82, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.58, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.78, + "temperatureApparent": 27.45, + "temperatureDewPoint": 22.51, + "uvIndex": 0, + "visibility": 18599.0, + "windDirection": 143, + "windGust": 16.36, + "windSpeed": 6.31 + }, + { + "forecastStart": "2023-09-10T13:00:00Z", + "cloudCover": 0.82, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.55, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.52, + "temperatureApparent": 27.12, + "temperatureDewPoint": 22.4, + "uvIndex": 0, + "visibility": 19560.0, + "windDirection": 144, + "windGust": 19.66, + "windSpeed": 7.23 + }, + { + "forecastStart": "2023-09-10T14:00:00Z", + "cloudCover": 0.72, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.4, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.29, + "temperatureApparent": 26.81, + "temperatureDewPoint": 22.25, + "uvIndex": 0, + "visibility": 20164.0, + "windDirection": 141, + "windGust": 21.15, + "windSpeed": 7.46 + }, + { + "forecastStart": "2023-09-10T15:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.23, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.95, + "temperatureApparent": 26.33, + "temperatureDewPoint": 21.99, + "uvIndex": 0, + "visibility": 20723.0, + "windDirection": 141, + "windGust": 22.26, + "windSpeed": 7.84 + }, + { + "forecastStart": "2023-09-10T16:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.01, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.77, + "temperatureApparent": 26.06, + "temperatureDewPoint": 21.81, + "uvIndex": 0, + "visibility": 20584.0, + "windDirection": 144, + "windGust": 23.53, + "windSpeed": 8.63 + }, + { + "forecastStart": "2023-09-10T17:00:00Z", + "cloudCover": 0.61, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.78, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.47, + "temperatureApparent": 25.65, + "temperatureDewPoint": 21.59, + "uvIndex": 0, + "visibility": 21559.0, + "windDirection": 144, + "windGust": 22.83, + "windSpeed": 8.61 + }, + { + "forecastStart": "2023-09-10T18:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.69, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.28, + "temperatureApparent": 25.4, + "temperatureDewPoint": 21.47, + "uvIndex": 0, + "visibility": 20210.0, + "windDirection": 143, + "windGust": 23.7, + "windSpeed": 8.7 + }, + { + "forecastStart": "2023-09-10T19:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.77, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.14, + "temperatureApparent": 25.23, + "temperatureDewPoint": 21.41, + "uvIndex": 0, + "visibility": 20532.0, + "windDirection": 140, + "windGust": 24.24, + "windSpeed": 8.74 + }, + { + "forecastStart": "2023-09-10T20:00:00Z", + "cloudCover": 0.89, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.89, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.33, + "temperatureApparent": 25.5, + "temperatureDewPoint": 21.6, + "uvIndex": 0, + "visibility": 21210.0, + "windDirection": 138, + "windGust": 23.99, + "windSpeed": 8.81 + }, + { + "forecastStart": "2023-09-10T21:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.1, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.67, + "temperatureApparent": 25.86, + "temperatureDewPoint": 21.56, + "uvIndex": 0, + "visibility": 22103.0, + "windDirection": 138, + "windGust": 25.55, + "windSpeed": 9.05 + }, + { + "forecastStart": "2023-09-10T22:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.84, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.29, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.61, + "temperatureApparent": 26.97, + "temperatureDewPoint": 21.8, + "uvIndex": 1, + "visibility": 22607.0, + "windDirection": 140, + "windGust": 29.08, + "windSpeed": 10.37 + }, + { + "forecastStart": "2023-09-10T23:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.79, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.36, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.85, + "temperatureApparent": 28.36, + "temperatureDewPoint": 21.89, + "uvIndex": 2, + "visibility": 23231.0, + "windDirection": 140, + "windGust": 34.13, + "windSpeed": 12.56 + }, + { + "forecastStart": "2023-09-11T00:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.74, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.39, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.25, + "temperatureApparent": 30.09, + "temperatureDewPoint": 22.3, + "uvIndex": 3, + "visibility": 24284.0, + "windDirection": 140, + "windGust": 38.2, + "windSpeed": 15.65 + }, + { + "forecastStart": "2023-09-11T01:00:00Z", + "cloudCover": 0.58, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.31, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.39, + "temperatureApparent": 31.35, + "temperatureDewPoint": 22.3, + "uvIndex": 5, + "visibility": 24490.0, + "windDirection": 141, + "windGust": 37.55, + "windSpeed": 15.78 + }, + { + "forecastStart": "2023-09-11T02:00:00Z", + "cloudCover": 0.63, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.98, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.55, + "temperatureApparent": 32.71, + "temperatureDewPoint": 22.43, + "uvIndex": 6, + "visibility": 23811.0, + "windDirection": 143, + "windGust": 35.86, + "windSpeed": 15.41 + }, + { + "forecastStart": "2023-09-11T03:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.61, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.27, + "temperatureApparent": 33.55, + "temperatureDewPoint": 22.5, + "uvIndex": 6, + "visibility": 20414.0, + "windDirection": 141, + "windGust": 35.88, + "windSpeed": 15.51 + }, + { + "forecastStart": "2023-09-11T04:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.36, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.43, + "temperatureApparent": 33.81, + "temperatureDewPoint": 22.65, + "uvIndex": 5, + "visibility": 19760.0, + "windDirection": 140, + "windGust": 35.99, + "windSpeed": 15.75 + }, + { + "forecastStart": "2023-09-11T05:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.11, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.15, + "temperatureApparent": 33.47, + "temperatureDewPoint": 22.59, + "uvIndex": 4, + "visibility": 24662.0, + "windDirection": 137, + "windGust": 33.61, + "windSpeed": 15.36 + }, + { + "forecastStart": "2023-09-11T06:00:00Z", + "cloudCover": 0.77, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1009.98, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.97, + "temperatureApparent": 33.23, + "temperatureDewPoint": 22.52, + "uvIndex": 3, + "visibility": 26577.0, + "windDirection": 138, + "windGust": 32.61, + "windSpeed": 14.98 + }, + { + "forecastStart": "2023-09-11T07:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.13, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.25, + "temperatureApparent": 32.28, + "temperatureDewPoint": 22.24, + "uvIndex": 2, + "visibility": 24239.0, + "windDirection": 138, + "windGust": 28.1, + "windSpeed": 13.88 + }, + { + "forecastStart": "2023-09-11T08:00:00Z", + "cloudCover": 0.56, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.48, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.32, + "temperatureApparent": 31.19, + "temperatureDewPoint": 22.14, + "uvIndex": 0, + "visibility": 25056.0, + "windDirection": 137, + "windGust": 24.22, + "windSpeed": 13.02 + }, + { + "forecastStart": "2023-09-11T09:00:00Z", + "cloudCover": 0.55, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.73, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.81, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.15, + "temperatureApparent": 29.77, + "temperatureDewPoint": 21.85, + "uvIndex": 0, + "visibility": 23658.0, + "windDirection": 138, + "windGust": 22.5, + "windSpeed": 11.94 + }, + { + "forecastStart": "2023-09-11T10:00:00Z", + "cloudCover": 0.63, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.29, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.29, + "temperatureApparent": 28.77, + "temperatureDewPoint": 21.72, + "uvIndex": 0, + "visibility": 23317.0, + "windDirection": 137, + "windGust": 21.47, + "windSpeed": 11.25 + }, + { + "forecastStart": "2023-09-11T11:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.8, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.77, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.62, + "temperatureApparent": 28.09, + "temperatureDewPoint": 21.83, + "uvIndex": 0, + "visibility": 21978.0, + "windDirection": 141, + "windGust": 22.71, + "windSpeed": 12.39 + }, + { + "forecastStart": "2023-09-11T12:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.97, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.16, + "temperatureApparent": 27.57, + "temperatureDewPoint": 21.79, + "uvIndex": 0, + "visibility": 20260.0, + "windDirection": 143, + "windGust": 23.67, + "windSpeed": 12.83 + }, + { + "forecastStart": "2023-09-11T13:00:00Z", + "cloudCover": 0.89, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.97, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.74, + "temperatureApparent": 27.07, + "temperatureDewPoint": 21.7, + "uvIndex": 0, + "visibility": 18240.0, + "windDirection": 146, + "windGust": 23.34, + "windSpeed": 12.62 + }, + { + "forecastStart": "2023-09-11T14:00:00Z", + "cloudCover": 0.88, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.83, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.41, + "temperatureApparent": 26.71, + "temperatureDewPoint": 21.68, + "uvIndex": 0, + "visibility": 18444.0, + "windDirection": 147, + "windGust": 22.9, + "windSpeed": 12.07 + }, + { + "forecastStart": "2023-09-11T15:00:00Z", + "cloudCover": 0.9, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.74, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.06, + "temperatureApparent": 26.31, + "temperatureDewPoint": 21.65, + "uvIndex": 0, + "visibility": 20008.0, + "windDirection": 147, + "windGust": 22.01, + "windSpeed": 11.19 + }, + { + "forecastStart": "2023-09-11T16:00:00Z", + "cloudCover": 0.88, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.56, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.73, + "temperatureApparent": 25.92, + "temperatureDewPoint": 21.55, + "uvIndex": 0, + "visibility": 19191.0, + "windDirection": 149, + "windGust": 21.29, + "windSpeed": 10.97 + }, + { + "forecastStart": "2023-09-11T17:00:00Z", + "cloudCover": 0.85, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.35, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.64, + "temperatureApparent": 25.79, + "temperatureDewPoint": 21.46, + "uvIndex": 0, + "visibility": 19549.0, + "windDirection": 150, + "windGust": 20.52, + "windSpeed": 10.5 + }, + { + "forecastStart": "2023-09-11T18:00:00Z", + "cloudCover": 0.82, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.3, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.54, + "temperatureApparent": 25.67, + "temperatureDewPoint": 21.44, + "uvIndex": 0, + "visibility": 19709.0, + "windDirection": 149, + "windGust": 20.04, + "windSpeed": 10.51 + }, + { + "forecastStart": "2023-09-11T19:00:00Z", + "cloudCover": 0.78, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.12, + "precipitationType": "rain", + "pressure": 1011.37, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.35, + "temperatureApparent": 25.42, + "temperatureDewPoint": 21.32, + "uvIndex": 0, + "visibility": 17439.0, + "windDirection": 146, + "windGust": 18.07, + "windSpeed": 10.13 + }, + { + "forecastStart": "2023-09-11T20:00:00Z", + "cloudCover": 0.78, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.13, + "precipitationType": "rain", + "pressure": 1011.53, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.15, + "temperatureApparent": 25.16, + "temperatureDewPoint": 21.2, + "uvIndex": 0, + "visibility": 15297.0, + "windDirection": 141, + "windGust": 16.86, + "windSpeed": 10.34 + }, + { + "forecastStart": "2023-09-11T21:00:00Z", + "cloudCover": 0.78, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.71, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.43, + "temperatureApparent": 25.54, + "temperatureDewPoint": 21.4, + "uvIndex": 0, + "visibility": 17935.0, + "windDirection": 138, + "windGust": 16.66, + "windSpeed": 10.68 + }, + { + "forecastStart": "2023-09-11T22:00:00Z", + "cloudCover": 0.78, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.94, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.45, + "temperatureApparent": 26.83, + "temperatureDewPoint": 21.88, + "uvIndex": 1, + "visibility": 17153.0, + "windDirection": 137, + "windGust": 17.21, + "windSpeed": 10.61 + }, + { + "forecastStart": "2023-09-11T23:00:00Z", + "cloudCover": 0.78, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.05, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.55, + "temperatureApparent": 28.22, + "temperatureDewPoint": 22.33, + "uvIndex": 2, + "visibility": 19126.0, + "windDirection": 138, + "windGust": 19.23, + "windSpeed": 11.13 + }, + { + "forecastStart": "2023-09-12T00:00:00Z", + "cloudCover": 0.79, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.79, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.07, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.61, + "temperatureApparent": 29.53, + "temperatureDewPoint": 22.63, + "uvIndex": 3, + "visibility": 16639.0, + "windDirection": 140, + "windGust": 20.61, + "windSpeed": 11.13 + }, + { + "forecastStart": "2023-09-12T01:00:00Z", + "cloudCover": 0.82, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.75, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.16, + "precipitationType": "rain", + "pressure": 1011.89, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.92, + "temperatureApparent": 31.24, + "temperatureDewPoint": 23.12, + "uvIndex": 4, + "visibility": 16716.0, + "windDirection": 141, + "windGust": 23.35, + "windSpeed": 11.98 + }, + { + "forecastStart": "2023-09-12T02:00:00Z", + "cloudCover": 0.85, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.53, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.97, + "temperatureApparent": 32.63, + "temperatureDewPoint": 23.5, + "uvIndex": 5, + "visibility": 19639.0, + "windDirection": 143, + "windGust": 26.45, + "windSpeed": 13.01 + }, + { + "forecastStart": "2023-09-12T03:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.15, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.76, + "temperatureApparent": 33.53, + "temperatureDewPoint": 23.51, + "uvIndex": 5, + "visibility": 23538.0, + "windDirection": 141, + "windGust": 28.95, + "windSpeed": 13.9 + }, + { + "forecastStart": "2023-09-12T04:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.79, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.21, + "temperatureApparent": 34.01, + "temperatureDewPoint": 23.45, + "uvIndex": 5, + "visibility": 24964.0, + "windDirection": 141, + "windGust": 27.9, + "windSpeed": 13.95 + }, + { + "forecastStart": "2023-09-12T05:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.65, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.43, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.42, + "temperatureApparent": 34.02, + "temperatureDewPoint": 23.05, + "uvIndex": 4, + "visibility": 26399.0, + "windDirection": 140, + "windGust": 26.53, + "windSpeed": 13.78 + }, + { + "forecastStart": "2023-09-12T06:00:00Z", + "cloudCover": 0.56, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.21, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.07, + "temperatureApparent": 33.39, + "temperatureDewPoint": 22.62, + "uvIndex": 3, + "visibility": 27308.0, + "windDirection": 138, + "windGust": 24.56, + "windSpeed": 13.74 + }, + { + "forecastStart": "2023-09-12T07:00:00Z", + "cloudCover": 0.53, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.26, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.06, + "temperatureApparent": 31.98, + "temperatureDewPoint": 22.06, + "uvIndex": 2, + "visibility": 27514.0, + "windDirection": 138, + "windGust": 22.78, + "windSpeed": 13.21 + }, + { + "forecastStart": "2023-09-12T08:00:00Z", + "cloudCover": 0.48, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.51, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.14, + "temperatureApparent": 30.87, + "temperatureDewPoint": 21.87, + "uvIndex": 0, + "visibility": 27191.0, + "windDirection": 140, + "windGust": 19.92, + "windSpeed": 12.0 + }, + { + "forecastStart": "2023-09-12T09:00:00Z", + "cloudCover": 0.5, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.8, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.18, + "temperatureApparent": 29.73, + "temperatureDewPoint": 21.69, + "uvIndex": 0, + "visibility": 26334.0, + "windDirection": 141, + "windGust": 17.65, + "windSpeed": 10.97 + }, + { + "forecastStart": "2023-09-12T10:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.75, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.23, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.19, + "temperatureApparent": 28.55, + "temperatureDewPoint": 21.45, + "uvIndex": 0, + "visibility": 24588.0, + "windDirection": 143, + "windGust": 15.87, + "windSpeed": 10.23 + }, + { + "forecastStart": "2023-09-12T11:00:00Z", + "cloudCover": 0.57, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1011.79, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.36, + "temperatureApparent": 27.6, + "temperatureDewPoint": 21.33, + "uvIndex": 0, + "visibility": 22303.0, + "windDirection": 146, + "windGust": 13.9, + "windSpeed": 9.39 + }, + { + "forecastStart": "2023-09-12T12:00:00Z", + "cloudCover": 0.6, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.81, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.47, + "precipitationType": "clear", + "pressure": 1012.12, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.68, + "temperatureApparent": 26.82, + "temperatureDewPoint": 21.24, + "uvIndex": 0, + "visibility": 20535.0, + "windDirection": 147, + "windGust": 13.32, + "windSpeed": 8.9 + }, + { + "forecastStart": "2023-09-12T13:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1012.18, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.23, + "temperatureApparent": 26.32, + "temperatureDewPoint": 21.2, + "uvIndex": 0, + "visibility": 19800.0, + "windDirection": 149, + "windGust": 13.18, + "windSpeed": 8.59 + }, + { + "forecastStart": "2023-09-12T14:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.09, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.91, + "temperatureApparent": 26.0, + "temperatureDewPoint": 21.27, + "uvIndex": 0, + "visibility": 19587.0, + "windDirection": 149, + "windGust": 13.84, + "windSpeed": 8.87 + }, + { + "forecastStart": "2023-09-12T15:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.99, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.61, + "temperatureApparent": 25.68, + "temperatureDewPoint": 21.28, + "uvIndex": 0, + "visibility": 19418.0, + "windDirection": 149, + "windGust": 15.08, + "windSpeed": 8.93 + }, + { + "forecastStart": "2023-09-12T16:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.93, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.18, + "temperatureApparent": 25.12, + "temperatureDewPoint": 21.01, + "uvIndex": 0, + "visibility": 19187.0, + "windDirection": 146, + "windGust": 16.74, + "windSpeed": 9.49 + }, + { + "forecastStart": "2023-09-12T17:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.75, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.86, + "temperatureApparent": 24.72, + "temperatureDewPoint": 20.84, + "uvIndex": 0, + "visibility": 19001.0, + "windDirection": 146, + "windGust": 17.45, + "windSpeed": 9.12 + }, + { + "forecastStart": "2023-09-12T18:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.77, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.62, + "temperatureApparent": 24.41, + "temperatureDewPoint": 20.68, + "uvIndex": 0, + "visibility": 18698.0, + "windDirection": 149, + "windGust": 17.04, + "windSpeed": 8.68 + }, + { + "forecastStart": "2023-09-12T19:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.93, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.37, + "temperatureApparent": 24.1, + "temperatureDewPoint": 20.58, + "uvIndex": 0, + "visibility": 17831.0, + "windDirection": 149, + "windGust": 16.8, + "windSpeed": 8.61 + }, + { + "forecastStart": "2023-09-12T20:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.23, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.15, + "temperatureApparent": 23.85, + "temperatureDewPoint": 20.5, + "uvIndex": 0, + "visibility": 16846.0, + "windDirection": 150, + "windGust": 15.35, + "windSpeed": 8.36 + }, + { + "forecastStart": "2023-09-12T21:00:00Z", + "cloudCover": 0.75, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.49, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.59, + "temperatureApparent": 24.36, + "temperatureDewPoint": 20.65, + "uvIndex": 0, + "visibility": 16919.0, + "windDirection": 155, + "windGust": 14.09, + "windSpeed": 7.77 + }, + { + "forecastStart": "2023-09-12T22:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.84, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.72, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.82, + "temperatureApparent": 25.82, + "temperatureDewPoint": 21.03, + "uvIndex": 1, + "visibility": 19326.0, + "windDirection": 152, + "windGust": 14.04, + "windSpeed": 7.25 + }, + { + "forecastStart": "2023-09-12T23:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.85, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.5, + "temperatureApparent": 27.77, + "temperatureDewPoint": 21.38, + "uvIndex": 2, + "visibility": 22800.0, + "windDirection": 149, + "windGust": 15.31, + "windSpeed": 7.14 + }, + { + "forecastStart": "2023-09-13T00:00:00Z", + "cloudCover": 0.6, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.73, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.89, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.13, + "temperatureApparent": 29.74, + "temperatureDewPoint": 21.83, + "uvIndex": 4, + "visibility": 24706.0, + "windDirection": 141, + "windGust": 16.42, + "windSpeed": 6.89 + }, + { + "forecastStart": "2023-09-13T01:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.65, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.44, + "temperatureApparent": 31.24, + "temperatureDewPoint": 21.96, + "uvIndex": 5, + "visibility": 23309.0, + "windDirection": 137, + "windGust": 18.64, + "windSpeed": 6.65 + }, + { + "forecastStart": "2023-09-13T02:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.26, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.41, + "temperatureApparent": 32.28, + "temperatureDewPoint": 21.89, + "uvIndex": 5, + "visibility": 20329.0, + "windDirection": 128, + "windGust": 21.69, + "windSpeed": 7.12 + }, + { + "forecastStart": "2023-09-13T03:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.62, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.88, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.06, + "temperatureApparent": 33.0, + "temperatureDewPoint": 21.88, + "uvIndex": 6, + "visibility": 17382.0, + "windDirection": 111, + "windGust": 23.41, + "windSpeed": 7.33 + }, + { + "forecastStart": "2023-09-13T04:00:00Z", + "cloudCover": 0.72, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.61, + "precipitationAmount": 0.9, + "precipitationIntensity": 0.9, + "precipitationChance": 0.12, + "precipitationType": "rain", + "pressure": 1011.55, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.4, + "temperatureApparent": 33.43, + "temperatureDewPoint": 21.98, + "uvIndex": 5, + "visibility": 18579.0, + "windDirection": 56, + "windGust": 23.1, + "windSpeed": 8.09 + }, + { + "forecastStart": "2023-09-13T05:00:00Z", + "cloudCover": 0.72, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.61, + "precipitationAmount": 1.9, + "precipitationIntensity": 1.9, + "precipitationChance": 0.12, + "precipitationType": "rain", + "pressure": 1011.29, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.2, + "temperatureApparent": 33.16, + "temperatureDewPoint": 21.9, + "uvIndex": 4, + "visibility": 18850.0, + "windDirection": 20, + "windGust": 21.81, + "windSpeed": 9.46 + }, + { + "forecastStart": "2023-09-13T06:00:00Z", + "cloudCover": 0.74, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 2.3, + "precipitationIntensity": 2.3, + "precipitationChance": 0.11, + "precipitationType": "rain", + "pressure": 1011.17, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.67, + "temperatureApparent": 32.59, + "temperatureDewPoint": 21.93, + "uvIndex": 3, + "visibility": 20634.0, + "windDirection": 20, + "windGust": 19.72, + "windSpeed": 9.8 + }, + { + "forecastStart": "2023-09-13T07:00:00Z", + "cloudCover": 0.69, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 1.8, + "precipitationIntensity": 1.8, + "precipitationChance": 0.1, + "precipitationType": "rain", + "pressure": 1011.32, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.77, + "temperatureApparent": 31.81, + "temperatureDewPoint": 22.37, + "uvIndex": 1, + "visibility": 19468.0, + "windDirection": 18, + "windGust": 17.55, + "windSpeed": 9.23 + }, + { + "forecastStart": "2023-09-13T08:00:00Z", + "cloudCover": 0.73, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.76, + "precipitationAmount": 0.8, + "precipitationIntensity": 0.8, + "precipitationChance": 0.1, + "precipitationType": "rain", + "pressure": 1011.6, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.61, + "temperatureApparent": 30.78, + "temperatureDewPoint": 22.91, + "uvIndex": 0, + "visibility": 18451.0, + "windDirection": 27, + "windGust": 15.08, + "windSpeed": 8.05 + }, + { + "forecastStart": "2023-09-13T09:00:00Z", + "cloudCover": 0.76, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.94, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.33, + "temperatureApparent": 29.4, + "temperatureDewPoint": 23.01, + "uvIndex": 0, + "visibility": 19184.0, + "windDirection": 32, + "windGust": 12.17, + "windSpeed": 6.68 + }, + { + "forecastStart": "2023-09-13T10:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.3, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.54, + "temperatureApparent": 28.46, + "temperatureDewPoint": 22.87, + "uvIndex": 0, + "visibility": 17878.0, + "windDirection": 69, + "windGust": 11.64, + "windSpeed": 6.69 + }, + { + "forecastStart": "2023-09-13T11:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.71, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.98, + "temperatureApparent": 27.73, + "temperatureDewPoint": 22.63, + "uvIndex": 0, + "visibility": 19357.0, + "windDirection": 155, + "windGust": 11.91, + "windSpeed": 6.23 + }, + { + "forecastStart": "2023-09-13T12:00:00Z", + "cloudCover": 0.82, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.96, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.53, + "temperatureApparent": 27.11, + "temperatureDewPoint": 22.34, + "uvIndex": 0, + "visibility": 19658.0, + "windDirection": 161, + "windGust": 12.47, + "windSpeed": 5.73 + }, + { + "forecastStart": "2023-09-13T13:00:00Z", + "cloudCover": 0.82, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.03, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.17, + "temperatureApparent": 26.69, + "temperatureDewPoint": 22.28, + "uvIndex": 0, + "visibility": 20272.0, + "windDirection": 161, + "windGust": 13.57, + "windSpeed": 5.66 + }, + { + "forecastStart": "2023-09-13T14:00:00Z", + "cloudCover": 0.84, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.99, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.91, + "temperatureApparent": 26.36, + "temperatureDewPoint": 22.17, + "uvIndex": 0, + "visibility": 20994.0, + "windDirection": 159, + "windGust": 15.07, + "windSpeed": 5.83 + }, + { + "forecastStart": "2023-09-13T15:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.95, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.69, + "temperatureApparent": 26.12, + "temperatureDewPoint": 22.17, + "uvIndex": 0, + "visibility": 21105.0, + "windDirection": 158, + "windGust": 16.06, + "windSpeed": 5.93 + }, + { + "forecastStart": "2023-09-13T16:00:00Z", + "cloudCover": 0.88, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.9, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.35, + "temperatureApparent": 25.67, + "temperatureDewPoint": 21.98, + "uvIndex": 0, + "visibility": 20061.0, + "windDirection": 153, + "windGust": 16.05, + "windSpeed": 5.75 + }, + { + "forecastStart": "2023-09-13T17:00:00Z", + "cloudCover": 0.9, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.85, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.14, + "temperatureApparent": 25.39, + "temperatureDewPoint": 21.84, + "uvIndex": 0, + "visibility": 18402.0, + "windDirection": 150, + "windGust": 15.52, + "windSpeed": 5.49 + }, + { + "forecastStart": "2023-09-13T18:00:00Z", + "cloudCover": 0.92, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.87, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.99, + "temperatureApparent": 25.2, + "temperatureDewPoint": 21.76, + "uvIndex": 0, + "visibility": 17039.0, + "windDirection": 149, + "windGust": 15.01, + "windSpeed": 5.32 + }, + { + "forecastStart": "2023-09-13T19:00:00Z", + "cloudCover": 0.9, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.01, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.79, + "temperatureApparent": 24.96, + "temperatureDewPoint": 21.7, + "uvIndex": 0, + "visibility": 16081.0, + "windDirection": 147, + "windGust": 14.39, + "windSpeed": 5.33 + }, + { + "forecastStart": "2023-09-13T20:00:00Z", + "cloudCover": 0.89, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.22, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.63, + "temperatureApparent": 24.75, + "temperatureDewPoint": 21.61, + "uvIndex": 0, + "visibility": 15426.0, + "windDirection": 147, + "windGust": 13.79, + "windSpeed": 5.43 + }, + { + "forecastStart": "2023-09-13T21:00:00Z", + "cloudCover": 0.86, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.41, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.1, + "temperatureApparent": 25.33, + "temperatureDewPoint": 21.8, + "uvIndex": 0, + "visibility": 15660.0, + "windDirection": 147, + "windGust": 14.12, + "windSpeed": 5.52 + }, + { + "forecastStart": "2023-09-13T22:00:00Z", + "cloudCover": 0.77, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.59, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.26, + "temperatureApparent": 26.73, + "temperatureDewPoint": 22.14, + "uvIndex": 1, + "visibility": 17559.0, + "windDirection": 147, + "windGust": 16.14, + "windSpeed": 5.58 + }, + { + "forecastStart": "2023-09-13T23:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.74, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.67, + "temperatureApparent": 28.37, + "temperatureDewPoint": 22.37, + "uvIndex": 2, + "visibility": 20352.0, + "windDirection": 146, + "windGust": 19.09, + "windSpeed": 5.62 + }, + { + "forecastStart": "2023-09-14T00:00:00Z", + "cloudCover": 0.58, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.78, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.37, + "temperatureApparent": 30.48, + "temperatureDewPoint": 22.85, + "uvIndex": 4, + "visibility": 22307.0, + "windDirection": 143, + "windGust": 21.6, + "windSpeed": 5.58 + }, + { + "forecastStart": "2023-09-14T01:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.61, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.73, + "temperatureApparent": 32.18, + "temperatureDewPoint": 23.18, + "uvIndex": 5, + "visibility": 22630.0, + "windDirection": 138, + "windGust": 23.36, + "windSpeed": 5.34 + }, + { + "forecastStart": "2023-09-14T02:00:00Z", + "cloudCover": 0.54, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.32, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.87, + "temperatureApparent": 33.5, + "temperatureDewPoint": 23.23, + "uvIndex": 6, + "visibility": 22159.0, + "windDirection": 111, + "windGust": 24.72, + "windSpeed": 4.99 + }, + { + "forecastStart": "2023-09-14T03:00:00Z", + "cloudCover": 0.56, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.65, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.04, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.66, + "temperatureApparent": 34.42, + "temperatureDewPoint": 23.28, + "uvIndex": 6, + "visibility": 21610.0, + "windDirection": 354, + "windGust": 25.23, + "windSpeed": 4.74 + }, + { + "forecastStart": "2023-09-14T04:00:00Z", + "cloudCover": 0.58, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.77, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.98, + "temperatureApparent": 34.85, + "temperatureDewPoint": 23.37, + "uvIndex": 6, + "visibility": 21210.0, + "windDirection": 341, + "windGust": 24.6, + "windSpeed": 4.79 + }, + { + "forecastStart": "2023-09-14T05:00:00Z", + "cloudCover": 0.6, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1012.53, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.73, + "temperatureApparent": 34.48, + "temperatureDewPoint": 23.24, + "uvIndex": 5, + "visibility": 20870.0, + "windDirection": 336, + "windGust": 23.28, + "windSpeed": 5.07 + }, + { + "forecastStart": "2023-09-14T06:00:00Z", + "cloudCover": 0.59, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1012.49, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.23, + "temperatureApparent": 33.82, + "temperatureDewPoint": 23.07, + "uvIndex": 3, + "visibility": 20831.0, + "windDirection": 336, + "windGust": 22.05, + "windSpeed": 5.34 + }, + { + "forecastStart": "2023-09-14T07:00:00Z", + "cloudCover": 0.53, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.4, + "precipitationType": "rain", + "pressure": 1012.73, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.47, + "temperatureApparent": 32.94, + "temperatureDewPoint": 23.04, + "uvIndex": 2, + "visibility": 21284.0, + "windDirection": 339, + "windGust": 21.18, + "windSpeed": 5.63 + }, + { + "forecastStart": "2023-09-14T08:00:00Z", + "cloudCover": 0.43, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.45, + "precipitationType": "clear", + "pressure": 1013.16, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.35, + "temperatureApparent": 31.56, + "temperatureDewPoint": 22.82, + "uvIndex": 0, + "visibility": 21999.0, + "windDirection": 342, + "windGust": 20.35, + "windSpeed": 5.93 + }, + { + "forecastStart": "2023-09-14T09:00:00Z", + "cloudCover": 0.35, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1013.62, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.11, + "temperatureApparent": 30.03, + "temperatureDewPoint": 22.51, + "uvIndex": 0, + "visibility": 22578.0, + "windDirection": 347, + "windGust": 19.42, + "windSpeed": 5.95 + }, + { + "forecastStart": "2023-09-14T10:00:00Z", + "cloudCover": 0.32, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.79, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.09, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.27, + "temperatureApparent": 29.04, + "temperatureDewPoint": 22.38, + "uvIndex": 0, + "visibility": 22916.0, + "windDirection": 348, + "windGust": 18.19, + "windSpeed": 5.31 + }, + { + "forecastStart": "2023-09-14T11:00:00Z", + "cloudCover": 0.31, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.56, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.53, + "temperatureApparent": 28.23, + "temperatureDewPoint": 22.39, + "uvIndex": 0, + "visibility": 23051.0, + "windDirection": 177, + "windGust": 16.79, + "windSpeed": 4.28 + }, + { + "forecastStart": "2023-09-14T12:00:00Z", + "cloudCover": 0.31, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.87, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.9, + "temperatureApparent": 27.51, + "temperatureDewPoint": 22.32, + "uvIndex": 0, + "visibility": 22814.0, + "windDirection": 171, + "windGust": 15.61, + "windSpeed": 3.72 + }, + { + "forecastStart": "2023-09-14T13:00:00Z", + "cloudCover": 0.31, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.91, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.17, + "temperatureApparent": 26.6, + "temperatureDewPoint": 22.06, + "uvIndex": 0, + "visibility": 21946.0, + "windDirection": 171, + "windGust": 14.7, + "windSpeed": 4.11 + }, + { + "forecastStart": "2023-09-14T14:00:00Z", + "cloudCover": 0.32, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.8, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.6, + "temperatureApparent": 25.9, + "temperatureDewPoint": 21.86, + "uvIndex": 0, + "visibility": 20560.0, + "windDirection": 171, + "windGust": 13.81, + "windSpeed": 4.97 + }, + { + "forecastStart": "2023-09-14T15:00:00Z", + "cloudCover": 0.34, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.66, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.1, + "temperatureApparent": 25.28, + "temperatureDewPoint": 21.66, + "uvIndex": 0, + "visibility": 19040.0, + "windDirection": 170, + "windGust": 12.88, + "windSpeed": 5.57 + }, + { + "forecastStart": "2023-09-14T16:00:00Z", + "cloudCover": 0.37, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.54, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.69, + "temperatureApparent": 24.76, + "temperatureDewPoint": 21.46, + "uvIndex": 0, + "visibility": 17747.0, + "windDirection": 168, + "windGust": 12.0, + "windSpeed": 5.62 + }, + { + "forecastStart": "2023-09-14T17:00:00Z", + "cloudCover": 0.39, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.4, + "precipitationType": "clear", + "pressure": 1014.45, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.4, + "temperatureApparent": 24.4, + "temperatureDewPoint": 21.32, + "uvIndex": 0, + "visibility": 16872.0, + "windDirection": 165, + "windGust": 11.43, + "windSpeed": 5.48 + }, + { + "forecastStart": "2023-09-14T18:00:00Z", + "cloudCover": 0.4, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.44, + "precipitationType": "clear", + "pressure": 1014.45, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.58, + "temperatureApparent": 24.63, + "temperatureDewPoint": 21.43, + "uvIndex": 0, + "visibility": 16548.0, + "windDirection": 162, + "windGust": 11.42, + "windSpeed": 5.38 + }, + { + "forecastStart": "2023-09-14T19:00:00Z", + "cloudCover": 0.4, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.52, + "precipitationType": "clear", + "pressure": 1014.63, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.88, + "temperatureApparent": 25.01, + "temperatureDewPoint": 21.58, + "uvIndex": 0, + "visibility": 16862.0, + "windDirection": 161, + "windGust": 12.15, + "windSpeed": 5.39 + }, + { + "forecastStart": "2023-09-14T20:00:00Z", + "cloudCover": 0.38, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.51, + "precipitationType": "clear", + "pressure": 1014.91, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.36, + "temperatureApparent": 25.6, + "temperatureDewPoint": 21.77, + "uvIndex": 0, + "visibility": 17845.0, + "windDirection": 159, + "windGust": 13.54, + "windSpeed": 5.45 + }, + { + "forecastStart": "2023-09-14T21:00:00Z", + "cloudCover": 0.36, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.42, + "precipitationType": "clear", + "pressure": 1015.18, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.2, + "temperatureApparent": 26.61, + "temperatureDewPoint": 22.01, + "uvIndex": 0, + "visibility": 19537.0, + "windDirection": 158, + "windGust": 15.48, + "windSpeed": 5.62 + }, + { + "forecastStart": "2023-09-14T22:00:00Z", + "cloudCover": 0.32, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.29, + "precipitationType": "clear", + "pressure": 1015.4, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.68, + "temperatureApparent": 28.46, + "temperatureDewPoint": 22.54, + "uvIndex": 1, + "visibility": 21828.0, + "windDirection": 158, + "windGust": 17.86, + "windSpeed": 5.84 + }, + { + "forecastStart": "2023-09-14T23:00:00Z", + "cloudCover": 0.3, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.77, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.54, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.19, + "temperatureApparent": 30.28, + "temperatureDewPoint": 22.85, + "uvIndex": 2, + "visibility": 24036.0, + "windDirection": 155, + "windGust": 20.19, + "windSpeed": 6.09 + }, + { + "forecastStart": "2023-09-15T00:00:00Z", + "cloudCover": 0.3, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.73, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.55, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.65, + "temperatureApparent": 32.15, + "temperatureDewPoint": 23.29, + "uvIndex": 4, + "visibility": 25340.0, + "windDirection": 152, + "windGust": 21.83, + "windSpeed": 6.42 + }, + { + "forecastStart": "2023-09-15T01:00:00Z", + "cloudCover": 0.34, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.35, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.65, + "temperatureApparent": 33.4, + "temperatureDewPoint": 23.5, + "uvIndex": 6, + "visibility": 25384.0, + "windDirection": 144, + "windGust": 22.56, + "windSpeed": 6.91 + }, + { + "forecastStart": "2023-09-15T02:00:00Z", + "cloudCover": 0.41, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.0, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.38, + "temperatureApparent": 34.24, + "temperatureDewPoint": 23.52, + "uvIndex": 7, + "visibility": 24635.0, + "windDirection": 336, + "windGust": 22.83, + "windSpeed": 7.47 + }, + { + "forecastStart": "2023-09-15T03:00:00Z", + "cloudCover": 0.46, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.65, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.62, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.93, + "temperatureApparent": 34.88, + "temperatureDewPoint": 23.53, + "uvIndex": 7, + "visibility": 23513.0, + "windDirection": 336, + "windGust": 22.98, + "windSpeed": 7.95 + }, + { + "forecastStart": "2023-09-15T04:00:00Z", + "cloudCover": 0.46, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.25, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.31, + "temperatureApparent": 35.35, + "temperatureDewPoint": 23.58, + "uvIndex": 6, + "visibility": 22350.0, + "windDirection": 341, + "windGust": 23.21, + "windSpeed": 8.44 + }, + { + "forecastStart": "2023-09-15T05:00:00Z", + "cloudCover": 0.44, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.95, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.46, + "temperatureApparent": 35.61, + "temperatureDewPoint": 23.72, + "uvIndex": 5, + "visibility": 21383.0, + "windDirection": 344, + "windGust": 23.46, + "windSpeed": 8.95 + }, + { + "forecastStart": "2023-09-15T06:00:00Z", + "cloudCover": 0.42, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.83, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.09, + "temperatureApparent": 35.1, + "temperatureDewPoint": 23.58, + "uvIndex": 3, + "visibility": 20900.0, + "windDirection": 347, + "windGust": 23.64, + "windSpeed": 9.13 + }, + { + "forecastStart": "2023-09-15T07:00:00Z", + "cloudCover": 0.41, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.66, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.96, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.33, + "temperatureApparent": 34.1, + "temperatureDewPoint": 23.37, + "uvIndex": 2, + "visibility": 21046.0, + "windDirection": 350, + "windGust": 23.66, + "windSpeed": 8.78 + }, + { + "forecastStart": "2023-09-15T08:00:00Z", + "cloudCover": 0.4, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.25, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.98, + "temperatureApparent": 32.39, + "temperatureDewPoint": 23.05, + "uvIndex": 0, + "visibility": 21562.0, + "windDirection": 356, + "windGust": 23.51, + "windSpeed": 8.13 + }, + { + "forecastStart": "2023-09-15T09:00:00Z", + "cloudCover": 0.41, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.74, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.61, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.94, + "temperatureApparent": 31.13, + "temperatureDewPoint": 22.87, + "uvIndex": 0, + "visibility": 22131.0, + "windDirection": 3, + "windGust": 23.21, + "windSpeed": 7.48 + }, + { + "forecastStart": "2023-09-15T10:00:00Z", + "cloudCover": 0.43, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.02, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.95, + "temperatureApparent": 29.98, + "temperatureDewPoint": 22.79, + "uvIndex": 0, + "visibility": 22382.0, + "windDirection": 20, + "windGust": 22.68, + "windSpeed": 6.83 + }, + { + "forecastStart": "2023-09-15T11:00:00Z", + "cloudCover": 0.46, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.43, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.21, + "temperatureApparent": 29.17, + "temperatureDewPoint": 22.81, + "uvIndex": 0, + "visibility": 22366.0, + "windDirection": 129, + "windGust": 22.04, + "windSpeed": 6.1 + }, + { + "forecastStart": "2023-09-15T12:00:00Z", + "cloudCover": 0.48, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.84, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.71, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.56, + "temperatureApparent": 28.42, + "temperatureDewPoint": 22.73, + "uvIndex": 0, + "visibility": 22383.0, + "windDirection": 159, + "windGust": 21.64, + "windSpeed": 5.6 + }, + { + "forecastStart": "2023-09-15T13:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.52, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.22, + "temperatureApparent": 28.24, + "temperatureDewPoint": 23.16, + "uvIndex": 0, + "visibility": 21966.0, + "windDirection": 164, + "windGust": 16.35, + "windSpeed": 5.58 + }, + { + "forecastStart": "2023-09-15T14:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.37, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.61, + "temperatureApparent": 27.42, + "temperatureDewPoint": 22.86, + "uvIndex": 0, + "visibility": 22357.0, + "windDirection": 168, + "windGust": 17.11, + "windSpeed": 5.79 + }, + { + "forecastStart": "2023-09-15T15:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.21, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.16, + "temperatureApparent": 26.86, + "temperatureDewPoint": 22.71, + "uvIndex": 0, + "visibility": 22189.0, + "windDirection": 182, + "windGust": 17.32, + "windSpeed": 5.77 + }, + { + "forecastStart": "2023-09-15T16:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.07, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.78, + "temperatureApparent": 26.4, + "temperatureDewPoint": 22.61, + "uvIndex": 0, + "visibility": 21374.0, + "windDirection": 201, + "windGust": 16.6, + "windSpeed": 5.27 + }, + { + "forecastStart": "2023-09-15T17:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.95, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.48, + "temperatureApparent": 26.01, + "temperatureDewPoint": 22.46, + "uvIndex": 0, + "visibility": 20612.0, + "windDirection": 219, + "windGust": 15.52, + "windSpeed": 4.62 + }, + { + "forecastStart": "2023-09-15T18:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.88, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.29, + "temperatureApparent": 25.72, + "temperatureDewPoint": 22.27, + "uvIndex": 0, + "visibility": 20500.0, + "windDirection": 216, + "windGust": 14.64, + "windSpeed": 4.32 + }, + { + "forecastStart": "2023-09-15T19:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.91, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.48, + "temperatureApparent": 25.98, + "temperatureDewPoint": 22.39, + "uvIndex": 0, + "visibility": 21319.0, + "windDirection": 198, + "windGust": 14.06, + "windSpeed": 4.73 + }, + { + "forecastStart": "2023-09-15T20:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.99, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.8, + "temperatureApparent": 26.34, + "temperatureDewPoint": 22.42, + "uvIndex": 0, + "visibility": 22776.0, + "windDirection": 189, + "windGust": 13.7, + "windSpeed": 5.49 + }, + { + "forecastStart": "2023-09-15T21:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.07, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.43, + "temperatureApparent": 27.08, + "temperatureDewPoint": 22.53, + "uvIndex": 0, + "visibility": 24606.0, + "windDirection": 183, + "windGust": 13.77, + "windSpeed": 5.95 + }, + { + "forecastStart": "2023-09-15T22:00:00Z", + "cloudCover": 0.59, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.84, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.12, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.47, + "temperatureApparent": 28.28, + "temperatureDewPoint": 22.65, + "uvIndex": 1, + "visibility": 26540.0, + "windDirection": 179, + "windGust": 14.38, + "windSpeed": 5.77 + }, + { + "forecastStart": "2023-09-15T23:00:00Z", + "cloudCover": 0.52, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.79, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.13, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.85, + "temperatureApparent": 29.91, + "temperatureDewPoint": 22.86, + "uvIndex": 2, + "visibility": 28300.0, + "windDirection": 170, + "windGust": 15.2, + "windSpeed": 5.27 + }, + { + "forecastStart": "2023-09-16T00:00:00Z", + "cloudCover": 0.44, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.74, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1015.04, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.02, + "temperatureApparent": 31.22, + "temperatureDewPoint": 22.86, + "uvIndex": 4, + "visibility": 29608.0, + "windDirection": 155, + "windGust": 15.85, + "windSpeed": 4.76 + }, + { + "forecastStart": "2023-09-16T01:00:00Z", + "cloudCover": 0.24, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.52, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.24, + "temperatureApparent": 32.46, + "temperatureDewPoint": 22.63, + "uvIndex": 6, + "visibility": 30511.0, + "windDirection": 110, + "windGust": 16.27, + "windSpeed": 6.81 + }, + { + "forecastStart": "2023-09-16T02:00:00Z", + "cloudCover": 0.16, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1014.01, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.25, + "temperatureApparent": 33.46, + "temperatureDewPoint": 22.37, + "uvIndex": 8, + "visibility": 31232.0, + "windDirection": 30, + "windGust": 16.55, + "windSpeed": 6.86 + }, + { + "forecastStart": "2023-09-16T03:00:00Z", + "cloudCover": 0.1, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.59, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.45, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.05, + "temperatureApparent": 34.18, + "temperatureDewPoint": 22.04, + "uvIndex": 8, + "visibility": 31751.0, + "windDirection": 17, + "windGust": 16.52, + "windSpeed": 6.8 + }, + { + "forecastStart": "2023-09-16T04:00:00Z", + "cloudCover": 0.1, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.57, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.89, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.54, + "temperatureApparent": 34.67, + "temperatureDewPoint": 21.93, + "uvIndex": 8, + "visibility": 32057.0, + "windDirection": 17, + "windGust": 16.08, + "windSpeed": 6.62 + }, + { + "forecastStart": "2023-09-16T05:00:00Z", + "cloudCover": 0.1, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.56, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.39, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.77, + "temperatureApparent": 34.92, + "temperatureDewPoint": 21.91, + "uvIndex": 6, + "visibility": 32148.0, + "windDirection": 20, + "windGust": 15.48, + "windSpeed": 6.45 + }, + { + "forecastStart": "2023-09-16T06:00:00Z", + "cloudCover": 0.1, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.56, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.11, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 31.44, + "temperatureApparent": 34.45, + "temperatureDewPoint": 21.72, + "uvIndex": 4, + "visibility": 32012.0, + "windDirection": 26, + "windGust": 15.08, + "windSpeed": 6.43 + }, + { + "forecastStart": "2023-09-16T07:00:00Z", + "cloudCover": 0.07, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.59, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.15, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.69, + "temperatureApparent": 33.61, + "temperatureDewPoint": 21.71, + "uvIndex": 2, + "visibility": 31608.0, + "windDirection": 39, + "windGust": 14.88, + "windSpeed": 6.61 + }, + { + "forecastStart": "2023-09-16T08:00:00Z", + "cloudCover": 0.02, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.41, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.61, + "temperatureApparent": 32.49, + "temperatureDewPoint": 21.87, + "uvIndex": 0, + "visibility": 30972.0, + "windDirection": 72, + "windGust": 14.82, + "windSpeed": 6.95 + }, + { + "forecastStart": "2023-09-16T09:00:00Z", + "cloudCover": 0.02, + "conditionCode": "Clear", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.75, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.54, + "temperatureApparent": 31.45, + "temperatureDewPoint": 22.15, + "uvIndex": 0, + "visibility": 30211.0, + "windDirection": 116, + "windGust": 15.13, + "windSpeed": 7.45 + }, + { + "forecastStart": "2023-09-16T10:00:00Z", + "cloudCover": 0.13, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.73, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.13, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.57, + "temperatureApparent": 30.46, + "temperatureDewPoint": 22.34, + "uvIndex": 0, + "visibility": 29403.0, + "windDirection": 140, + "windGust": 16.09, + "windSpeed": 8.15 + }, + { + "forecastStart": "2023-09-16T11:00:00Z", + "cloudCover": 0.31, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.47, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.87, + "temperatureApparent": 29.82, + "temperatureDewPoint": 22.62, + "uvIndex": 0, + "visibility": 28466.0, + "windDirection": 149, + "windGust": 17.37, + "windSpeed": 8.87 + }, + { + "forecastStart": "2023-09-16T12:00:00Z", + "cloudCover": 0.45, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.6, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.29, + "temperatureApparent": 29.3, + "temperatureDewPoint": 22.89, + "uvIndex": 0, + "visibility": 27272.0, + "windDirection": 155, + "windGust": 18.29, + "windSpeed": 9.21 + }, + { + "forecastStart": "2023-09-16T13:00:00Z", + "cloudCover": 0.51, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.41, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.74, + "temperatureApparent": 28.73, + "temperatureDewPoint": 22.99, + "uvIndex": 0, + "visibility": 25405.0, + "windDirection": 159, + "windGust": 18.49, + "windSpeed": 8.96 + }, + { + "forecastStart": "2023-09-16T14:00:00Z", + "cloudCover": 0.55, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1013.01, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.02, + "temperatureApparent": 27.86, + "temperatureDewPoint": 22.82, + "uvIndex": 0, + "visibility": 22840.0, + "windDirection": 162, + "windGust": 18.47, + "windSpeed": 8.45 + }, + { + "forecastStart": "2023-09-16T15:00:00Z", + "cloudCover": 0.59, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.55, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.48, + "temperatureApparent": 27.22, + "temperatureDewPoint": 22.73, + "uvIndex": 0, + "visibility": 20049.0, + "windDirection": 162, + "windGust": 18.79, + "windSpeed": 8.1 + }, + { + "forecastStart": "2023-09-16T16:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.1, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.03, + "temperatureApparent": 26.69, + "temperatureDewPoint": 22.65, + "uvIndex": 0, + "visibility": 17483.0, + "windDirection": 162, + "windGust": 19.81, + "windSpeed": 8.15 + }, + { + "forecastStart": "2023-09-16T17:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.68, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.69, + "temperatureApparent": 26.29, + "temperatureDewPoint": 22.6, + "uvIndex": 0, + "visibility": 15558.0, + "windDirection": 161, + "windGust": 20.96, + "windSpeed": 8.3 + }, + { + "forecastStart": "2023-09-16T18:00:00Z", + "cloudCover": 0.72, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.39, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.5, + "temperatureApparent": 26.01, + "temperatureDewPoint": 22.41, + "uvIndex": 0, + "visibility": 14707.0, + "windDirection": 159, + "windGust": 21.41, + "windSpeed": 8.24 + }, + { + "forecastStart": "2023-09-16T19:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.93, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.29, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.75, + "temperatureApparent": 26.33, + "temperatureDewPoint": 22.51, + "uvIndex": 0, + "visibility": 15332.0, + "windDirection": 159, + "windGust": 20.42, + "windSpeed": 7.62 + }, + { + "forecastStart": "2023-09-16T20:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.31, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.19, + "temperatureApparent": 26.84, + "temperatureDewPoint": 22.59, + "uvIndex": 0, + "visibility": 17205.0, + "windDirection": 158, + "windGust": 18.61, + "windSpeed": 6.66 + }, + { + "forecastStart": "2023-09-16T21:00:00Z", + "cloudCover": 0.58, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.87, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.37, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.92, + "temperatureApparent": 27.67, + "temperatureDewPoint": 22.64, + "uvIndex": 0, + "visibility": 19811.0, + "windDirection": 158, + "windGust": 17.14, + "windSpeed": 5.86 + }, + { + "forecastStart": "2023-09-16T22:00:00Z", + "cloudCover": 0.48, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.82, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.46, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.0, + "temperatureApparent": 28.85, + "temperatureDewPoint": 22.61, + "uvIndex": 1, + "visibility": 22602.0, + "windDirection": 161, + "windGust": 16.78, + "windSpeed": 5.5 + }, + { + "forecastStart": "2023-09-16T23:00:00Z", + "cloudCover": 0.39, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.51, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.47, + "temperatureApparent": 30.6, + "temperatureDewPoint": 22.86, + "uvIndex": 2, + "visibility": 24958.0, + "windDirection": 165, + "windGust": 17.21, + "windSpeed": 5.56 + }, + { + "forecastStart": "2023-09-17T00:00:00Z", + "cloudCover": 0.33, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.71, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.39, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.49, + "temperatureApparent": 31.7, + "temperatureDewPoint": 22.77, + "uvIndex": 4, + "visibility": 26230.0, + "windDirection": 174, + "windGust": 17.96, + "windSpeed": 6.04 + }, + { + "forecastStart": "2023-09-17T01:00:00Z", + "cloudCover": 0.3, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.98, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.35, + "temperatureApparent": 32.64, + "temperatureDewPoint": 22.73, + "uvIndex": 6, + "visibility": 26296.0, + "windDirection": 192, + "windGust": 19.15, + "windSpeed": 7.23 + }, + { + "forecastStart": "2023-09-17T02:00:00Z", + "cloudCover": 0.29, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.65, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1010.38, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.14, + "temperatureApparent": 33.56, + "temperatureDewPoint": 22.78, + "uvIndex": 7, + "visibility": 25582.0, + "windDirection": 225, + "windGust": 20.89, + "windSpeed": 8.9 + }, + { + "forecastStart": "2023-09-17T03:00:00Z", + "cloudCover": 0.3, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.09, + "precipitationType": "rain", + "pressure": 1009.75, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.66, + "temperatureApparent": 34.13, + "temperatureDewPoint": 22.76, + "uvIndex": 8, + "visibility": 24257.0, + "windDirection": 264, + "windGust": 22.67, + "windSpeed": 10.27 + }, + { + "forecastStart": "2023-09-17T04:00:00Z", + "cloudCover": 0.37, + "conditionCode": "MostlyClear", + "daylight": true, + "humidity": 0.62, + "precipitationAmount": 0.4, + "precipitationIntensity": 0.4, + "precipitationChance": 0.1, + "precipitationType": "rain", + "pressure": 1009.18, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.54, + "temperatureApparent": 33.88, + "temperatureDewPoint": 22.54, + "uvIndex": 7, + "visibility": 22565.0, + "windDirection": 293, + "windGust": 23.93, + "windSpeed": 10.82 + }, + { + "forecastStart": "2023-09-17T05:00:00Z", + "cloudCover": 0.45, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.63, + "precipitationAmount": 0.6, + "precipitationIntensity": 0.6, + "precipitationChance": 0.12, + "precipitationType": "rain", + "pressure": 1008.71, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 30.15, + "temperatureApparent": 33.36, + "temperatureDewPoint": 22.38, + "uvIndex": 5, + "visibility": 20796.0, + "windDirection": 308, + "windGust": 24.39, + "windSpeed": 10.72 + }, + { + "forecastStart": "2023-09-17T06:00:00Z", + "cloudCover": 0.5, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.64, + "precipitationAmount": 0.7, + "precipitationIntensity": 0.7, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1008.46, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 29.62, + "temperatureApparent": 32.67, + "temperatureDewPoint": 22.19, + "uvIndex": 3, + "visibility": 19195.0, + "windDirection": 312, + "windGust": 23.9, + "windSpeed": 10.28 + }, + { + "forecastStart": "2023-09-17T07:00:00Z", + "cloudCover": 0.47, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.7, + "precipitationIntensity": 0.7, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1008.53, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.91, + "temperatureApparent": 31.84, + "temperatureDewPoint": 22.12, + "uvIndex": 1, + "visibility": 17604.0, + "windDirection": 312, + "windGust": 22.3, + "windSpeed": 9.59 + }, + { + "forecastStart": "2023-09-17T08:00:00Z", + "cloudCover": 0.41, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.6, + "precipitationIntensity": 0.6, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1008.82, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.91, + "temperatureApparent": 30.64, + "temperatureDewPoint": 21.93, + "uvIndex": 0, + "visibility": 15869.0, + "windDirection": 305, + "windGust": 19.73, + "windSpeed": 8.58 + }, + { + "forecastStart": "2023-09-17T09:00:00Z", + "cloudCover": 0.35, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.74, + "precipitationAmount": 0.5, + "precipitationIntensity": 0.5, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1009.21, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.99, + "temperatureApparent": 29.64, + "temperatureDewPoint": 21.96, + "uvIndex": 0, + "visibility": 14244.0, + "windDirection": 291, + "windGust": 16.49, + "windSpeed": 7.34 + }, + { + "forecastStart": "2023-09-17T10:00:00Z", + "cloudCover": 0.33, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.78, + "precipitationAmount": 0.4, + "precipitationIntensity": 0.4, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1009.65, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.1, + "temperatureApparent": 28.63, + "temperatureDewPoint": 21.88, + "uvIndex": 0, + "visibility": 12808.0, + "windDirection": 257, + "windGust": 12.71, + "windSpeed": 5.91 + }, + { + "forecastStart": "2023-09-17T11:00:00Z", + "cloudCover": 0.34, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.82, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.14, + "precipitationType": "rain", + "pressure": 1010.04, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.29, + "temperatureApparent": 27.76, + "temperatureDewPoint": 21.92, + "uvIndex": 0, + "visibility": 11601.0, + "windDirection": 212, + "windGust": 9.16, + "windSpeed": 4.54 + }, + { + "forecastStart": "2023-09-17T12:00:00Z", + "cloudCover": 0.36, + "conditionCode": "MostlyClear", + "daylight": false, + "humidity": 0.85, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.28, + "precipitationType": "rain", + "pressure": 1010.24, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.65, + "temperatureApparent": 27.06, + "temperatureDewPoint": 21.92, + "uvIndex": 0, + "visibility": 10807.0, + "windDirection": 192, + "windGust": 7.09, + "windSpeed": 3.62 + }, + { + "forecastStart": "2023-09-17T13:00:00Z", + "cloudCover": 0.4, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.3, + "precipitationType": "rain", + "pressure": 1010.15, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.15, + "temperatureApparent": 26.54, + "temperatureDewPoint": 21.96, + "uvIndex": 0, + "visibility": 10514.0, + "windDirection": 185, + "windGust": 7.2, + "windSpeed": 3.27 + }, + { + "forecastStart": "2023-09-17T14:00:00Z", + "cloudCover": 0.44, + "conditionCode": "Drizzle", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.3, + "precipitationType": "rain", + "pressure": 1009.87, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.6, + "temperatureApparent": 25.87, + "temperatureDewPoint": 21.79, + "uvIndex": 0, + "visibility": 10700.0, + "windDirection": 182, + "windGust": 8.37, + "windSpeed": 3.22 + }, + { + "forecastStart": "2023-09-17T15:00:00Z", + "cloudCover": 0.49, + "conditionCode": "Drizzle", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.31, + "precipitationType": "rain", + "pressure": 1009.56, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.21, + "temperatureApparent": 25.46, + "temperatureDewPoint": 21.84, + "uvIndex": 0, + "visibility": 11364.0, + "windDirection": 180, + "windGust": 9.21, + "windSpeed": 3.3 + }, + { + "forecastStart": "2023-09-17T16:00:00Z", + "cloudCover": 0.53, + "conditionCode": "Drizzle", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.33, + "precipitationType": "rain", + "pressure": 1009.29, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.87, + "temperatureApparent": 25.08, + "temperatureDewPoint": 21.78, + "uvIndex": 0, + "visibility": 12623.0, + "windDirection": 182, + "windGust": 9.0, + "windSpeed": 3.46 + }, + { + "forecastStart": "2023-09-17T17:00:00Z", + "cloudCover": 0.56, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.35, + "precipitationType": "clear", + "pressure": 1009.09, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.62, + "temperatureApparent": 24.79, + "temperatureDewPoint": 21.74, + "uvIndex": 0, + "visibility": 14042.0, + "windDirection": 186, + "windGust": 8.37, + "windSpeed": 3.72 + }, + { + "forecastStart": "2023-09-17T18:00:00Z", + "cloudCover": 0.59, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.95, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.37, + "precipitationType": "clear", + "pressure": 1009.01, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.47, + "temperatureApparent": 24.57, + "temperatureDewPoint": 21.59, + "uvIndex": 0, + "visibility": 14809.0, + "windDirection": 201, + "windGust": 7.99, + "windSpeed": 4.07 + }, + { + "forecastStart": "2023-09-17T19:00:00Z", + "cloudCover": 0.62, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.94, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.39, + "precipitationType": "clear", + "pressure": 1009.07, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.68, + "temperatureApparent": 24.85, + "temperatureDewPoint": 21.73, + "uvIndex": 0, + "visibility": 14586.0, + "windDirection": 258, + "windGust": 8.18, + "windSpeed": 4.55 + }, + { + "forecastStart": "2023-09-17T20:00:00Z", + "cloudCover": 0.64, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.92, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.39, + "precipitationType": "clear", + "pressure": 1009.23, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.01, + "temperatureApparent": 25.2, + "temperatureDewPoint": 21.71, + "uvIndex": 0, + "visibility": 13831.0, + "windDirection": 305, + "windGust": 8.77, + "windSpeed": 5.17 + }, + { + "forecastStart": "2023-09-17T21:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.38, + "precipitationType": "clear", + "pressure": 1009.47, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.51, + "temperatureApparent": 25.77, + "temperatureDewPoint": 21.77, + "uvIndex": 0, + "visibility": 12945.0, + "windDirection": 318, + "windGust": 9.69, + "windSpeed": 5.77 + }, + { + "forecastStart": "2023-09-17T22:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.3, + "precipitationType": "clear", + "pressure": 1009.77, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.21, + "temperatureApparent": 26.53, + "temperatureDewPoint": 21.79, + "uvIndex": 1, + "visibility": 12093.0, + "windDirection": 324, + "windGust": 10.88, + "windSpeed": 6.26 + }, + { + "forecastStart": "2023-09-17T23:00:00Z", + "cloudCover": 0.8, + "conditionCode": "Drizzle", + "daylight": true, + "humidity": 0.83, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1010.09, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.08, + "temperatureApparent": 27.55, + "temperatureDewPoint": 21.95, + "uvIndex": 2, + "visibility": 11231.0, + "windDirection": 329, + "windGust": 12.21, + "windSpeed": 6.68 + }, + { + "forecastStart": "2023-09-18T00:00:00Z", + "cloudCover": 0.87, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.8, + "precipitationAmount": 0.2, + "precipitationIntensity": 0.2, + "precipitationChance": 0.15, + "precipitationType": "rain", + "pressure": 1010.33, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.71, + "temperatureApparent": 28.22, + "temperatureDewPoint": 21.92, + "uvIndex": 3, + "visibility": 10426.0, + "windDirection": 332, + "windGust": 13.52, + "windSpeed": 7.12 + }, + { + "forecastStart": "2023-09-18T01:00:00Z", + "cloudCover": 0.67, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.72, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1007.43, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.19, + "temperatureApparent": 29.75, + "temperatureDewPoint": 21.7, + "uvIndex": 5, + "visibility": 24135.0, + "windDirection": 330, + "windGust": 11.36, + "windSpeed": 11.36 + }, + { + "forecastStart": "2023-09-18T02:00:00Z", + "cloudCover": 0.7, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.7, + "precipitationAmount": 0.3, + "precipitationIntensity": 0.3, + "precipitationChance": 0.09, + "precipitationType": "rain", + "pressure": 1007.05, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.51, + "temperatureApparent": 30.07, + "temperatureDewPoint": 21.64, + "uvIndex": 6, + "visibility": 24135.0, + "windDirection": 332, + "windGust": 12.06, + "windSpeed": 12.06 + }, + { + "forecastStart": "2023-09-18T03:00:00Z", + "cloudCover": 0.71, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.5, + "precipitationIntensity": 0.5, + "precipitationChance": 0.1, + "precipitationType": "rain", + "pressure": 1006.67, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.75, + "temperatureApparent": 30.31, + "temperatureDewPoint": 21.59, + "uvIndex": 6, + "visibility": 24135.0, + "windDirection": 333, + "windGust": 12.81, + "windSpeed": 12.81 + }, + { + "forecastStart": "2023-09-18T04:00:00Z", + "cloudCover": 0.67, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.68, + "precipitationAmount": 0.4, + "precipitationIntensity": 0.4, + "precipitationChance": 0.1, + "precipitationType": "rain", + "pressure": 1006.28, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.99, + "temperatureApparent": 30.55, + "temperatureDewPoint": 21.53, + "uvIndex": 5, + "visibility": 24135.0, + "windDirection": 335, + "windGust": 13.68, + "windSpeed": 13.68 + }, + { + "forecastStart": "2023-09-18T05:00:00Z", + "cloudCover": 0.6, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1005.89, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 28.15, + "temperatureApparent": 30.66, + "temperatureDewPoint": 21.4, + "uvIndex": 4, + "visibility": 24135.0, + "windDirection": 336, + "windGust": 14.61, + "windSpeed": 14.61 + }, + { + "forecastStart": "2023-09-18T06:00:00Z", + "cloudCover": 0.57, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.67, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.27, + "precipitationType": "clear", + "pressure": 1005.67, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.92, + "temperatureApparent": 30.31, + "temperatureDewPoint": 21.18, + "uvIndex": 3, + "visibility": 24135.0, + "windDirection": 338, + "windGust": 15.25, + "windSpeed": 15.25 + }, + { + "forecastStart": "2023-09-18T07:00:00Z", + "cloudCover": 0.6, + "conditionCode": "PartlyCloudy", + "daylight": true, + "humidity": 0.69, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.28, + "precipitationType": "clear", + "pressure": 1005.74, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 27.4, + "temperatureApparent": 29.78, + "temperatureDewPoint": 21.26, + "uvIndex": 1, + "visibility": 24135.0, + "windDirection": 339, + "windGust": 15.45, + "windSpeed": 15.45 + }, + { + "forecastStart": "2023-09-18T08:00:00Z", + "cloudCover": 0.65, + "conditionCode": "MostlyCloudy", + "daylight": true, + "humidity": 0.73, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.26, + "precipitationType": "clear", + "pressure": 1005.98, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.73, + "temperatureApparent": 29.13, + "temperatureDewPoint": 21.44, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 341, + "windGust": 15.38, + "windSpeed": 15.38 + }, + { + "forecastStart": "2023-09-18T09:00:00Z", + "cloudCover": 0.68, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.76, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1006.22, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 26.12, + "temperatureApparent": 28.55, + "temperatureDewPoint": 21.64, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 341, + "windGust": 15.27, + "windSpeed": 15.27 + }, + { + "forecastStart": "2023-09-18T10:00:00Z", + "cloudCover": 0.66, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.79, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1006.44, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.56, + "temperatureApparent": 27.93, + "temperatureDewPoint": 21.61, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 339, + "windGust": 15.09, + "windSpeed": 15.09 + }, + { + "forecastStart": "2023-09-18T11:00:00Z", + "cloudCover": 0.61, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.81, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.26, + "precipitationType": "clear", + "pressure": 1006.66, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 25.19, + "temperatureApparent": 27.58, + "temperatureDewPoint": 21.74, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 336, + "windGust": 14.88, + "windSpeed": 14.88 + }, + { + "forecastStart": "2023-09-18T12:00:00Z", + "cloudCover": 0.61, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.26, + "precipitationType": "clear", + "pressure": 1006.79, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 24.83, + "temperatureApparent": 27.2, + "temperatureDewPoint": 21.78, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 333, + "windGust": 14.91, + "windSpeed": 14.91 + }, + { + "forecastStart": "2023-09-18T13:00:00Z", + "cloudCover": 0.38, + "conditionCode": "PartlyCloudy", + "daylight": false, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1012.36, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.63, + "temperatureApparent": 25.69, + "temperatureDewPoint": 21.23, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 83, + "windGust": 4.58, + "windSpeed": 3.16 + }, + { + "forecastStart": "2023-09-18T14:00:00Z", + "cloudCover": 0.74, + "conditionCode": "MostlyCloudy", + "daylight": false, + "humidity": 0.89, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.96, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.13, + "temperatureApparent": 25.13, + "temperatureDewPoint": 21.18, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 144, + "windGust": 4.74, + "windSpeed": 4.52 + }, + { + "forecastStart": "2023-09-18T15:00:00Z", + "cloudCover": 1.0, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.6, + "pressureTrend": "rising", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.6, + "temperatureApparent": 24.48, + "temperatureDewPoint": 20.95, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 152, + "windGust": 5.63, + "windSpeed": 5.63 + }, + { + "forecastStart": "2023-09-18T16:00:00Z", + "cloudCover": 1.0, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.37, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.27, + "temperatureApparent": 24.04, + "temperatureDewPoint": 20.69, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 156, + "windGust": 6.02, + "windSpeed": 6.02 + }, + { + "forecastStart": "2023-09-18T17:00:00Z", + "cloudCover": 1.0, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.91, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.2, + "pressureTrend": "falling", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.02, + "temperatureApparent": 23.69, + "temperatureDewPoint": 20.45, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 162, + "windGust": 6.15, + "windSpeed": 6.15 + }, + { + "forecastStart": "2023-09-18T18:00:00Z", + "cloudCover": 1.0, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.9, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.08, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.88, + "temperatureApparent": 23.45, + "temperatureDewPoint": 20.16, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 167, + "windGust": 6.48, + "windSpeed": 6.48 + }, + { + "forecastStart": "2023-09-18T19:00:00Z", + "cloudCover": 1.0, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.88, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.04, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.76, + "temperatureApparent": 23.19, + "temperatureDewPoint": 19.76, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 165, + "windGust": 7.51, + "windSpeed": 7.51 + }, + { + "forecastStart": "2023-09-18T20:00:00Z", + "cloudCover": 0.99, + "conditionCode": "Cloudy", + "daylight": false, + "humidity": 0.86, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.05, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 21.96, + "temperatureApparent": 23.35, + "temperatureDewPoint": 19.58, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 162, + "windGust": 8.73, + "windSpeed": 8.73 + }, + { + "forecastStart": "2023-09-18T21:00:00Z", + "cloudCover": 0.98, + "conditionCode": "Cloudy", + "daylight": true, + "humidity": 0.83, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.06, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 22.53, + "temperatureApparent": 23.93, + "temperatureDewPoint": 19.54, + "uvIndex": 0, + "visibility": 24135.0, + "windDirection": 164, + "windGust": 9.21, + "windSpeed": 9.11 + }, + { + "forecastStart": "2023-09-18T22:00:00Z", + "cloudCover": 0.96, + "conditionCode": "Cloudy", + "daylight": true, + "humidity": 0.78, + "precipitationAmount": 0.0, + "precipitationIntensity": 0.0, + "precipitationChance": 0.0, + "precipitationType": "clear", + "pressure": 1011.09, + "pressureTrend": "steady", + "snowfallIntensity": 0.0, + "snowfallAmount": 0.0, + "temperature": 23.8, + "temperatureApparent": 25.34, + "temperatureDewPoint": 19.73, + "uvIndex": 1, + "visibility": 24204.0, + "windDirection": 171, + "windGust": 9.03, + "windSpeed": 7.91 + } + ] + } +} diff --git a/tests/components/weatherkit/snapshots/test_weather.ambr b/tests/components/weatherkit/snapshots/test_weather.ambr new file mode 100644 index 0000000000000..63321b5a81321 --- /dev/null +++ b/tests/components/weatherkit/snapshots/test_weather.ambr @@ -0,0 +1,4087 @@ +# serializer version: 1 +# name: test_daily_forecast + dict({ + 'forecast': list([ + dict({ + 'condition': 'cloudy', + 'datetime': '2023-09-08T15:00:00Z', + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'temperature': 28.6, + 'templow': 21.2, + 'uv_index': 6, + }), + dict({ + 'condition': 'rainy', + 'datetime': '2023-09-09T15:00:00Z', + 'precipitation': 3.6, + 'precipitation_probability': 45.0, + 'temperature': 30.6, + 'templow': 21.0, + 'uv_index': 6, + }), + dict({ + 'condition': 'cloudy', + 'datetime': '2023-09-10T15:00:00Z', + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'temperature': 30.4, + 'templow': 23.1, + 'uv_index': 6, + }), + dict({ + 'condition': 'rainy', + 'datetime': '2023-09-11T15:00:00Z', + 'precipitation': 0.7, + 'precipitation_probability': 47.0, + 'temperature': 30.4, + 'templow': 23.1, + 'uv_index': 5, + }), + dict({ + 'condition': 'rainy', + 'datetime': '2023-09-12T15:00:00Z', + 'precipitation': 7.7, + 'precipitation_probability': 37.0, + 'temperature': 30.4, + 'templow': 22.1, + 'uv_index': 6, + }), + dict({ + 'condition': 'rainy', + 'datetime': '2023-09-13T15:00:00Z', + 'precipitation': 0.6, + 'precipitation_probability': 45.0, + 'temperature': 31.0, + 'templow': 22.6, + 'uv_index': 6, + }), + dict({ + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T15:00:00Z', + 'precipitation': 0.0, + 'precipitation_probability': 52.0, + 'temperature': 31.5, + 'templow': 22.4, + 'uv_index': 7, + }), + dict({ + 'condition': 'sunny', + 'datetime': '2023-09-15T15:00:00Z', + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'temperature': 31.8, + 'templow': 23.3, + 'uv_index': 8, + }), + dict({ + 'condition': 'lightning', + 'datetime': '2023-09-16T15:00:00Z', + 'precipitation': 5.3, + 'precipitation_probability': 35.0, + 'temperature': 30.7, + 'templow': 23.2, + 'uv_index': 8, + }), + dict({ + 'condition': 'lightning', + 'datetime': '2023-09-17T15:00:00Z', + 'precipitation': 2.1, + 'precipitation_probability': 49.0, + 'temperature': 28.1, + 'templow': 22.5, + 'uv_index': 6, + }), + ]), + }) +# --- +# name: test_hourly_forecast + dict({ + 'forecast': list([ + dict({ + 'apparent_temperature': 24.6, + 'cloud_coverage': 79.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T14:00:00Z', + 'dew_point': 21.5, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.24, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 264, + 'wind_gust_speed': 13.44, + 'wind_speed': 6.62, + }), + dict({ + 'apparent_temperature': 24.4, + 'cloud_coverage': 80.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T15:00:00Z', + 'dew_point': 21.4, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.24, + 'temperature': 22.4, + 'uv_index': 0, + 'wind_bearing': 261, + 'wind_gust_speed': 11.91, + 'wind_speed': 6.64, + }), + dict({ + 'apparent_temperature': 23.8, + 'cloud_coverage': 89.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T16:00:00Z', + 'dew_point': 21.1, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.12, + 'temperature': 22.0, + 'uv_index': 0, + 'wind_bearing': 252, + 'wind_gust_speed': 11.15, + 'wind_speed': 6.14, + }), + dict({ + 'apparent_temperature': 23.5, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T17:00:00Z', + 'dew_point': 20.9, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.03, + 'temperature': 21.7, + 'uv_index': 0, + 'wind_bearing': 248, + 'wind_gust_speed': 11.57, + 'wind_speed': 5.95, + }), + dict({ + 'apparent_temperature': 23.3, + 'cloud_coverage': 85.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T18:00:00Z', + 'dew_point': 20.8, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.05, + 'temperature': 21.6, + 'uv_index': 0, + 'wind_bearing': 237, + 'wind_gust_speed': 12.42, + 'wind_speed': 5.86, + }), + dict({ + 'apparent_temperature': 23.0, + 'cloud_coverage': 75.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T19:00:00Z', + 'dew_point': 20.6, + 'humidity': 96, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.03, + 'temperature': 21.3, + 'uv_index': 0, + 'wind_bearing': 224, + 'wind_gust_speed': 11.3, + 'wind_speed': 5.34, + }), + dict({ + 'apparent_temperature': 22.8, + 'cloud_coverage': 68.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T20:00:00Z', + 'dew_point': 20.4, + 'humidity': 96, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.31, + 'temperature': 21.2, + 'uv_index': 0, + 'wind_bearing': 221, + 'wind_gust_speed': 10.57, + 'wind_speed': 5.13, + }), + dict({ + 'apparent_temperature': 23.1, + 'cloud_coverage': 56.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-08T21:00:00Z', + 'dew_point': 20.5, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.55, + 'temperature': 21.4, + 'uv_index': 0, + 'wind_bearing': 237, + 'wind_gust_speed': 10.63, + 'wind_speed': 5.7, + }), + dict({ + 'apparent_temperature': 24.9, + 'cloud_coverage': 61.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-08T22:00:00Z', + 'dew_point': 21.3, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.79, + 'temperature': 22.8, + 'uv_index': 1, + 'wind_bearing': 258, + 'wind_gust_speed': 10.47, + 'wind_speed': 5.22, + }), + dict({ + 'apparent_temperature': 26.1, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-08T23:00:00Z', + 'dew_point': 21.3, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.95, + 'temperature': 24.0, + 'uv_index': 2, + 'wind_bearing': 282, + 'wind_gust_speed': 12.74, + 'wind_speed': 5.71, + }), + dict({ + 'apparent_temperature': 27.4, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T00:00:00Z', + 'dew_point': 21.5, + 'humidity': 80, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.35, + 'temperature': 25.1, + 'uv_index': 3, + 'wind_bearing': 294, + 'wind_gust_speed': 13.87, + 'wind_speed': 6.53, + }), + dict({ + 'apparent_temperature': 29.0, + 'cloud_coverage': 72.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T01:00:00Z', + 'dew_point': 21.8, + 'humidity': 75, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.48, + 'temperature': 26.5, + 'uv_index': 5, + 'wind_bearing': 308, + 'wind_gust_speed': 16.04, + 'wind_speed': 6.54, + }), + dict({ + 'apparent_temperature': 30.3, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T02:00:00Z', + 'dew_point': 22.0, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.23, + 'temperature': 27.6, + 'uv_index': 6, + 'wind_bearing': 314, + 'wind_gust_speed': 18.1, + 'wind_speed': 7.32, + }), + dict({ + 'apparent_temperature': 31.1, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T03:00:00Z', + 'dew_point': 22.1, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.86, + 'temperature': 28.3, + 'uv_index': 6, + 'wind_bearing': 317, + 'wind_gust_speed': 20.77, + 'wind_speed': 9.1, + }), + dict({ + 'apparent_temperature': 31.5, + 'cloud_coverage': 69.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T04:00:00Z', + 'dew_point': 22.1, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.65, + 'temperature': 28.6, + 'uv_index': 6, + 'wind_bearing': 311, + 'wind_gust_speed': 21.27, + 'wind_speed': 10.21, + }), + dict({ + 'apparent_temperature': 31.3, + 'cloud_coverage': 71.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T05:00:00Z', + 'dew_point': 22.1, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.48, + 'temperature': 28.4, + 'uv_index': 5, + 'wind_bearing': 317, + 'wind_gust_speed': 19.62, + 'wind_speed': 10.53, + }), + dict({ + 'apparent_temperature': 30.8, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T06:00:00Z', + 'dew_point': 22.2, + 'humidity': 71, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.54, + 'temperature': 27.9, + 'uv_index': 3, + 'wind_bearing': 335, + 'wind_gust_speed': 18.98, + 'wind_speed': 8.63, + }), + dict({ + 'apparent_temperature': 29.9, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T07:00:00Z', + 'dew_point': 22.2, + 'humidity': 74, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.76, + 'temperature': 27.1, + 'uv_index': 2, + 'wind_bearing': 338, + 'wind_gust_speed': 17.04, + 'wind_speed': 7.75, + }), + dict({ + 'apparent_temperature': 29.1, + 'cloud_coverage': 72.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T08:00:00Z', + 'dew_point': 22.1, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.05, + 'temperature': 26.4, + 'uv_index': 0, + 'wind_bearing': 342, + 'wind_gust_speed': 14.75, + 'wind_speed': 6.26, + }), + dict({ + 'apparent_temperature': 27.9, + 'cloud_coverage': 72.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T09:00:00Z', + 'dew_point': 22.0, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.38, + 'temperature': 25.4, + 'uv_index': 0, + 'wind_bearing': 344, + 'wind_gust_speed': 10.43, + 'wind_speed': 5.2, + }), + dict({ + 'apparent_temperature': 26.9, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T10:00:00Z', + 'dew_point': 21.9, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.73, + 'temperature': 24.5, + 'uv_index': 0, + 'wind_bearing': 339, + 'wind_gust_speed': 6.95, + 'wind_speed': 3.59, + }), + dict({ + 'apparent_temperature': 26.4, + 'cloud_coverage': 51.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T11:00:00Z', + 'dew_point': 21.8, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.3, + 'temperature': 24.1, + 'uv_index': 0, + 'wind_bearing': 326, + 'wind_gust_speed': 5.27, + 'wind_speed': 2.1, + }), + dict({ + 'apparent_temperature': 26.1, + 'cloud_coverage': 53.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T12:00:00Z', + 'dew_point': 21.8, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.52, + 'temperature': 23.9, + 'uv_index': 0, + 'wind_bearing': 257, + 'wind_gust_speed': 5.48, + 'wind_speed': 0.93, + }), + dict({ + 'apparent_temperature': 25.8, + 'cloud_coverage': 56.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T13:00:00Z', + 'dew_point': 21.8, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.53, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 188, + 'wind_gust_speed': 4.44, + 'wind_speed': 1.79, + }), + dict({ + 'apparent_temperature': 25.3, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T14:00:00Z', + 'dew_point': 21.7, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.46, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 183, + 'wind_gust_speed': 4.49, + 'wind_speed': 2.19, + }), + dict({ + 'apparent_temperature': 24.6, + 'cloud_coverage': 45.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T15:00:00Z', + 'dew_point': 21.4, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.21, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 179, + 'wind_gust_speed': 5.32, + 'wind_speed': 2.65, + }), + dict({ + 'apparent_temperature': 24.0, + 'cloud_coverage': 42.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T16:00:00Z', + 'dew_point': 21.1, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.09, + 'temperature': 22.1, + 'uv_index': 0, + 'wind_bearing': 173, + 'wind_gust_speed': 5.81, + 'wind_speed': 3.2, + }), + dict({ + 'apparent_temperature': 23.7, + 'cloud_coverage': 54.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T17:00:00Z', + 'dew_point': 20.9, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.88, + 'temperature': 21.9, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 5.53, + 'wind_speed': 3.16, + }), + dict({ + 'apparent_temperature': 23.3, + 'cloud_coverage': 54.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T18:00:00Z', + 'dew_point': 20.7, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.94, + 'temperature': 21.6, + 'uv_index': 0, + 'wind_bearing': 153, + 'wind_gust_speed': 6.09, + 'wind_speed': 3.36, + }), + dict({ + 'apparent_temperature': 23.1, + 'cloud_coverage': 51.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T19:00:00Z', + 'dew_point': 20.5, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.96, + 'temperature': 21.4, + 'uv_index': 0, + 'wind_bearing': 150, + 'wind_gust_speed': 6.83, + 'wind_speed': 3.71, + }), + dict({ + 'apparent_temperature': 22.5, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T20:00:00Z', + 'dew_point': 20.0, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.29, + 'temperature': 21.0, + 'uv_index': 0, + 'wind_bearing': 156, + 'wind_gust_speed': 7.98, + 'wind_speed': 4.27, + }), + dict({ + 'apparent_temperature': 22.8, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T21:00:00Z', + 'dew_point': 20.2, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.61, + 'temperature': 21.2, + 'uv_index': 0, + 'wind_bearing': 156, + 'wind_gust_speed': 8.4, + 'wind_speed': 4.69, + }), + dict({ + 'apparent_temperature': 25.1, + 'cloud_coverage': 68.0, + 'condition': 'cloudy', + 'datetime': '2023-09-09T22:00:00Z', + 'dew_point': 21.3, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.87, + 'temperature': 23.1, + 'uv_index': 1, + 'wind_bearing': 150, + 'wind_gust_speed': 7.66, + 'wind_speed': 4.33, + }), + dict({ + 'apparent_temperature': 28.3, + 'cloud_coverage': 57.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-09T23:00:00Z', + 'dew_point': 22.3, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.93, + 'temperature': 25.6, + 'uv_index': 2, + 'wind_bearing': 123, + 'wind_gust_speed': 9.63, + 'wind_speed': 3.91, + }), + dict({ + 'apparent_temperature': 30.4, + 'cloud_coverage': 63.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T00:00:00Z', + 'dew_point': 22.6, + 'humidity': 75, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.93, + 'temperature': 27.4, + 'uv_index': 4, + 'wind_bearing': 105, + 'wind_gust_speed': 12.59, + 'wind_speed': 3.96, + }), + dict({ + 'apparent_temperature': 32.2, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T01:00:00Z', + 'dew_point': 22.9, + 'humidity': 70, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.79, + 'temperature': 28.9, + 'uv_index': 5, + 'wind_bearing': 99, + 'wind_gust_speed': 14.17, + 'wind_speed': 4.06, + }), + dict({ + 'apparent_temperature': 33.4, + 'cloud_coverage': 62.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-10T02:00:00Z', + 'dew_point': 22.9, + 'humidity': 66, + 'precipitation': 0.3, + 'precipitation_probability': 7.000000000000001, + 'pressure': 1011.29, + 'temperature': 29.9, + 'uv_index': 6, + 'wind_bearing': 93, + 'wind_gust_speed': 17.75, + 'wind_speed': 4.87, + }), + dict({ + 'apparent_temperature': 34.3, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T03:00:00Z', + 'dew_point': 23.1, + 'humidity': 64, + 'precipitation': 0.3, + 'precipitation_probability': 11.0, + 'pressure': 1010.78, + 'temperature': 30.6, + 'uv_index': 6, + 'wind_bearing': 78, + 'wind_gust_speed': 17.43, + 'wind_speed': 4.54, + }), + dict({ + 'apparent_temperature': 34.0, + 'cloud_coverage': 74.0, + 'condition': 'rainy', + 'datetime': '2023-09-10T04:00:00Z', + 'dew_point': 23.2, + 'humidity': 66, + 'precipitation': 0.4, + 'precipitation_probability': 15.0, + 'pressure': 1010.37, + 'temperature': 30.3, + 'uv_index': 5, + 'wind_bearing': 60, + 'wind_gust_speed': 15.24, + 'wind_speed': 4.9, + }), + dict({ + 'apparent_temperature': 33.7, + 'cloud_coverage': 79.0, + 'condition': 'rainy', + 'datetime': '2023-09-10T05:00:00Z', + 'dew_point': 23.3, + 'humidity': 67, + 'precipitation': 0.7, + 'precipitation_probability': 17.0, + 'pressure': 1010.09, + 'temperature': 30.0, + 'uv_index': 4, + 'wind_bearing': 80, + 'wind_gust_speed': 13.53, + 'wind_speed': 5.98, + }), + dict({ + 'apparent_temperature': 33.2, + 'cloud_coverage': 80.0, + 'condition': 'rainy', + 'datetime': '2023-09-10T06:00:00Z', + 'dew_point': 23.4, + 'humidity': 70, + 'precipitation': 1.0, + 'precipitation_probability': 17.0, + 'pressure': 1010.0, + 'temperature': 29.5, + 'uv_index': 3, + 'wind_bearing': 83, + 'wind_gust_speed': 12.55, + 'wind_speed': 6.84, + }), + dict({ + 'apparent_temperature': 32.3, + 'cloud_coverage': 88.0, + 'condition': 'rainy', + 'datetime': '2023-09-10T07:00:00Z', + 'dew_point': 23.4, + 'humidity': 73, + 'precipitation': 0.4, + 'precipitation_probability': 16.0, + 'pressure': 1010.27, + 'temperature': 28.7, + 'uv_index': 2, + 'wind_bearing': 90, + 'wind_gust_speed': 10.16, + 'wind_speed': 6.07, + }), + dict({ + 'apparent_temperature': 30.9, + 'cloud_coverage': 92.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T08:00:00Z', + 'dew_point': 23.2, + 'humidity': 77, + 'precipitation': 0.5, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1010.71, + 'temperature': 27.6, + 'uv_index': 0, + 'wind_bearing': 101, + 'wind_gust_speed': 8.18, + 'wind_speed': 4.82, + }), + dict({ + 'apparent_temperature': 29.7, + 'cloud_coverage': 93.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T09:00:00Z', + 'dew_point': 23.2, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.9, + 'temperature': 26.5, + 'uv_index': 0, + 'wind_bearing': 128, + 'wind_gust_speed': 8.89, + 'wind_speed': 4.95, + }), + dict({ + 'apparent_temperature': 28.6, + 'cloud_coverage': 88.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T10:00:00Z', + 'dew_point': 23.0, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.12, + 'temperature': 25.6, + 'uv_index': 0, + 'wind_bearing': 134, + 'wind_gust_speed': 10.03, + 'wind_speed': 4.52, + }), + dict({ + 'apparent_temperature': 27.9, + 'cloud_coverage': 87.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T11:00:00Z', + 'dew_point': 22.8, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.43, + 'temperature': 25.1, + 'uv_index': 0, + 'wind_bearing': 137, + 'wind_gust_speed': 12.4, + 'wind_speed': 5.41, + }), + dict({ + 'apparent_temperature': 27.4, + 'cloud_coverage': 82.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T12:00:00Z', + 'dew_point': 22.5, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.58, + 'temperature': 24.8, + 'uv_index': 0, + 'wind_bearing': 143, + 'wind_gust_speed': 16.36, + 'wind_speed': 6.31, + }), + dict({ + 'apparent_temperature': 27.1, + 'cloud_coverage': 82.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T13:00:00Z', + 'dew_point': 22.4, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.55, + 'temperature': 24.5, + 'uv_index': 0, + 'wind_bearing': 144, + 'wind_gust_speed': 19.66, + 'wind_speed': 7.23, + }), + dict({ + 'apparent_temperature': 26.8, + 'cloud_coverage': 72.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T14:00:00Z', + 'dew_point': 22.2, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.4, + 'temperature': 24.3, + 'uv_index': 0, + 'wind_bearing': 141, + 'wind_gust_speed': 21.15, + 'wind_speed': 7.46, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T15:00:00Z', + 'dew_point': 22.0, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.23, + 'temperature': 23.9, + 'uv_index': 0, + 'wind_bearing': 141, + 'wind_gust_speed': 22.26, + 'wind_speed': 7.84, + }), + dict({ + 'apparent_temperature': 26.1, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T16:00:00Z', + 'dew_point': 21.8, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.01, + 'temperature': 23.8, + 'uv_index': 0, + 'wind_bearing': 144, + 'wind_gust_speed': 23.53, + 'wind_speed': 8.63, + }), + dict({ + 'apparent_temperature': 25.6, + 'cloud_coverage': 61.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-10T17:00:00Z', + 'dew_point': 21.6, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.78, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 144, + 'wind_gust_speed': 22.83, + 'wind_speed': 8.61, + }), + dict({ + 'apparent_temperature': 25.4, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T18:00:00Z', + 'dew_point': 21.5, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.69, + 'temperature': 23.3, + 'uv_index': 0, + 'wind_bearing': 143, + 'wind_gust_speed': 23.7, + 'wind_speed': 8.7, + }), + dict({ + 'apparent_temperature': 25.2, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T19:00:00Z', + 'dew_point': 21.4, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.77, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 140, + 'wind_gust_speed': 24.24, + 'wind_speed': 8.74, + }), + dict({ + 'apparent_temperature': 25.5, + 'cloud_coverage': 89.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T20:00:00Z', + 'dew_point': 21.6, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.89, + 'temperature': 23.3, + 'uv_index': 0, + 'wind_bearing': 138, + 'wind_gust_speed': 23.99, + 'wind_speed': 8.81, + }), + dict({ + 'apparent_temperature': 25.9, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T21:00:00Z', + 'dew_point': 21.6, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.1, + 'temperature': 23.7, + 'uv_index': 0, + 'wind_bearing': 138, + 'wind_gust_speed': 25.55, + 'wind_speed': 9.05, + }), + dict({ + 'apparent_temperature': 27.0, + 'cloud_coverage': 71.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T22:00:00Z', + 'dew_point': 21.8, + 'humidity': 84, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.29, + 'temperature': 24.6, + 'uv_index': 1, + 'wind_bearing': 140, + 'wind_gust_speed': 29.08, + 'wind_speed': 10.37, + }), + dict({ + 'apparent_temperature': 28.4, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-10T23:00:00Z', + 'dew_point': 21.9, + 'humidity': 79, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.36, + 'temperature': 25.9, + 'uv_index': 2, + 'wind_bearing': 140, + 'wind_gust_speed': 34.13, + 'wind_speed': 12.56, + }), + dict({ + 'apparent_temperature': 30.1, + 'cloud_coverage': 68.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T00:00:00Z', + 'dew_point': 22.3, + 'humidity': 74, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.39, + 'temperature': 27.2, + 'uv_index': 3, + 'wind_bearing': 140, + 'wind_gust_speed': 38.2, + 'wind_speed': 15.65, + }), + dict({ + 'apparent_temperature': 31.4, + 'cloud_coverage': 57.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-11T01:00:00Z', + 'dew_point': 22.3, + 'humidity': 70, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.31, + 'temperature': 28.4, + 'uv_index': 5, + 'wind_bearing': 141, + 'wind_gust_speed': 37.55, + 'wind_speed': 15.78, + }), + dict({ + 'apparent_temperature': 32.7, + 'cloud_coverage': 63.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T02:00:00Z', + 'dew_point': 22.4, + 'humidity': 66, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.98, + 'temperature': 29.6, + 'uv_index': 6, + 'wind_bearing': 143, + 'wind_gust_speed': 35.86, + 'wind_speed': 15.41, + }), + dict({ + 'apparent_temperature': 33.5, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T03:00:00Z', + 'dew_point': 22.5, + 'humidity': 63, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.61, + 'temperature': 30.3, + 'uv_index': 6, + 'wind_bearing': 141, + 'wind_gust_speed': 35.88, + 'wind_speed': 15.51, + }), + dict({ + 'apparent_temperature': 33.8, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T04:00:00Z', + 'dew_point': 22.6, + 'humidity': 63, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.36, + 'temperature': 30.4, + 'uv_index': 5, + 'wind_bearing': 140, + 'wind_gust_speed': 35.99, + 'wind_speed': 15.75, + }), + dict({ + 'apparent_temperature': 33.5, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T05:00:00Z', + 'dew_point': 22.6, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.11, + 'temperature': 30.1, + 'uv_index': 4, + 'wind_bearing': 137, + 'wind_gust_speed': 33.61, + 'wind_speed': 15.36, + }), + dict({ + 'apparent_temperature': 33.2, + 'cloud_coverage': 77.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T06:00:00Z', + 'dew_point': 22.5, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1009.98, + 'temperature': 30.0, + 'uv_index': 3, + 'wind_bearing': 138, + 'wind_gust_speed': 32.61, + 'wind_speed': 14.98, + }), + dict({ + 'apparent_temperature': 32.3, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T07:00:00Z', + 'dew_point': 22.2, + 'humidity': 66, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.13, + 'temperature': 29.2, + 'uv_index': 2, + 'wind_bearing': 138, + 'wind_gust_speed': 28.1, + 'wind_speed': 13.88, + }), + dict({ + 'apparent_temperature': 31.2, + 'cloud_coverage': 56.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-11T08:00:00Z', + 'dew_point': 22.1, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.48, + 'temperature': 28.3, + 'uv_index': 0, + 'wind_bearing': 137, + 'wind_gust_speed': 24.22, + 'wind_speed': 13.02, + }), + dict({ + 'apparent_temperature': 29.8, + 'cloud_coverage': 55.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-11T09:00:00Z', + 'dew_point': 21.9, + 'humidity': 73, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.81, + 'temperature': 27.1, + 'uv_index': 0, + 'wind_bearing': 138, + 'wind_gust_speed': 22.5, + 'wind_speed': 11.94, + }), + dict({ + 'apparent_temperature': 28.8, + 'cloud_coverage': 63.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T10:00:00Z', + 'dew_point': 21.7, + 'humidity': 76, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.29, + 'temperature': 26.3, + 'uv_index': 0, + 'wind_bearing': 137, + 'wind_gust_speed': 21.47, + 'wind_speed': 11.25, + }), + dict({ + 'apparent_temperature': 28.1, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T11:00:00Z', + 'dew_point': 21.8, + 'humidity': 80, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.77, + 'temperature': 25.6, + 'uv_index': 0, + 'wind_bearing': 141, + 'wind_gust_speed': 22.71, + 'wind_speed': 12.39, + }), + dict({ + 'apparent_temperature': 27.6, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T12:00:00Z', + 'dew_point': 21.8, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.97, + 'temperature': 25.2, + 'uv_index': 0, + 'wind_bearing': 143, + 'wind_gust_speed': 23.67, + 'wind_speed': 12.83, + }), + dict({ + 'apparent_temperature': 27.1, + 'cloud_coverage': 89.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T13:00:00Z', + 'dew_point': 21.7, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.97, + 'temperature': 24.7, + 'uv_index': 0, + 'wind_bearing': 146, + 'wind_gust_speed': 23.34, + 'wind_speed': 12.62, + }), + dict({ + 'apparent_temperature': 26.7, + 'cloud_coverage': 88.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T14:00:00Z', + 'dew_point': 21.7, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.83, + 'temperature': 24.4, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 22.9, + 'wind_speed': 12.07, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 90.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T15:00:00Z', + 'dew_point': 21.6, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.74, + 'temperature': 24.1, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 22.01, + 'wind_speed': 11.19, + }), + dict({ + 'apparent_temperature': 25.9, + 'cloud_coverage': 88.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T16:00:00Z', + 'dew_point': 21.6, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.56, + 'temperature': 23.7, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 21.29, + 'wind_speed': 10.97, + }), + dict({ + 'apparent_temperature': 25.8, + 'cloud_coverage': 85.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T17:00:00Z', + 'dew_point': 21.5, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.35, + 'temperature': 23.6, + 'uv_index': 0, + 'wind_bearing': 150, + 'wind_gust_speed': 20.52, + 'wind_speed': 10.5, + }), + dict({ + 'apparent_temperature': 25.7, + 'cloud_coverage': 82.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T18:00:00Z', + 'dew_point': 21.4, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.3, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 20.04, + 'wind_speed': 10.51, + }), + dict({ + 'apparent_temperature': 25.4, + 'cloud_coverage': 78.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T19:00:00Z', + 'dew_point': 21.3, + 'humidity': 88, + 'precipitation': 0.3, + 'precipitation_probability': 12.0, + 'pressure': 1011.37, + 'temperature': 23.4, + 'uv_index': 0, + 'wind_bearing': 146, + 'wind_gust_speed': 18.07, + 'wind_speed': 10.13, + }), + dict({ + 'apparent_temperature': 25.2, + 'cloud_coverage': 78.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T20:00:00Z', + 'dew_point': 21.2, + 'humidity': 89, + 'precipitation': 0.2, + 'precipitation_probability': 13.0, + 'pressure': 1011.53, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 141, + 'wind_gust_speed': 16.86, + 'wind_speed': 10.34, + }), + dict({ + 'apparent_temperature': 25.5, + 'cloud_coverage': 78.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T21:00:00Z', + 'dew_point': 21.4, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.71, + 'temperature': 23.4, + 'uv_index': 0, + 'wind_bearing': 138, + 'wind_gust_speed': 16.66, + 'wind_speed': 10.68, + }), + dict({ + 'apparent_temperature': 26.8, + 'cloud_coverage': 78.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T22:00:00Z', + 'dew_point': 21.9, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.94, + 'temperature': 24.4, + 'uv_index': 1, + 'wind_bearing': 137, + 'wind_gust_speed': 17.21, + 'wind_speed': 10.61, + }), + dict({ + 'apparent_temperature': 28.2, + 'cloud_coverage': 78.0, + 'condition': 'cloudy', + 'datetime': '2023-09-11T23:00:00Z', + 'dew_point': 22.3, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.05, + 'temperature': 25.6, + 'uv_index': 2, + 'wind_bearing': 138, + 'wind_gust_speed': 19.23, + 'wind_speed': 11.13, + }), + dict({ + 'apparent_temperature': 29.5, + 'cloud_coverage': 79.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T00:00:00Z', + 'dew_point': 22.6, + 'humidity': 79, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.07, + 'temperature': 26.6, + 'uv_index': 3, + 'wind_bearing': 140, + 'wind_gust_speed': 20.61, + 'wind_speed': 11.13, + }), + dict({ + 'apparent_temperature': 31.2, + 'cloud_coverage': 82.0, + 'condition': 'rainy', + 'datetime': '2023-09-12T01:00:00Z', + 'dew_point': 23.1, + 'humidity': 75, + 'precipitation': 0.2, + 'precipitation_probability': 16.0, + 'pressure': 1011.89, + 'temperature': 27.9, + 'uv_index': 4, + 'wind_bearing': 141, + 'wind_gust_speed': 23.35, + 'wind_speed': 11.98, + }), + dict({ + 'apparent_temperature': 32.6, + 'cloud_coverage': 85.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T02:00:00Z', + 'dew_point': 23.5, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.53, + 'temperature': 29.0, + 'uv_index': 5, + 'wind_bearing': 143, + 'wind_gust_speed': 26.45, + 'wind_speed': 13.01, + }), + dict({ + 'apparent_temperature': 33.5, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T03:00:00Z', + 'dew_point': 23.5, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.15, + 'temperature': 29.8, + 'uv_index': 5, + 'wind_bearing': 141, + 'wind_gust_speed': 28.95, + 'wind_speed': 13.9, + }), + dict({ + 'apparent_temperature': 34.0, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T04:00:00Z', + 'dew_point': 23.4, + 'humidity': 67, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.79, + 'temperature': 30.2, + 'uv_index': 5, + 'wind_bearing': 141, + 'wind_gust_speed': 27.9, + 'wind_speed': 13.95, + }), + dict({ + 'apparent_temperature': 34.0, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T05:00:00Z', + 'dew_point': 23.1, + 'humidity': 65, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.43, + 'temperature': 30.4, + 'uv_index': 4, + 'wind_bearing': 140, + 'wind_gust_speed': 26.53, + 'wind_speed': 13.78, + }), + dict({ + 'apparent_temperature': 33.4, + 'cloud_coverage': 56.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T06:00:00Z', + 'dew_point': 22.6, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.21, + 'temperature': 30.1, + 'uv_index': 3, + 'wind_bearing': 138, + 'wind_gust_speed': 24.56, + 'wind_speed': 13.74, + }), + dict({ + 'apparent_temperature': 32.0, + 'cloud_coverage': 53.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T07:00:00Z', + 'dew_point': 22.1, + 'humidity': 66, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.26, + 'temperature': 29.1, + 'uv_index': 2, + 'wind_bearing': 138, + 'wind_gust_speed': 22.78, + 'wind_speed': 13.21, + }), + dict({ + 'apparent_temperature': 30.9, + 'cloud_coverage': 48.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T08:00:00Z', + 'dew_point': 21.9, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.51, + 'temperature': 28.1, + 'uv_index': 0, + 'wind_bearing': 140, + 'wind_gust_speed': 19.92, + 'wind_speed': 12.0, + }), + dict({ + 'apparent_temperature': 29.7, + 'cloud_coverage': 50.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T09:00:00Z', + 'dew_point': 21.7, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.8, + 'temperature': 27.2, + 'uv_index': 0, + 'wind_bearing': 141, + 'wind_gust_speed': 17.65, + 'wind_speed': 10.97, + }), + dict({ + 'apparent_temperature': 28.6, + 'cloud_coverage': 54.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T10:00:00Z', + 'dew_point': 21.4, + 'humidity': 75, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.23, + 'temperature': 26.2, + 'uv_index': 0, + 'wind_bearing': 143, + 'wind_gust_speed': 15.87, + 'wind_speed': 10.23, + }), + dict({ + 'apparent_temperature': 27.6, + 'cloud_coverage': 56.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T11:00:00Z', + 'dew_point': 21.3, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1011.79, + 'temperature': 25.4, + 'uv_index': 0, + 'wind_bearing': 146, + 'wind_gust_speed': 13.9, + 'wind_speed': 9.39, + }), + dict({ + 'apparent_temperature': 26.8, + 'cloud_coverage': 60.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-12T12:00:00Z', + 'dew_point': 21.2, + 'humidity': 81, + 'precipitation': 0.0, + 'precipitation_probability': 47.0, + 'pressure': 1012.12, + 'temperature': 24.7, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 13.32, + 'wind_speed': 8.9, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T13:00:00Z', + 'dew_point': 21.2, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1012.18, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 13.18, + 'wind_speed': 8.59, + }), + dict({ + 'apparent_temperature': 26.0, + 'cloud_coverage': 71.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T14:00:00Z', + 'dew_point': 21.3, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.09, + 'temperature': 23.9, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 13.84, + 'wind_speed': 8.87, + }), + dict({ + 'apparent_temperature': 25.7, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T15:00:00Z', + 'dew_point': 21.3, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.99, + 'temperature': 23.6, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 15.08, + 'wind_speed': 8.93, + }), + dict({ + 'apparent_temperature': 25.1, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T16:00:00Z', + 'dew_point': 21.0, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.93, + 'temperature': 23.2, + 'uv_index': 0, + 'wind_bearing': 146, + 'wind_gust_speed': 16.74, + 'wind_speed': 9.49, + }), + dict({ + 'apparent_temperature': 24.7, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T17:00:00Z', + 'dew_point': 20.8, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.75, + 'temperature': 22.9, + 'uv_index': 0, + 'wind_bearing': 146, + 'wind_gust_speed': 17.45, + 'wind_speed': 9.12, + }), + dict({ + 'apparent_temperature': 24.4, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T18:00:00Z', + 'dew_point': 20.7, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.77, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 17.04, + 'wind_speed': 8.68, + }), + dict({ + 'apparent_temperature': 24.1, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T19:00:00Z', + 'dew_point': 20.6, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.93, + 'temperature': 22.4, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 16.8, + 'wind_speed': 8.61, + }), + dict({ + 'apparent_temperature': 23.9, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T20:00:00Z', + 'dew_point': 20.5, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.23, + 'temperature': 22.1, + 'uv_index': 0, + 'wind_bearing': 150, + 'wind_gust_speed': 15.35, + 'wind_speed': 8.36, + }), + dict({ + 'apparent_temperature': 24.4, + 'cloud_coverage': 75.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T21:00:00Z', + 'dew_point': 20.6, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.49, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 155, + 'wind_gust_speed': 14.09, + 'wind_speed': 7.77, + }), + dict({ + 'apparent_temperature': 25.8, + 'cloud_coverage': 71.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T22:00:00Z', + 'dew_point': 21.0, + 'humidity': 84, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.72, + 'temperature': 23.8, + 'uv_index': 1, + 'wind_bearing': 152, + 'wind_gust_speed': 14.04, + 'wind_speed': 7.25, + }), + dict({ + 'apparent_temperature': 27.8, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-12T23:00:00Z', + 'dew_point': 21.4, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.85, + 'temperature': 25.5, + 'uv_index': 2, + 'wind_bearing': 149, + 'wind_gust_speed': 15.31, + 'wind_speed': 7.14, + }), + dict({ + 'apparent_temperature': 29.7, + 'cloud_coverage': 60.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-13T00:00:00Z', + 'dew_point': 21.8, + 'humidity': 73, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.89, + 'temperature': 27.1, + 'uv_index': 4, + 'wind_bearing': 141, + 'wind_gust_speed': 16.42, + 'wind_speed': 6.89, + }), + dict({ + 'apparent_temperature': 31.2, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T01:00:00Z', + 'dew_point': 22.0, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.65, + 'temperature': 28.4, + 'uv_index': 5, + 'wind_bearing': 137, + 'wind_gust_speed': 18.64, + 'wind_speed': 6.65, + }), + dict({ + 'apparent_temperature': 32.3, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T02:00:00Z', + 'dew_point': 21.9, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.26, + 'temperature': 29.4, + 'uv_index': 5, + 'wind_bearing': 128, + 'wind_gust_speed': 21.69, + 'wind_speed': 7.12, + }), + dict({ + 'apparent_temperature': 33.0, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T03:00:00Z', + 'dew_point': 21.9, + 'humidity': 62, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.88, + 'temperature': 30.1, + 'uv_index': 6, + 'wind_bearing': 111, + 'wind_gust_speed': 23.41, + 'wind_speed': 7.33, + }), + dict({ + 'apparent_temperature': 33.4, + 'cloud_coverage': 72.0, + 'condition': 'rainy', + 'datetime': '2023-09-13T04:00:00Z', + 'dew_point': 22.0, + 'humidity': 61, + 'precipitation': 0.9, + 'precipitation_probability': 12.0, + 'pressure': 1011.55, + 'temperature': 30.4, + 'uv_index': 5, + 'wind_bearing': 56, + 'wind_gust_speed': 23.1, + 'wind_speed': 8.09, + }), + dict({ + 'apparent_temperature': 33.2, + 'cloud_coverage': 72.0, + 'condition': 'rainy', + 'datetime': '2023-09-13T05:00:00Z', + 'dew_point': 21.9, + 'humidity': 61, + 'precipitation': 1.9, + 'precipitation_probability': 12.0, + 'pressure': 1011.29, + 'temperature': 30.2, + 'uv_index': 4, + 'wind_bearing': 20, + 'wind_gust_speed': 21.81, + 'wind_speed': 9.46, + }), + dict({ + 'apparent_temperature': 32.6, + 'cloud_coverage': 74.0, + 'condition': 'rainy', + 'datetime': '2023-09-13T06:00:00Z', + 'dew_point': 21.9, + 'humidity': 63, + 'precipitation': 2.3, + 'precipitation_probability': 11.0, + 'pressure': 1011.17, + 'temperature': 29.7, + 'uv_index': 3, + 'wind_bearing': 20, + 'wind_gust_speed': 19.72, + 'wind_speed': 9.8, + }), + dict({ + 'apparent_temperature': 31.8, + 'cloud_coverage': 69.0, + 'condition': 'rainy', + 'datetime': '2023-09-13T07:00:00Z', + 'dew_point': 22.4, + 'humidity': 68, + 'precipitation': 1.8, + 'precipitation_probability': 10.0, + 'pressure': 1011.32, + 'temperature': 28.8, + 'uv_index': 1, + 'wind_bearing': 18, + 'wind_gust_speed': 17.55, + 'wind_speed': 9.23, + }), + dict({ + 'apparent_temperature': 30.8, + 'cloud_coverage': 73.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T08:00:00Z', + 'dew_point': 22.9, + 'humidity': 76, + 'precipitation': 0.8, + 'precipitation_probability': 10.0, + 'pressure': 1011.6, + 'temperature': 27.6, + 'uv_index': 0, + 'wind_bearing': 27, + 'wind_gust_speed': 15.08, + 'wind_speed': 8.05, + }), + dict({ + 'apparent_temperature': 29.4, + 'cloud_coverage': 76.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T09:00:00Z', + 'dew_point': 23.0, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.94, + 'temperature': 26.3, + 'uv_index': 0, + 'wind_bearing': 32, + 'wind_gust_speed': 12.17, + 'wind_speed': 6.68, + }), + dict({ + 'apparent_temperature': 28.5, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T10:00:00Z', + 'dew_point': 22.9, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.3, + 'temperature': 25.5, + 'uv_index': 0, + 'wind_bearing': 69, + 'wind_gust_speed': 11.64, + 'wind_speed': 6.69, + }), + dict({ + 'apparent_temperature': 27.7, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T11:00:00Z', + 'dew_point': 22.6, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.71, + 'temperature': 25.0, + 'uv_index': 0, + 'wind_bearing': 155, + 'wind_gust_speed': 11.91, + 'wind_speed': 6.23, + }), + dict({ + 'apparent_temperature': 27.1, + 'cloud_coverage': 82.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T12:00:00Z', + 'dew_point': 22.3, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.96, + 'temperature': 24.5, + 'uv_index': 0, + 'wind_bearing': 161, + 'wind_gust_speed': 12.47, + 'wind_speed': 5.73, + }), + dict({ + 'apparent_temperature': 26.7, + 'cloud_coverage': 82.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T13:00:00Z', + 'dew_point': 22.3, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.03, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 161, + 'wind_gust_speed': 13.57, + 'wind_speed': 5.66, + }), + dict({ + 'apparent_temperature': 26.4, + 'cloud_coverage': 84.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T14:00:00Z', + 'dew_point': 22.2, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.99, + 'temperature': 23.9, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 15.07, + 'wind_speed': 5.83, + }), + dict({ + 'apparent_temperature': 26.1, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T15:00:00Z', + 'dew_point': 22.2, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.95, + 'temperature': 23.7, + 'uv_index': 0, + 'wind_bearing': 158, + 'wind_gust_speed': 16.06, + 'wind_speed': 5.93, + }), + dict({ + 'apparent_temperature': 25.7, + 'cloud_coverage': 88.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T16:00:00Z', + 'dew_point': 22.0, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.9, + 'temperature': 23.4, + 'uv_index': 0, + 'wind_bearing': 153, + 'wind_gust_speed': 16.05, + 'wind_speed': 5.75, + }), + dict({ + 'apparent_temperature': 25.4, + 'cloud_coverage': 90.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T17:00:00Z', + 'dew_point': 21.8, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.85, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 150, + 'wind_gust_speed': 15.52, + 'wind_speed': 5.49, + }), + dict({ + 'apparent_temperature': 25.2, + 'cloud_coverage': 92.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T18:00:00Z', + 'dew_point': 21.8, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.87, + 'temperature': 23.0, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 15.01, + 'wind_speed': 5.32, + }), + dict({ + 'apparent_temperature': 25.0, + 'cloud_coverage': 90.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T19:00:00Z', + 'dew_point': 21.7, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.01, + 'temperature': 22.8, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 14.39, + 'wind_speed': 5.33, + }), + dict({ + 'apparent_temperature': 24.8, + 'cloud_coverage': 89.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T20:00:00Z', + 'dew_point': 21.6, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.22, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 13.79, + 'wind_speed': 5.43, + }), + dict({ + 'apparent_temperature': 25.3, + 'cloud_coverage': 86.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T21:00:00Z', + 'dew_point': 21.8, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.41, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 147, + 'wind_gust_speed': 14.12, + 'wind_speed': 5.52, + }), + dict({ + 'apparent_temperature': 26.7, + 'cloud_coverage': 77.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T22:00:00Z', + 'dew_point': 22.1, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.59, + 'temperature': 24.3, + 'uv_index': 1, + 'wind_bearing': 147, + 'wind_gust_speed': 16.14, + 'wind_speed': 5.58, + }), + dict({ + 'apparent_temperature': 28.4, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-13T23:00:00Z', + 'dew_point': 22.4, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.74, + 'temperature': 25.7, + 'uv_index': 2, + 'wind_bearing': 146, + 'wind_gust_speed': 19.09, + 'wind_speed': 5.62, + }), + dict({ + 'apparent_temperature': 30.5, + 'cloud_coverage': 57.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T00:00:00Z', + 'dew_point': 22.9, + 'humidity': 76, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.78, + 'temperature': 27.4, + 'uv_index': 4, + 'wind_bearing': 143, + 'wind_gust_speed': 21.6, + 'wind_speed': 5.58, + }), + dict({ + 'apparent_temperature': 32.2, + 'cloud_coverage': 54.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T01:00:00Z', + 'dew_point': 23.2, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.61, + 'temperature': 28.7, + 'uv_index': 5, + 'wind_bearing': 138, + 'wind_gust_speed': 23.36, + 'wind_speed': 5.34, + }), + dict({ + 'apparent_temperature': 33.5, + 'cloud_coverage': 54.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T02:00:00Z', + 'dew_point': 23.2, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.32, + 'temperature': 29.9, + 'uv_index': 6, + 'wind_bearing': 111, + 'wind_gust_speed': 24.72, + 'wind_speed': 4.99, + }), + dict({ + 'apparent_temperature': 34.4, + 'cloud_coverage': 56.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T03:00:00Z', + 'dew_point': 23.3, + 'humidity': 65, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.04, + 'temperature': 30.7, + 'uv_index': 6, + 'wind_bearing': 354, + 'wind_gust_speed': 25.23, + 'wind_speed': 4.74, + }), + dict({ + 'apparent_temperature': 34.9, + 'cloud_coverage': 57.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T04:00:00Z', + 'dew_point': 23.4, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.77, + 'temperature': 31.0, + 'uv_index': 6, + 'wind_bearing': 341, + 'wind_gust_speed': 24.6, + 'wind_speed': 4.79, + }), + dict({ + 'apparent_temperature': 34.5, + 'cloud_coverage': 60.0, + 'condition': 'rainy', + 'datetime': '2023-09-14T05:00:00Z', + 'dew_point': 23.2, + 'humidity': 64, + 'precipitation': 0.2, + 'precipitation_probability': 15.0, + 'pressure': 1012.53, + 'temperature': 30.7, + 'uv_index': 5, + 'wind_bearing': 336, + 'wind_gust_speed': 23.28, + 'wind_speed': 5.07, + }), + dict({ + 'apparent_temperature': 33.8, + 'cloud_coverage': 59.0, + 'condition': 'rainy', + 'datetime': '2023-09-14T06:00:00Z', + 'dew_point': 23.1, + 'humidity': 66, + 'precipitation': 0.2, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1012.49, + 'temperature': 30.2, + 'uv_index': 3, + 'wind_bearing': 336, + 'wind_gust_speed': 22.05, + 'wind_speed': 5.34, + }), + dict({ + 'apparent_temperature': 32.9, + 'cloud_coverage': 53.0, + 'condition': 'rainy', + 'datetime': '2023-09-14T07:00:00Z', + 'dew_point': 23.0, + 'humidity': 68, + 'precipitation': 0.2, + 'precipitation_probability': 40.0, + 'pressure': 1012.73, + 'temperature': 29.5, + 'uv_index': 2, + 'wind_bearing': 339, + 'wind_gust_speed': 21.18, + 'wind_speed': 5.63, + }), + dict({ + 'apparent_temperature': 31.6, + 'cloud_coverage': 43.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T08:00:00Z', + 'dew_point': 22.8, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 45.0, + 'pressure': 1013.16, + 'temperature': 28.4, + 'uv_index': 0, + 'wind_bearing': 342, + 'wind_gust_speed': 20.35, + 'wind_speed': 5.93, + }), + dict({ + 'apparent_temperature': 30.0, + 'cloud_coverage': 35.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T09:00:00Z', + 'dew_point': 22.5, + 'humidity': 76, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1013.62, + 'temperature': 27.1, + 'uv_index': 0, + 'wind_bearing': 347, + 'wind_gust_speed': 19.42, + 'wind_speed': 5.95, + }), + dict({ + 'apparent_temperature': 29.0, + 'cloud_coverage': 32.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T10:00:00Z', + 'dew_point': 22.4, + 'humidity': 79, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.09, + 'temperature': 26.3, + 'uv_index': 0, + 'wind_bearing': 348, + 'wind_gust_speed': 18.19, + 'wind_speed': 5.31, + }), + dict({ + 'apparent_temperature': 28.2, + 'cloud_coverage': 31.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T11:00:00Z', + 'dew_point': 22.4, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.56, + 'temperature': 25.5, + 'uv_index': 0, + 'wind_bearing': 177, + 'wind_gust_speed': 16.79, + 'wind_speed': 4.28, + }), + dict({ + 'apparent_temperature': 27.5, + 'cloud_coverage': 31.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T12:00:00Z', + 'dew_point': 22.3, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.87, + 'temperature': 24.9, + 'uv_index': 0, + 'wind_bearing': 171, + 'wind_gust_speed': 15.61, + 'wind_speed': 3.72, + }), + dict({ + 'apparent_temperature': 26.6, + 'cloud_coverage': 31.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T13:00:00Z', + 'dew_point': 22.1, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.91, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 171, + 'wind_gust_speed': 14.7, + 'wind_speed': 4.11, + }), + dict({ + 'apparent_temperature': 25.9, + 'cloud_coverage': 32.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T14:00:00Z', + 'dew_point': 21.9, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.8, + 'temperature': 23.6, + 'uv_index': 0, + 'wind_bearing': 171, + 'wind_gust_speed': 13.81, + 'wind_speed': 4.97, + }), + dict({ + 'apparent_temperature': 25.3, + 'cloud_coverage': 34.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T15:00:00Z', + 'dew_point': 21.7, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.66, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 170, + 'wind_gust_speed': 12.88, + 'wind_speed': 5.57, + }), + dict({ + 'apparent_temperature': 24.8, + 'cloud_coverage': 37.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T16:00:00Z', + 'dew_point': 21.5, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.54, + 'temperature': 22.7, + 'uv_index': 0, + 'wind_bearing': 168, + 'wind_gust_speed': 12.0, + 'wind_speed': 5.62, + }), + dict({ + 'apparent_temperature': 24.4, + 'cloud_coverage': 39.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T17:00:00Z', + 'dew_point': 21.3, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 40.0, + 'pressure': 1014.45, + 'temperature': 22.4, + 'uv_index': 0, + 'wind_bearing': 165, + 'wind_gust_speed': 11.43, + 'wind_speed': 5.48, + }), + dict({ + 'apparent_temperature': 24.6, + 'cloud_coverage': 40.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T18:00:00Z', + 'dew_point': 21.4, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 44.0, + 'pressure': 1014.45, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 11.42, + 'wind_speed': 5.38, + }), + dict({ + 'apparent_temperature': 25.0, + 'cloud_coverage': 40.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T19:00:00Z', + 'dew_point': 21.6, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 52.0, + 'pressure': 1014.63, + 'temperature': 22.9, + 'uv_index': 0, + 'wind_bearing': 161, + 'wind_gust_speed': 12.15, + 'wind_speed': 5.39, + }), + dict({ + 'apparent_temperature': 25.6, + 'cloud_coverage': 38.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-14T20:00:00Z', + 'dew_point': 21.8, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 51.0, + 'pressure': 1014.91, + 'temperature': 23.4, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 13.54, + 'wind_speed': 5.45, + }), + dict({ + 'apparent_temperature': 26.6, + 'cloud_coverage': 36.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T21:00:00Z', + 'dew_point': 22.0, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 42.0, + 'pressure': 1015.18, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 158, + 'wind_gust_speed': 15.48, + 'wind_speed': 5.62, + }), + dict({ + 'apparent_temperature': 28.5, + 'cloud_coverage': 32.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T22:00:00Z', + 'dew_point': 22.5, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 28.999999999999996, + 'pressure': 1015.4, + 'temperature': 25.7, + 'uv_index': 1, + 'wind_bearing': 158, + 'wind_gust_speed': 17.86, + 'wind_speed': 5.84, + }), + dict({ + 'apparent_temperature': 30.3, + 'cloud_coverage': 30.0, + 'condition': 'sunny', + 'datetime': '2023-09-14T23:00:00Z', + 'dew_point': 22.9, + 'humidity': 77, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.54, + 'temperature': 27.2, + 'uv_index': 2, + 'wind_bearing': 155, + 'wind_gust_speed': 20.19, + 'wind_speed': 6.09, + }), + dict({ + 'apparent_temperature': 32.1, + 'cloud_coverage': 30.0, + 'condition': 'sunny', + 'datetime': '2023-09-15T00:00:00Z', + 'dew_point': 23.3, + 'humidity': 73, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.55, + 'temperature': 28.6, + 'uv_index': 4, + 'wind_bearing': 152, + 'wind_gust_speed': 21.83, + 'wind_speed': 6.42, + }), + dict({ + 'apparent_temperature': 33.4, + 'cloud_coverage': 34.0, + 'condition': 'sunny', + 'datetime': '2023-09-15T01:00:00Z', + 'dew_point': 23.5, + 'humidity': 70, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.35, + 'temperature': 29.6, + 'uv_index': 6, + 'wind_bearing': 144, + 'wind_gust_speed': 22.56, + 'wind_speed': 6.91, + }), + dict({ + 'apparent_temperature': 34.2, + 'cloud_coverage': 41.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T02:00:00Z', + 'dew_point': 23.5, + 'humidity': 67, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.0, + 'temperature': 30.4, + 'uv_index': 7, + 'wind_bearing': 336, + 'wind_gust_speed': 22.83, + 'wind_speed': 7.47, + }), + dict({ + 'apparent_temperature': 34.9, + 'cloud_coverage': 46.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T03:00:00Z', + 'dew_point': 23.5, + 'humidity': 65, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.62, + 'temperature': 30.9, + 'uv_index': 7, + 'wind_bearing': 336, + 'wind_gust_speed': 22.98, + 'wind_speed': 7.95, + }), + dict({ + 'apparent_temperature': 35.4, + 'cloud_coverage': 46.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T04:00:00Z', + 'dew_point': 23.6, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.25, + 'temperature': 31.3, + 'uv_index': 6, + 'wind_bearing': 341, + 'wind_gust_speed': 23.21, + 'wind_speed': 8.44, + }), + dict({ + 'apparent_temperature': 35.6, + 'cloud_coverage': 44.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T05:00:00Z', + 'dew_point': 23.7, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.95, + 'temperature': 31.5, + 'uv_index': 5, + 'wind_bearing': 344, + 'wind_gust_speed': 23.46, + 'wind_speed': 8.95, + }), + dict({ + 'apparent_temperature': 35.1, + 'cloud_coverage': 42.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T06:00:00Z', + 'dew_point': 23.6, + 'humidity': 64, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.83, + 'temperature': 31.1, + 'uv_index': 3, + 'wind_bearing': 347, + 'wind_gust_speed': 23.64, + 'wind_speed': 9.13, + }), + dict({ + 'apparent_temperature': 34.1, + 'cloud_coverage': 41.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T07:00:00Z', + 'dew_point': 23.4, + 'humidity': 66, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.96, + 'temperature': 30.3, + 'uv_index': 2, + 'wind_bearing': 350, + 'wind_gust_speed': 23.66, + 'wind_speed': 8.78, + }), + dict({ + 'apparent_temperature': 32.4, + 'cloud_coverage': 40.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T08:00:00Z', + 'dew_point': 23.1, + 'humidity': 70, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.25, + 'temperature': 29.0, + 'uv_index': 0, + 'wind_bearing': 356, + 'wind_gust_speed': 23.51, + 'wind_speed': 8.13, + }), + dict({ + 'apparent_temperature': 31.1, + 'cloud_coverage': 41.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T09:00:00Z', + 'dew_point': 22.9, + 'humidity': 74, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.61, + 'temperature': 27.9, + 'uv_index': 0, + 'wind_bearing': 3, + 'wind_gust_speed': 23.21, + 'wind_speed': 7.48, + }), + dict({ + 'apparent_temperature': 30.0, + 'cloud_coverage': 43.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T10:00:00Z', + 'dew_point': 22.8, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.02, + 'temperature': 26.9, + 'uv_index': 0, + 'wind_bearing': 20, + 'wind_gust_speed': 22.68, + 'wind_speed': 6.83, + }), + dict({ + 'apparent_temperature': 29.2, + 'cloud_coverage': 46.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T11:00:00Z', + 'dew_point': 22.8, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.43, + 'temperature': 26.2, + 'uv_index': 0, + 'wind_bearing': 129, + 'wind_gust_speed': 22.04, + 'wind_speed': 6.1, + }), + dict({ + 'apparent_temperature': 28.4, + 'cloud_coverage': 48.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T12:00:00Z', + 'dew_point': 22.7, + 'humidity': 84, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.71, + 'temperature': 25.6, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 21.64, + 'wind_speed': 5.6, + }), + dict({ + 'apparent_temperature': 28.2, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T13:00:00Z', + 'dew_point': 23.2, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.52, + 'temperature': 25.2, + 'uv_index': 0, + 'wind_bearing': 164, + 'wind_gust_speed': 16.35, + 'wind_speed': 5.58, + }), + dict({ + 'apparent_temperature': 27.4, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T14:00:00Z', + 'dew_point': 22.9, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.37, + 'temperature': 24.6, + 'uv_index': 0, + 'wind_bearing': 168, + 'wind_gust_speed': 17.11, + 'wind_speed': 5.79, + }), + dict({ + 'apparent_temperature': 26.9, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T15:00:00Z', + 'dew_point': 22.7, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.21, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 182, + 'wind_gust_speed': 17.32, + 'wind_speed': 5.77, + }), + dict({ + 'apparent_temperature': 26.4, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T16:00:00Z', + 'dew_point': 22.6, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.07, + 'temperature': 23.8, + 'uv_index': 0, + 'wind_bearing': 201, + 'wind_gust_speed': 16.6, + 'wind_speed': 5.27, + }), + dict({ + 'apparent_temperature': 26.0, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T17:00:00Z', + 'dew_point': 22.5, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.95, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 219, + 'wind_gust_speed': 15.52, + 'wind_speed': 4.62, + }), + dict({ + 'apparent_temperature': 25.7, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T18:00:00Z', + 'dew_point': 22.3, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.88, + 'temperature': 23.3, + 'uv_index': 0, + 'wind_bearing': 216, + 'wind_gust_speed': 14.64, + 'wind_speed': 4.32, + }), + dict({ + 'apparent_temperature': 26.0, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T19:00:00Z', + 'dew_point': 22.4, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.91, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 198, + 'wind_gust_speed': 14.06, + 'wind_speed': 4.73, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T20:00:00Z', + 'dew_point': 22.4, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.99, + 'temperature': 23.8, + 'uv_index': 0, + 'wind_bearing': 189, + 'wind_gust_speed': 13.7, + 'wind_speed': 5.49, + }), + dict({ + 'apparent_temperature': 27.1, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-15T21:00:00Z', + 'dew_point': 22.5, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.07, + 'temperature': 24.4, + 'uv_index': 0, + 'wind_bearing': 183, + 'wind_gust_speed': 13.77, + 'wind_speed': 5.95, + }), + dict({ + 'apparent_temperature': 28.3, + 'cloud_coverage': 59.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T22:00:00Z', + 'dew_point': 22.6, + 'humidity': 84, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.12, + 'temperature': 25.5, + 'uv_index': 1, + 'wind_bearing': 179, + 'wind_gust_speed': 14.38, + 'wind_speed': 5.77, + }), + dict({ + 'apparent_temperature': 29.9, + 'cloud_coverage': 52.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-15T23:00:00Z', + 'dew_point': 22.9, + 'humidity': 79, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.13, + 'temperature': 26.9, + 'uv_index': 2, + 'wind_bearing': 170, + 'wind_gust_speed': 15.2, + 'wind_speed': 5.27, + }), + dict({ + 'apparent_temperature': 31.2, + 'cloud_coverage': 44.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T00:00:00Z', + 'dew_point': 22.9, + 'humidity': 74, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1015.04, + 'temperature': 28.0, + 'uv_index': 4, + 'wind_bearing': 155, + 'wind_gust_speed': 15.85, + 'wind_speed': 4.76, + }), + dict({ + 'apparent_temperature': 32.5, + 'cloud_coverage': 24.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T01:00:00Z', + 'dew_point': 22.6, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.52, + 'temperature': 29.2, + 'uv_index': 6, + 'wind_bearing': 110, + 'wind_gust_speed': 16.27, + 'wind_speed': 6.81, + }), + dict({ + 'apparent_temperature': 33.5, + 'cloud_coverage': 16.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T02:00:00Z', + 'dew_point': 22.4, + 'humidity': 63, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1014.01, + 'temperature': 30.2, + 'uv_index': 8, + 'wind_bearing': 30, + 'wind_gust_speed': 16.55, + 'wind_speed': 6.86, + }), + dict({ + 'apparent_temperature': 34.2, + 'cloud_coverage': 10.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T03:00:00Z', + 'dew_point': 22.0, + 'humidity': 59, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.45, + 'temperature': 31.1, + 'uv_index': 8, + 'wind_bearing': 17, + 'wind_gust_speed': 16.52, + 'wind_speed': 6.8, + }), + dict({ + 'apparent_temperature': 34.7, + 'cloud_coverage': 10.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T04:00:00Z', + 'dew_point': 21.9, + 'humidity': 57, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.89, + 'temperature': 31.5, + 'uv_index': 8, + 'wind_bearing': 17, + 'wind_gust_speed': 16.08, + 'wind_speed': 6.62, + }), + dict({ + 'apparent_temperature': 34.9, + 'cloud_coverage': 10.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T05:00:00Z', + 'dew_point': 21.9, + 'humidity': 56, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.39, + 'temperature': 31.8, + 'uv_index': 6, + 'wind_bearing': 20, + 'wind_gust_speed': 15.48, + 'wind_speed': 6.45, + }), + dict({ + 'apparent_temperature': 34.5, + 'cloud_coverage': 10.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T06:00:00Z', + 'dew_point': 21.7, + 'humidity': 56, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.11, + 'temperature': 31.4, + 'uv_index': 4, + 'wind_bearing': 26, + 'wind_gust_speed': 15.08, + 'wind_speed': 6.43, + }), + dict({ + 'apparent_temperature': 33.6, + 'cloud_coverage': 7.000000000000001, + 'condition': 'sunny', + 'datetime': '2023-09-16T07:00:00Z', + 'dew_point': 21.7, + 'humidity': 59, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.15, + 'temperature': 30.7, + 'uv_index': 2, + 'wind_bearing': 39, + 'wind_gust_speed': 14.88, + 'wind_speed': 6.61, + }), + dict({ + 'apparent_temperature': 32.5, + 'cloud_coverage': 2.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T08:00:00Z', + 'dew_point': 21.9, + 'humidity': 63, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.41, + 'temperature': 29.6, + 'uv_index': 0, + 'wind_bearing': 72, + 'wind_gust_speed': 14.82, + 'wind_speed': 6.95, + }), + dict({ + 'apparent_temperature': 31.4, + 'cloud_coverage': 2.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T09:00:00Z', + 'dew_point': 22.1, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.75, + 'temperature': 28.5, + 'uv_index': 0, + 'wind_bearing': 116, + 'wind_gust_speed': 15.13, + 'wind_speed': 7.45, + }), + dict({ + 'apparent_temperature': 30.5, + 'cloud_coverage': 13.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T10:00:00Z', + 'dew_point': 22.3, + 'humidity': 73, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.13, + 'temperature': 27.6, + 'uv_index': 0, + 'wind_bearing': 140, + 'wind_gust_speed': 16.09, + 'wind_speed': 8.15, + }), + dict({ + 'apparent_temperature': 29.8, + 'cloud_coverage': 31.0, + 'condition': 'sunny', + 'datetime': '2023-09-16T11:00:00Z', + 'dew_point': 22.6, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.47, + 'temperature': 26.9, + 'uv_index': 0, + 'wind_bearing': 149, + 'wind_gust_speed': 17.37, + 'wind_speed': 8.87, + }), + dict({ + 'apparent_temperature': 29.3, + 'cloud_coverage': 45.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T12:00:00Z', + 'dew_point': 22.9, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.6, + 'temperature': 26.3, + 'uv_index': 0, + 'wind_bearing': 155, + 'wind_gust_speed': 18.29, + 'wind_speed': 9.21, + }), + dict({ + 'apparent_temperature': 28.7, + 'cloud_coverage': 51.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T13:00:00Z', + 'dew_point': 23.0, + 'humidity': 85, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.41, + 'temperature': 25.7, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 18.49, + 'wind_speed': 8.96, + }), + dict({ + 'apparent_temperature': 27.9, + 'cloud_coverage': 55.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T14:00:00Z', + 'dew_point': 22.8, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1013.01, + 'temperature': 25.0, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 18.47, + 'wind_speed': 8.45, + }), + dict({ + 'apparent_temperature': 27.2, + 'cloud_coverage': 59.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T15:00:00Z', + 'dew_point': 22.7, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.55, + 'temperature': 24.5, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 18.79, + 'wind_speed': 8.1, + }), + dict({ + 'apparent_temperature': 26.7, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-16T16:00:00Z', + 'dew_point': 22.6, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.1, + 'temperature': 24.0, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 19.81, + 'wind_speed': 8.15, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-16T17:00:00Z', + 'dew_point': 22.6, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.68, + 'temperature': 23.7, + 'uv_index': 0, + 'wind_bearing': 161, + 'wind_gust_speed': 20.96, + 'wind_speed': 8.3, + }), + dict({ + 'apparent_temperature': 26.0, + 'cloud_coverage': 72.0, + 'condition': 'cloudy', + 'datetime': '2023-09-16T18:00:00Z', + 'dew_point': 22.4, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.39, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 21.41, + 'wind_speed': 8.24, + }), + dict({ + 'apparent_temperature': 26.3, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-16T19:00:00Z', + 'dew_point': 22.5, + 'humidity': 93, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.29, + 'temperature': 23.8, + 'uv_index': 0, + 'wind_bearing': 159, + 'wind_gust_speed': 20.42, + 'wind_speed': 7.62, + }), + dict({ + 'apparent_temperature': 26.8, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-16T20:00:00Z', + 'dew_point': 22.6, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.31, + 'temperature': 24.2, + 'uv_index': 0, + 'wind_bearing': 158, + 'wind_gust_speed': 18.61, + 'wind_speed': 6.66, + }), + dict({ + 'apparent_temperature': 27.7, + 'cloud_coverage': 57.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T21:00:00Z', + 'dew_point': 22.6, + 'humidity': 87, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.37, + 'temperature': 24.9, + 'uv_index': 0, + 'wind_bearing': 158, + 'wind_gust_speed': 17.14, + 'wind_speed': 5.86, + }), + dict({ + 'apparent_temperature': 28.9, + 'cloud_coverage': 48.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T22:00:00Z', + 'dew_point': 22.6, + 'humidity': 82, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.46, + 'temperature': 26.0, + 'uv_index': 1, + 'wind_bearing': 161, + 'wind_gust_speed': 16.78, + 'wind_speed': 5.5, + }), + dict({ + 'apparent_temperature': 30.6, + 'cloud_coverage': 39.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-16T23:00:00Z', + 'dew_point': 22.9, + 'humidity': 76, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.51, + 'temperature': 27.5, + 'uv_index': 2, + 'wind_bearing': 165, + 'wind_gust_speed': 17.21, + 'wind_speed': 5.56, + }), + dict({ + 'apparent_temperature': 31.7, + 'cloud_coverage': 33.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T00:00:00Z', + 'dew_point': 22.8, + 'humidity': 71, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.39, + 'temperature': 28.5, + 'uv_index': 4, + 'wind_bearing': 174, + 'wind_gust_speed': 17.96, + 'wind_speed': 6.04, + }), + dict({ + 'apparent_temperature': 32.6, + 'cloud_coverage': 30.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T01:00:00Z', + 'dew_point': 22.7, + 'humidity': 68, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.98, + 'temperature': 29.4, + 'uv_index': 6, + 'wind_bearing': 192, + 'wind_gust_speed': 19.15, + 'wind_speed': 7.23, + }), + dict({ + 'apparent_temperature': 33.6, + 'cloud_coverage': 28.999999999999996, + 'condition': 'sunny', + 'datetime': '2023-09-17T02:00:00Z', + 'dew_point': 22.8, + 'humidity': 65, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1010.38, + 'temperature': 30.1, + 'uv_index': 7, + 'wind_bearing': 225, + 'wind_gust_speed': 20.89, + 'wind_speed': 8.9, + }), + dict({ + 'apparent_temperature': 34.1, + 'cloud_coverage': 30.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T03:00:00Z', + 'dew_point': 22.8, + 'humidity': 63, + 'precipitation': 0.3, + 'precipitation_probability': 9.0, + 'pressure': 1009.75, + 'temperature': 30.7, + 'uv_index': 8, + 'wind_bearing': 264, + 'wind_gust_speed': 22.67, + 'wind_speed': 10.27, + }), + dict({ + 'apparent_temperature': 33.9, + 'cloud_coverage': 37.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T04:00:00Z', + 'dew_point': 22.5, + 'humidity': 62, + 'precipitation': 0.4, + 'precipitation_probability': 10.0, + 'pressure': 1009.18, + 'temperature': 30.5, + 'uv_index': 7, + 'wind_bearing': 293, + 'wind_gust_speed': 23.93, + 'wind_speed': 10.82, + }), + dict({ + 'apparent_temperature': 33.4, + 'cloud_coverage': 45.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T05:00:00Z', + 'dew_point': 22.4, + 'humidity': 63, + 'precipitation': 0.6, + 'precipitation_probability': 12.0, + 'pressure': 1008.71, + 'temperature': 30.1, + 'uv_index': 5, + 'wind_bearing': 308, + 'wind_gust_speed': 24.39, + 'wind_speed': 10.72, + }), + dict({ + 'apparent_temperature': 32.7, + 'cloud_coverage': 50.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T06:00:00Z', + 'dew_point': 22.2, + 'humidity': 64, + 'precipitation': 0.7, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1008.46, + 'temperature': 29.6, + 'uv_index': 3, + 'wind_bearing': 312, + 'wind_gust_speed': 23.9, + 'wind_speed': 10.28, + }), + dict({ + 'apparent_temperature': 31.8, + 'cloud_coverage': 47.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T07:00:00Z', + 'dew_point': 22.1, + 'humidity': 67, + 'precipitation': 0.7, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1008.53, + 'temperature': 28.9, + 'uv_index': 1, + 'wind_bearing': 312, + 'wind_gust_speed': 22.3, + 'wind_speed': 9.59, + }), + dict({ + 'apparent_temperature': 30.6, + 'cloud_coverage': 41.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T08:00:00Z', + 'dew_point': 21.9, + 'humidity': 70, + 'precipitation': 0.6, + 'precipitation_probability': 15.0, + 'pressure': 1008.82, + 'temperature': 27.9, + 'uv_index': 0, + 'wind_bearing': 305, + 'wind_gust_speed': 19.73, + 'wind_speed': 8.58, + }), + dict({ + 'apparent_temperature': 29.6, + 'cloud_coverage': 35.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T09:00:00Z', + 'dew_point': 22.0, + 'humidity': 74, + 'precipitation': 0.5, + 'precipitation_probability': 15.0, + 'pressure': 1009.21, + 'temperature': 27.0, + 'uv_index': 0, + 'wind_bearing': 291, + 'wind_gust_speed': 16.49, + 'wind_speed': 7.34, + }), + dict({ + 'apparent_temperature': 28.6, + 'cloud_coverage': 33.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T10:00:00Z', + 'dew_point': 21.9, + 'humidity': 78, + 'precipitation': 0.4, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1009.65, + 'temperature': 26.1, + 'uv_index': 0, + 'wind_bearing': 257, + 'wind_gust_speed': 12.71, + 'wind_speed': 5.91, + }), + dict({ + 'apparent_temperature': 27.8, + 'cloud_coverage': 34.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T11:00:00Z', + 'dew_point': 21.9, + 'humidity': 82, + 'precipitation': 0.3, + 'precipitation_probability': 14.000000000000002, + 'pressure': 1010.04, + 'temperature': 25.3, + 'uv_index': 0, + 'wind_bearing': 212, + 'wind_gust_speed': 9.16, + 'wind_speed': 4.54, + }), + dict({ + 'apparent_temperature': 27.1, + 'cloud_coverage': 36.0, + 'condition': 'sunny', + 'datetime': '2023-09-17T12:00:00Z', + 'dew_point': 21.9, + 'humidity': 85, + 'precipitation': 0.3, + 'precipitation_probability': 28.000000000000004, + 'pressure': 1010.24, + 'temperature': 24.6, + 'uv_index': 0, + 'wind_bearing': 192, + 'wind_gust_speed': 7.09, + 'wind_speed': 3.62, + }), + dict({ + 'apparent_temperature': 26.5, + 'cloud_coverage': 40.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T13:00:00Z', + 'dew_point': 22.0, + 'humidity': 88, + 'precipitation': 0.3, + 'precipitation_probability': 30.0, + 'pressure': 1010.15, + 'temperature': 24.1, + 'uv_index': 0, + 'wind_bearing': 185, + 'wind_gust_speed': 7.2, + 'wind_speed': 3.27, + }), + dict({ + 'apparent_temperature': 25.9, + 'cloud_coverage': 44.0, + 'condition': 'rainy', + 'datetime': '2023-09-17T14:00:00Z', + 'dew_point': 21.8, + 'humidity': 90, + 'precipitation': 0.3, + 'precipitation_probability': 30.0, + 'pressure': 1009.87, + 'temperature': 23.6, + 'uv_index': 0, + 'wind_bearing': 182, + 'wind_gust_speed': 8.37, + 'wind_speed': 3.22, + }), + dict({ + 'apparent_temperature': 25.5, + 'cloud_coverage': 49.0, + 'condition': 'rainy', + 'datetime': '2023-09-17T15:00:00Z', + 'dew_point': 21.8, + 'humidity': 92, + 'precipitation': 0.2, + 'precipitation_probability': 31.0, + 'pressure': 1009.56, + 'temperature': 23.2, + 'uv_index': 0, + 'wind_bearing': 180, + 'wind_gust_speed': 9.21, + 'wind_speed': 3.3, + }), + dict({ + 'apparent_temperature': 25.1, + 'cloud_coverage': 53.0, + 'condition': 'rainy', + 'datetime': '2023-09-17T16:00:00Z', + 'dew_point': 21.8, + 'humidity': 94, + 'precipitation': 0.2, + 'precipitation_probability': 33.0, + 'pressure': 1009.29, + 'temperature': 22.9, + 'uv_index': 0, + 'wind_bearing': 182, + 'wind_gust_speed': 9.0, + 'wind_speed': 3.46, + }), + dict({ + 'apparent_temperature': 24.8, + 'cloud_coverage': 56.00000000000001, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T17:00:00Z', + 'dew_point': 21.7, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 35.0, + 'pressure': 1009.09, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 186, + 'wind_gust_speed': 8.37, + 'wind_speed': 3.72, + }), + dict({ + 'apparent_temperature': 24.6, + 'cloud_coverage': 59.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T18:00:00Z', + 'dew_point': 21.6, + 'humidity': 95, + 'precipitation': 0.0, + 'precipitation_probability': 37.0, + 'pressure': 1009.01, + 'temperature': 22.5, + 'uv_index': 0, + 'wind_bearing': 201, + 'wind_gust_speed': 7.99, + 'wind_speed': 4.07, + }), + dict({ + 'apparent_temperature': 24.9, + 'cloud_coverage': 62.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-17T19:00:00Z', + 'dew_point': 21.7, + 'humidity': 94, + 'precipitation': 0.0, + 'precipitation_probability': 39.0, + 'pressure': 1009.07, + 'temperature': 22.7, + 'uv_index': 0, + 'wind_bearing': 258, + 'wind_gust_speed': 8.18, + 'wind_speed': 4.55, + }), + dict({ + 'apparent_temperature': 25.2, + 'cloud_coverage': 64.0, + 'condition': 'cloudy', + 'datetime': '2023-09-17T20:00:00Z', + 'dew_point': 21.7, + 'humidity': 92, + 'precipitation': 0.0, + 'precipitation_probability': 39.0, + 'pressure': 1009.23, + 'temperature': 23.0, + 'uv_index': 0, + 'wind_bearing': 305, + 'wind_gust_speed': 8.77, + 'wind_speed': 5.17, + }), + dict({ + 'apparent_temperature': 25.8, + 'cloud_coverage': 68.0, + 'condition': 'cloudy', + 'datetime': '2023-09-17T21:00:00Z', + 'dew_point': 21.8, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 38.0, + 'pressure': 1009.47, + 'temperature': 23.5, + 'uv_index': 0, + 'wind_bearing': 318, + 'wind_gust_speed': 9.69, + 'wind_speed': 5.77, + }), + dict({ + 'apparent_temperature': 26.5, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-17T22:00:00Z', + 'dew_point': 21.8, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 30.0, + 'pressure': 1009.77, + 'temperature': 24.2, + 'uv_index': 1, + 'wind_bearing': 324, + 'wind_gust_speed': 10.88, + 'wind_speed': 6.26, + }), + dict({ + 'apparent_temperature': 27.6, + 'cloud_coverage': 80.0, + 'condition': 'rainy', + 'datetime': '2023-09-17T23:00:00Z', + 'dew_point': 21.9, + 'humidity': 83, + 'precipitation': 0.2, + 'precipitation_probability': 15.0, + 'pressure': 1010.09, + 'temperature': 25.1, + 'uv_index': 2, + 'wind_bearing': 329, + 'wind_gust_speed': 12.21, + 'wind_speed': 6.68, + }), + dict({ + 'apparent_temperature': 28.2, + 'cloud_coverage': 87.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T00:00:00Z', + 'dew_point': 21.9, + 'humidity': 80, + 'precipitation': 0.2, + 'precipitation_probability': 15.0, + 'pressure': 1010.33, + 'temperature': 25.7, + 'uv_index': 3, + 'wind_bearing': 332, + 'wind_gust_speed': 13.52, + 'wind_speed': 7.12, + }), + dict({ + 'apparent_temperature': 29.8, + 'cloud_coverage': 67.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T01:00:00Z', + 'dew_point': 21.7, + 'humidity': 72, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1007.43, + 'temperature': 27.2, + 'uv_index': 5, + 'wind_bearing': 330, + 'wind_gust_speed': 11.36, + 'wind_speed': 11.36, + }), + dict({ + 'apparent_temperature': 30.1, + 'cloud_coverage': 70.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T02:00:00Z', + 'dew_point': 21.6, + 'humidity': 70, + 'precipitation': 0.3, + 'precipitation_probability': 9.0, + 'pressure': 1007.05, + 'temperature': 27.5, + 'uv_index': 6, + 'wind_bearing': 332, + 'wind_gust_speed': 12.06, + 'wind_speed': 12.06, + }), + dict({ + 'apparent_temperature': 30.3, + 'cloud_coverage': 71.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T03:00:00Z', + 'dew_point': 21.6, + 'humidity': 69, + 'precipitation': 0.5, + 'precipitation_probability': 10.0, + 'pressure': 1006.67, + 'temperature': 27.8, + 'uv_index': 6, + 'wind_bearing': 333, + 'wind_gust_speed': 12.81, + 'wind_speed': 12.81, + }), + dict({ + 'apparent_temperature': 30.6, + 'cloud_coverage': 67.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T04:00:00Z', + 'dew_point': 21.5, + 'humidity': 68, + 'precipitation': 0.4, + 'precipitation_probability': 10.0, + 'pressure': 1006.28, + 'temperature': 28.0, + 'uv_index': 5, + 'wind_bearing': 335, + 'wind_gust_speed': 13.68, + 'wind_speed': 13.68, + }), + dict({ + 'apparent_temperature': 30.7, + 'cloud_coverage': 60.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T05:00:00Z', + 'dew_point': 21.4, + 'humidity': 67, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1005.89, + 'temperature': 28.1, + 'uv_index': 4, + 'wind_bearing': 336, + 'wind_gust_speed': 14.61, + 'wind_speed': 14.61, + }), + dict({ + 'apparent_temperature': 30.3, + 'cloud_coverage': 56.99999999999999, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T06:00:00Z', + 'dew_point': 21.2, + 'humidity': 67, + 'precipitation': 0.0, + 'precipitation_probability': 27.0, + 'pressure': 1005.67, + 'temperature': 27.9, + 'uv_index': 3, + 'wind_bearing': 338, + 'wind_gust_speed': 15.25, + 'wind_speed': 15.25, + }), + dict({ + 'apparent_temperature': 29.8, + 'cloud_coverage': 60.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T07:00:00Z', + 'dew_point': 21.3, + 'humidity': 69, + 'precipitation': 0.0, + 'precipitation_probability': 28.000000000000004, + 'pressure': 1005.74, + 'temperature': 27.4, + 'uv_index': 1, + 'wind_bearing': 339, + 'wind_gust_speed': 15.45, + 'wind_speed': 15.45, + }), + dict({ + 'apparent_temperature': 29.1, + 'cloud_coverage': 65.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T08:00:00Z', + 'dew_point': 21.4, + 'humidity': 73, + 'precipitation': 0.0, + 'precipitation_probability': 26.0, + 'pressure': 1005.98, + 'temperature': 26.7, + 'uv_index': 0, + 'wind_bearing': 341, + 'wind_gust_speed': 15.38, + 'wind_speed': 15.38, + }), + dict({ + 'apparent_temperature': 28.6, + 'cloud_coverage': 68.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T09:00:00Z', + 'dew_point': 21.6, + 'humidity': 76, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1006.22, + 'temperature': 26.1, + 'uv_index': 0, + 'wind_bearing': 341, + 'wind_gust_speed': 15.27, + 'wind_speed': 15.27, + }), + dict({ + 'apparent_temperature': 27.9, + 'cloud_coverage': 66.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T10:00:00Z', + 'dew_point': 21.6, + 'humidity': 79, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1006.44, + 'temperature': 25.6, + 'uv_index': 0, + 'wind_bearing': 339, + 'wind_gust_speed': 15.09, + 'wind_speed': 15.09, + }), + dict({ + 'apparent_temperature': 27.6, + 'cloud_coverage': 61.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T11:00:00Z', + 'dew_point': 21.7, + 'humidity': 81, + 'precipitation': 0.0, + 'precipitation_probability': 26.0, + 'pressure': 1006.66, + 'temperature': 25.2, + 'uv_index': 0, + 'wind_bearing': 336, + 'wind_gust_speed': 14.88, + 'wind_speed': 14.88, + }), + dict({ + 'apparent_temperature': 27.2, + 'cloud_coverage': 61.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T12:00:00Z', + 'dew_point': 21.8, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 26.0, + 'pressure': 1006.79, + 'temperature': 24.8, + 'uv_index': 0, + 'wind_bearing': 333, + 'wind_gust_speed': 14.91, + 'wind_speed': 14.91, + }), + dict({ + 'apparent_temperature': 25.7, + 'cloud_coverage': 38.0, + 'condition': 'partlycloudy', + 'datetime': '2023-09-18T13:00:00Z', + 'dew_point': 21.2, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1012.36, + 'temperature': 23.6, + 'uv_index': 0, + 'wind_bearing': 83, + 'wind_gust_speed': 4.58, + 'wind_speed': 3.16, + }), + dict({ + 'apparent_temperature': 25.1, + 'cloud_coverage': 74.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T14:00:00Z', + 'dew_point': 21.2, + 'humidity': 89, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.96, + 'temperature': 23.1, + 'uv_index': 0, + 'wind_bearing': 144, + 'wind_gust_speed': 4.74, + 'wind_speed': 4.52, + }), + dict({ + 'apparent_temperature': 24.5, + 'cloud_coverage': 100.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T15:00:00Z', + 'dew_point': 20.9, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.6, + 'temperature': 22.6, + 'uv_index': 0, + 'wind_bearing': 152, + 'wind_gust_speed': 5.63, + 'wind_speed': 5.63, + }), + dict({ + 'apparent_temperature': 24.0, + 'cloud_coverage': 100.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T16:00:00Z', + 'dew_point': 20.7, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.37, + 'temperature': 22.3, + 'uv_index': 0, + 'wind_bearing': 156, + 'wind_gust_speed': 6.02, + 'wind_speed': 6.02, + }), + dict({ + 'apparent_temperature': 23.7, + 'cloud_coverage': 100.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T17:00:00Z', + 'dew_point': 20.4, + 'humidity': 91, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.2, + 'temperature': 22.0, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 6.15, + 'wind_speed': 6.15, + }), + dict({ + 'apparent_temperature': 23.4, + 'cloud_coverage': 100.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T18:00:00Z', + 'dew_point': 20.2, + 'humidity': 90, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.08, + 'temperature': 21.9, + 'uv_index': 0, + 'wind_bearing': 167, + 'wind_gust_speed': 6.48, + 'wind_speed': 6.48, + }), + dict({ + 'apparent_temperature': 23.2, + 'cloud_coverage': 100.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T19:00:00Z', + 'dew_point': 19.8, + 'humidity': 88, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.04, + 'temperature': 21.8, + 'uv_index': 0, + 'wind_bearing': 165, + 'wind_gust_speed': 7.51, + 'wind_speed': 7.51, + }), + dict({ + 'apparent_temperature': 23.4, + 'cloud_coverage': 99.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T20:00:00Z', + 'dew_point': 19.6, + 'humidity': 86, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.05, + 'temperature': 22.0, + 'uv_index': 0, + 'wind_bearing': 162, + 'wind_gust_speed': 8.73, + 'wind_speed': 8.73, + }), + dict({ + 'apparent_temperature': 23.9, + 'cloud_coverage': 98.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T21:00:00Z', + 'dew_point': 19.5, + 'humidity': 83, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.06, + 'temperature': 22.5, + 'uv_index': 0, + 'wind_bearing': 164, + 'wind_gust_speed': 9.21, + 'wind_speed': 9.11, + }), + dict({ + 'apparent_temperature': 25.3, + 'cloud_coverage': 96.0, + 'condition': 'cloudy', + 'datetime': '2023-09-18T22:00:00Z', + 'dew_point': 19.7, + 'humidity': 78, + 'precipitation': 0.0, + 'precipitation_probability': 0.0, + 'pressure': 1011.09, + 'temperature': 23.8, + 'uv_index': 1, + 'wind_bearing': 171, + 'wind_gust_speed': 9.03, + 'wind_speed': 7.91, + }), + ]), + }) +# --- diff --git a/tests/components/weatherkit/test_config_flow.py b/tests/components/weatherkit/test_config_flow.py new file mode 100644 index 0000000000000..4faaac15db614 --- /dev/null +++ b/tests/components/weatherkit/test_config_flow.py @@ -0,0 +1,134 @@ +"""Test the Apple WeatherKit config flow.""" +from unittest.mock import AsyncMock, patch + +from apple_weatherkit import DataSetType +from apple_weatherkit.client import ( + WeatherKitApiClientAuthenticationError, + WeatherKitApiClientCommunicationError, + WeatherKitApiClientError, +) +import pytest + +from homeassistant import config_entries +from homeassistant.components.weatherkit.config_flow import ( + WeatherKitUnsupportedLocationError, +) +from homeassistant.components.weatherkit.const import ( + CONF_KEY_ID, + CONF_KEY_PEM, + CONF_SERVICE_ID, + CONF_TEAM_ID, + DOMAIN, +) +from homeassistant.const import CONF_LATITUDE, CONF_LOCATION, CONF_LONGITUDE +from homeassistant.core import HomeAssistant +from homeassistant.data_entry_flow import FlowResultType + +from . import EXAMPLE_CONFIG_DATA + +pytestmark = pytest.mark.usefixtures("mock_setup_entry") + +EXAMPLE_USER_INPUT = { + CONF_LOCATION: { + CONF_LATITUDE: 35.4690101707532, + CONF_LONGITUDE: 135.74817234593166, + }, + CONF_KEY_ID: "QABCDEFG123", + CONF_SERVICE_ID: "io.home-assistant.testing", + CONF_TEAM_ID: "ABCD123456", + CONF_KEY_PEM: "-----BEGIN PRIVATE KEY-----\nwhateverkey\n-----END PRIVATE KEY-----", +} + + +async def _test_exception_generates_error( + hass: HomeAssistant, exception: Exception, error: str +) -> None: + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + side_effect=exception, + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + EXAMPLE_USER_INPUT, + ) + + assert result["type"] == FlowResultType.FORM + assert result["errors"] == {"base": error} + + +async def test_form(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> None: + """Test we get the form and create an entry.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + assert result["type"] == FlowResultType.FORM + assert result["errors"] == {} + + with patch( + "homeassistant.components.weatherkit.config_flow.WeatherKitFlowHandler._test_config", + return_value=None, + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + EXAMPLE_USER_INPUT, + ) + await hass.async_block_till_done() + + assert result["type"] == FlowResultType.CREATE_ENTRY + + location = EXAMPLE_USER_INPUT[CONF_LOCATION] + assert result["title"] == f"{location[CONF_LATITUDE]}, {location[CONF_LONGITUDE]}" + + assert result["data"] == EXAMPLE_CONFIG_DATA + assert len(mock_setup_entry.mock_calls) == 1 + + +@pytest.mark.parametrize( + ("exception", "expected_error"), + [ + (WeatherKitApiClientAuthenticationError, "invalid_auth"), + (WeatherKitApiClientCommunicationError, "cannot_connect"), + (WeatherKitUnsupportedLocationError, "unsupported_location"), + (WeatherKitApiClientError, "unknown"), + ], +) +async def test_error_handling( + hass: HomeAssistant, exception: Exception, expected_error: str +) -> None: + """Test that we handle various exceptions and generate appropriate errors.""" + await _test_exception_generates_error(hass, exception, expected_error) + + +async def test_form_unsupported_location(hass: HomeAssistant) -> None: + """Test we handle when WeatherKit does not support the location.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + return_value=[], + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + EXAMPLE_USER_INPUT, + ) + + assert result["type"] == FlowResultType.FORM + assert result["errors"] == {"base": "unsupported_location"} + + # Test that we can recover from this error by changing the location + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + return_value=[DataSetType.CURRENT_WEATHER], + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + EXAMPLE_USER_INPUT, + ) + + assert result["type"] == FlowResultType.CREATE_ENTRY diff --git a/tests/components/weatherkit/test_coordinator.py b/tests/components/weatherkit/test_coordinator.py new file mode 100644 index 0000000000000..f619ace237ae3 --- /dev/null +++ b/tests/components/weatherkit/test_coordinator.py @@ -0,0 +1,32 @@ +"""Test WeatherKit data coordinator.""" +from datetime import timedelta +from unittest.mock import patch + +from apple_weatherkit.client import WeatherKitApiClientError + +from homeassistant.const import STATE_UNAVAILABLE +from homeassistant.core import HomeAssistant +from homeassistant.util.dt import utcnow + +from . import init_integration + +from tests.common import async_fire_time_changed + + +async def test_failed_updates(hass: HomeAssistant) -> None: + """Test that we properly handle failed updates.""" + await init_integration(hass) + + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_weather_data", + side_effect=WeatherKitApiClientError, + ): + async_fire_time_changed( + hass, + utcnow() + timedelta(minutes=15), + ) + await hass.async_block_till_done() + + state = hass.states.get("weather.home") + assert state + assert state.state == STATE_UNAVAILABLE diff --git a/tests/components/weatherkit/test_setup.py b/tests/components/weatherkit/test_setup.py new file mode 100644 index 0000000000000..5f94d4100d543 --- /dev/null +++ b/tests/components/weatherkit/test_setup.py @@ -0,0 +1,63 @@ +"""Test the WeatherKit setup process.""" +from unittest.mock import patch + +from apple_weatherkit.client import ( + WeatherKitApiClientAuthenticationError, + WeatherKitApiClientError, +) +import pytest + +from homeassistant import config_entries +from homeassistant.components.weatherkit import async_setup_entry +from homeassistant.components.weatherkit.const import DOMAIN +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import ConfigEntryNotReady + +from . import EXAMPLE_CONFIG_DATA + +from tests.common import MockConfigEntry + + +async def test_auth_error_handling(hass: HomeAssistant) -> None: + """Test that we handle authentication errors at setup properly.""" + entry = MockConfigEntry( + domain=DOMAIN, + title="Home", + unique_id="0123456", + data=EXAMPLE_CONFIG_DATA, + ) + + with patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_weather_data", + side_effect=WeatherKitApiClientAuthenticationError, + ), patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + side_effect=WeatherKitApiClientAuthenticationError, + ): + entry.add_to_hass(hass) + setup_result = await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + assert setup_result is False + + +async def test_client_error_handling(hass: HomeAssistant) -> None: + """Test that we handle API client errors at setup properly.""" + entry = MockConfigEntry( + domain=DOMAIN, + title="Home", + unique_id="0123456", + data=EXAMPLE_CONFIG_DATA, + ) + + with pytest.raises(ConfigEntryNotReady), patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_weather_data", + side_effect=WeatherKitApiClientError, + ), patch( + "homeassistant.components.weatherkit.WeatherKitApiClient.get_availability", + side_effect=WeatherKitApiClientError, + ): + entry.add_to_hass(hass) + config_entries.current_entry.set(entry) + await async_setup_entry(hass, entry) + await hass.async_block_till_done() diff --git a/tests/components/weatherkit/test_weather.py b/tests/components/weatherkit/test_weather.py new file mode 100644 index 0000000000000..fabd3aab572d3 --- /dev/null +++ b/tests/components/weatherkit/test_weather.py @@ -0,0 +1,115 @@ +"""Weather entity tests for the WeatherKit integration.""" + +from syrupy.assertion import SnapshotAssertion + +from homeassistant.components.weather import ( + ATTR_WEATHER_APPARENT_TEMPERATURE, + ATTR_WEATHER_CLOUD_COVERAGE, + ATTR_WEATHER_DEW_POINT, + ATTR_WEATHER_HUMIDITY, + ATTR_WEATHER_PRESSURE, + ATTR_WEATHER_TEMPERATURE, + ATTR_WEATHER_UV_INDEX, + ATTR_WEATHER_VISIBILITY, + ATTR_WEATHER_WIND_BEARING, + ATTR_WEATHER_WIND_GUST_SPEED, + ATTR_WEATHER_WIND_SPEED, + DOMAIN as WEATHER_DOMAIN, + SERVICE_GET_FORECAST, +) +from homeassistant.components.weather.const import WeatherEntityFeature +from homeassistant.components.weatherkit.const import ATTRIBUTION +from homeassistant.const import ATTR_ATTRIBUTION, ATTR_SUPPORTED_FEATURES +from homeassistant.core import HomeAssistant + +from . import init_integration + + +async def test_current_weather(hass: HomeAssistant) -> None: + """Test states of the current weather.""" + await init_integration(hass) + + state = hass.states.get("weather.home") + assert state + assert state.state == "partlycloudy" + assert state.attributes[ATTR_WEATHER_HUMIDITY] == 91 + assert state.attributes[ATTR_WEATHER_PRESSURE] == 1009.8 + assert state.attributes[ATTR_WEATHER_TEMPERATURE] == 22.9 + assert state.attributes[ATTR_WEATHER_VISIBILITY] == 20.97 + assert state.attributes[ATTR_WEATHER_WIND_BEARING] == 259 + assert state.attributes[ATTR_WEATHER_WIND_SPEED] == 5.23 + assert state.attributes[ATTR_WEATHER_APPARENT_TEMPERATURE] == 24.9 + assert state.attributes[ATTR_WEATHER_DEW_POINT] == 21.3 + assert state.attributes[ATTR_WEATHER_CLOUD_COVERAGE] == 62 + assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 10.53 + assert state.attributes[ATTR_WEATHER_UV_INDEX] == 1 + assert state.attributes[ATTR_ATTRIBUTION] == ATTRIBUTION + + +async def test_current_weather_nighttime(hass: HomeAssistant) -> None: + """Test that the condition is clear-night when it's sunny and night time.""" + await init_integration(hass, is_night_time=True) + + state = hass.states.get("weather.home") + assert state + assert state.state == "clear-night" + + +async def test_daily_forecast_missing(hass: HomeAssistant) -> None: + """Test that daily forecast is not supported when WeatherKit doesn't support it.""" + await init_integration(hass, has_daily_forecast=False) + + state = hass.states.get("weather.home") + assert state + assert ( + state.attributes[ATTR_SUPPORTED_FEATURES] & WeatherEntityFeature.FORECAST_DAILY + ) == 0 + + +async def test_hourly_forecast_missing(hass: HomeAssistant) -> None: + """Test that hourly forecast is not supported when WeatherKit doesn't support it.""" + await init_integration(hass, has_hourly_forecast=False) + + state = hass.states.get("weather.home") + assert state + assert ( + state.attributes[ATTR_SUPPORTED_FEATURES] & WeatherEntityFeature.FORECAST_HOURLY + ) == 0 + + +async def test_hourly_forecast( + hass: HomeAssistant, snapshot: SnapshotAssertion +) -> None: + """Test states of the hourly forecast.""" + await init_integration(hass) + + response = await hass.services.async_call( + WEATHER_DOMAIN, + SERVICE_GET_FORECAST, + { + "entity_id": "weather.home", + "type": "hourly", + }, + blocking=True, + return_response=True, + ) + assert response["forecast"] != [] + assert response == snapshot + + +async def test_daily_forecast(hass: HomeAssistant, snapshot: SnapshotAssertion) -> None: + """Test states of the daily forecast.""" + await init_integration(hass) + + response = await hass.services.async_call( + WEATHER_DOMAIN, + SERVICE_GET_FORECAST, + { + "entity_id": "weather.home", + "type": "daily", + }, + blocking=True, + return_response=True, + ) + assert response["forecast"] != [] + assert response == snapshot