1 """Support for the AccuWeather service."""
3 from __future__
import annotations
5 from typing
import cast
8 ATTR_FORECAST_CLOUD_COVERAGE,
9 ATTR_FORECAST_CONDITION,
10 ATTR_FORECAST_HUMIDITY,
11 ATTR_FORECAST_NATIVE_APPARENT_TEMP,
12 ATTR_FORECAST_NATIVE_PRECIPITATION,
13 ATTR_FORECAST_NATIVE_TEMP,
14 ATTR_FORECAST_NATIVE_TEMP_LOW,
15 ATTR_FORECAST_NATIVE_WIND_GUST_SPEED,
16 ATTR_FORECAST_NATIVE_WIND_SPEED,
17 ATTR_FORECAST_PRECIPITATION_PROBABILITY,
19 ATTR_FORECAST_UV_INDEX,
20 ATTR_FORECAST_WIND_BEARING,
21 CoordinatorWeatherEntity,
27 UnitOfPrecipitationDepth,
44 from .coordinator
import (
45 AccuWeatherConfigEntry,
46 AccuWeatherDailyForecastDataUpdateCoordinator,
48 AccuWeatherObservationDataUpdateCoordinator,
56 entry: AccuWeatherConfigEntry,
57 async_add_entities: AddEntitiesCallback,
59 """Add a AccuWeather weather entity from a config_entry."""
64 CoordinatorWeatherEntity[
65 AccuWeatherObservationDataUpdateCoordinator,
66 AccuWeatherDailyForecastDataUpdateCoordinator,
69 """Define an AccuWeather entity."""
71 _attr_has_entity_name =
True
74 def __init__(self, accuweather_data: AccuWeatherData) ->
None:
77 observation_coordinator=accuweather_data.coordinator_observation,
78 daily_coordinator=accuweather_data.coordinator_daily_forecast,
86 self.
_attr_unique_id_attr_unique_id = accuweather_data.coordinator_observation.location_key
88 self.
_attr_device_info_attr_device_info = accuweather_data.coordinator_observation.device_info
96 """Return the current condition."""
101 """Return the Cloud coverage in %."""
106 """Return the apparent temperature."""
116 """Return the temperature."""
124 """Return the pressure."""
131 """Return the dew point."""
138 """Return the humidity."""
143 """Return the wind gust speed."""
153 """Return the wind speed."""
163 """Return the wind bearing."""
170 """Return the visibility."""
178 """Return the UV index."""
183 """Return the daily forecast in native units."""
187 ATTR_FORECAST_CLOUD_COVERAGE: item[
"CloudCoverDay"],
188 ATTR_FORECAST_HUMIDITY: item[
"RelativeHumidityDay"][
"Average"],
189 ATTR_FORECAST_NATIVE_TEMP: item[
"TemperatureMax"][ATTR_VALUE],
190 ATTR_FORECAST_NATIVE_TEMP_LOW: item[
"TemperatureMin"][ATTR_VALUE],
191 ATTR_FORECAST_NATIVE_APPARENT_TEMP: item[
"RealFeelTemperatureMax"][
194 ATTR_FORECAST_NATIVE_PRECIPITATION: item[
"TotalLiquidDay"][ATTR_VALUE],
195 ATTR_FORECAST_PRECIPITATION_PROBABILITY: item[
196 "PrecipitationProbabilityDay"
198 ATTR_FORECAST_NATIVE_WIND_SPEED: item[
"WindDay"][ATTR_SPEED][
201 ATTR_FORECAST_NATIVE_WIND_GUST_SPEED: item[
"WindGustDay"][ATTR_SPEED][
204 ATTR_FORECAST_UV_INDEX: item[
"UVIndex"][ATTR_VALUE],
205 ATTR_FORECAST_WIND_BEARING: item[
"WindDay"][ATTR_DIRECTION][
"Degrees"],
206 ATTR_FORECAST_CONDITION: CONDITION_MAP.get(item[
"IconDay"]),
list[Forecast]|None _async_forecast_daily(self)
_attr_native_visibility_unit
float native_apparent_temperature(self)
None __init__(self, AccuWeatherData accuweather_data)
float native_pressure(self)
_attr_native_wind_speed_unit
float native_wind_speed(self)
_attr_native_precipitation_unit
float cloud_coverage(self)
float native_wind_gust_speed(self)
float native_visibility(self)
_attr_native_pressure_unit
float native_dew_point(self)
_attr_native_temperature_unit
float native_temperature(self)
None async_setup_entry(HomeAssistant hass, AccuWeatherConfigEntry entry, AddEntitiesCallback async_add_entities)