diff --git a/homeassistant/components/openweathermap/const.py b/homeassistant/components/openweathermap/const.py index 4af068f2b84..d53fbc136b2 100644 --- a/homeassistant/components/openweathermap/const.py +++ b/homeassistant/components/openweathermap/const.py @@ -35,6 +35,7 @@ ATTR_API_DEW_POINT = "dew_point" ATTR_API_WEATHER = "weather" ATTR_API_TEMPERATURE = "temperature" ATTR_API_FEELS_LIKE_TEMPERATURE = "feels_like_temperature" +ATTR_API_WIND_GUST = "wind_gust" ATTR_API_WIND_SPEED = "wind_speed" ATTR_API_WIND_BEARING = "wind_bearing" ATTR_API_HUMIDITY = "humidity" @@ -50,7 +51,10 @@ ATTR_API_FORECAST = "forecast" UPDATE_LISTENER = "update_listener" PLATFORMS = [Platform.SENSOR, Platform.WEATHER] +ATTR_API_FORECAST_CLOUDS = "clouds" ATTR_API_FORECAST_CONDITION = "condition" +ATTR_API_FORECAST_FEELS_LIKE_TEMPERATURE = "feels_like_temperature" +ATTR_API_FORECAST_HUMIDITY = "humidity" ATTR_API_FORECAST_PRECIPITATION = "precipitation" ATTR_API_FORECAST_PRECIPITATION_PROBABILITY = "precipitation_probability" ATTR_API_FORECAST_PRESSURE = "pressure" diff --git a/homeassistant/components/openweathermap/weather.py b/homeassistant/components/openweathermap/weather.py index da29031d513..30f98bb39d1 100644 --- a/homeassistant/components/openweathermap/weather.py +++ b/homeassistant/components/openweathermap/weather.py @@ -4,7 +4,10 @@ from __future__ import annotations from typing import cast from homeassistant.components.weather import ( + ATTR_FORECAST_CLOUD_COVERAGE, ATTR_FORECAST_CONDITION, + ATTR_FORECAST_HUMIDITY, + ATTR_FORECAST_NATIVE_APPARENT_TEMP, ATTR_FORECAST_NATIVE_PRECIPITATION, ATTR_FORECAST_NATIVE_PRESSURE, ATTR_FORECAST_NATIVE_TEMP, @@ -29,9 +32,15 @@ from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import ( + ATTR_API_CLOUDS, ATTR_API_CONDITION, + ATTR_API_DEW_POINT, + ATTR_API_FEELS_LIKE_TEMPERATURE, ATTR_API_FORECAST, + ATTR_API_FORECAST_CLOUDS, ATTR_API_FORECAST_CONDITION, + ATTR_API_FORECAST_FEELS_LIKE_TEMPERATURE, + ATTR_API_FORECAST_HUMIDITY, ATTR_API_FORECAST_PRECIPITATION, ATTR_API_FORECAST_PRECIPITATION_PROBABILITY, ATTR_API_FORECAST_PRESSURE, @@ -44,6 +53,7 @@ from .const import ( ATTR_API_PRESSURE, ATTR_API_TEMPERATURE, ATTR_API_WIND_BEARING, + ATTR_API_WIND_GUST, ATTR_API_WIND_SPEED, ATTRIBUTION, DEFAULT_NAME, @@ -64,6 +74,9 @@ FORECAST_MAP = { ATTR_API_FORECAST_TIME: ATTR_FORECAST_TIME, ATTR_API_FORECAST_WIND_BEARING: ATTR_FORECAST_WIND_BEARING, ATTR_API_FORECAST_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED, + ATTR_API_FORECAST_CLOUDS: ATTR_FORECAST_CLOUD_COVERAGE, + ATTR_API_FORECAST_HUMIDITY: ATTR_FORECAST_HUMIDITY, + ATTR_API_FORECAST_FEELS_LIKE_TEMPERATURE: ATTR_FORECAST_NATIVE_APPARENT_TEMP, } @@ -116,6 +129,16 @@ class OpenWeatherMapWeather(WeatherEntity): """Return the current condition.""" return self._weather_coordinator.data[ATTR_API_CONDITION] + @property + def cloud_coverage(self) -> float | None: + """Return the Cloud coverage in %.""" + return self._weather_coordinator.data[ATTR_API_CLOUDS] + + @property + def native_apparent_temperature(self) -> float | None: + """Return the apparent temperature.""" + return self._weather_coordinator.data[ATTR_API_FEELS_LIKE_TEMPERATURE] + @property def native_temperature(self) -> float | None: """Return the temperature.""" @@ -131,6 +154,16 @@ class OpenWeatherMapWeather(WeatherEntity): """Return the humidity.""" return self._weather_coordinator.data[ATTR_API_HUMIDITY] + @property + def native_dew_point(self) -> float | None: + """Return the dew point.""" + return self._weather_coordinator.data[ATTR_API_DEW_POINT] + + @property + def native_wind_gust_speed(self) -> float | None: + """Return the wind gust speed.""" + return self._weather_coordinator.data[ATTR_API_WIND_GUST] + @property def native_wind_speed(self) -> float | None: """Return the wind speed.""" diff --git a/homeassistant/components/openweathermap/weather_update_coordinator.py b/homeassistant/components/openweathermap/weather_update_coordinator.py index 4602615769a..521c1f87ca2 100644 --- a/homeassistant/components/openweathermap/weather_update_coordinator.py +++ b/homeassistant/components/openweathermap/weather_update_coordinator.py @@ -21,7 +21,10 @@ from .const import ( ATTR_API_DEW_POINT, ATTR_API_FEELS_LIKE_TEMPERATURE, ATTR_API_FORECAST, + ATTR_API_FORECAST_CLOUDS, ATTR_API_FORECAST_CONDITION, + ATTR_API_FORECAST_FEELS_LIKE_TEMPERATURE, + ATTR_API_FORECAST_HUMIDITY, ATTR_API_FORECAST_PRECIPITATION, ATTR_API_FORECAST_PRECIPITATION_PROBABILITY, ATTR_API_FORECAST_PRESSURE, @@ -41,6 +44,7 @@ from .const import ( ATTR_API_WEATHER, ATTR_API_WEATHER_CODE, ATTR_API_WIND_BEARING, + ATTR_API_WIND_GUST, ATTR_API_WIND_SPEED, CONDITION_CLASSES, DOMAIN, @@ -130,6 +134,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator): ATTR_API_PRESSURE: current_weather.pressure.get("press"), ATTR_API_HUMIDITY: current_weather.humidity, ATTR_API_WIND_BEARING: current_weather.wind().get("deg"), + ATTR_API_WIND_GUST: current_weather.wind().get("gust"), ATTR_API_WIND_SPEED: current_weather.wind().get("speed"), ATTR_API_CLOUDS: current_weather.clouds, ATTR_API_RAIN: self._get_rain(current_weather.rain), @@ -174,7 +179,11 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator): ATTR_API_FORECAST_CONDITION: self._get_condition( entry.weather_code, entry.reference_time("unix") ), - ATTR_API_CLOUDS: entry.clouds, + ATTR_API_FORECAST_CLOUDS: entry.clouds, + ATTR_API_FORECAST_FEELS_LIKE_TEMPERATURE: entry.temperature("celsius").get( + "feels_like_day" + ), + ATTR_API_FORECAST_HUMIDITY: entry.humidity, } temperature_dict = entry.temperature("celsius")