Add new attributes to OpenWeatherMap weather entity (#95173)

* Add new attrs to current condition

* Add new attrs to forecast
This commit is contained in:
Maciej Bieniek 2023-06-25 14:30:59 +00:00 committed by GitHub
parent 67586caaf9
commit 62e518badb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 1 deletions

View File

@ -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"

View File

@ -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."""

View File

@ -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")