From 071679f91f4e03c554ab749ac2265c32685653b8 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Fri, 23 Jun 2023 11:32:20 +0200 Subject: [PATCH] Use new attributes in Smhi (#95096) --- homeassistant/components/smhi/const.py | 2 -- homeassistant/components/smhi/weather.py | 19 ++++++++--------- tests/components/smhi/test_weather.py | 26 ++++++++++++++---------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/smhi/const.py b/homeassistant/components/smhi/const.py index ad788923c7d..cc1c4550723 100644 --- a/homeassistant/components/smhi/const.py +++ b/homeassistant/components/smhi/const.py @@ -3,8 +3,6 @@ from typing import Final from homeassistant.components.weather import DOMAIN as WEATHER_DOMAIN -ATTR_SMHI_CLOUDINESS: Final = "cloudiness" -ATTR_SMHI_WIND_GUST_SPEED: Final = "wind_gust_speed" ATTR_SMHI_THUNDER_PROBABILITY: Final = "thunder_probability" DOMAIN = "smhi" diff --git a/homeassistant/components/smhi/weather.py b/homeassistant/components/smhi/weather.py index 12781df6891..f8bd03e4e67 100644 --- a/homeassistant/components/smhi/weather.py +++ b/homeassistant/components/smhi/weather.py @@ -27,15 +27,17 @@ from homeassistant.components.weather import ( ATTR_CONDITION_SUNNY, ATTR_CONDITION_WINDY, ATTR_CONDITION_WINDY_VARIANT, + ATTR_FORECAST_CLOUD_COVERAGE, ATTR_FORECAST_CONDITION, + ATTR_FORECAST_HUMIDITY, ATTR_FORECAST_NATIVE_PRECIPITATION, ATTR_FORECAST_NATIVE_PRESSURE, ATTR_FORECAST_NATIVE_TEMP, ATTR_FORECAST_NATIVE_TEMP_LOW, + ATTR_FORECAST_NATIVE_WIND_GUST_SPEED, ATTR_FORECAST_NATIVE_WIND_SPEED, ATTR_FORECAST_TIME, ATTR_FORECAST_WIND_BEARING, - ROUNDING_PRECISION, Forecast, WeatherEntity, ) @@ -58,12 +60,9 @@ from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.event import async_call_later from homeassistant.util import Throttle, slugify -from homeassistant.util.unit_conversion import SpeedConverter from .const import ( - ATTR_SMHI_CLOUDINESS, ATTR_SMHI_THUNDER_PROBABILITY, - ATTR_SMHI_WIND_GUST_SPEED, DOMAIN, ENTITY_ID_SENSOR_FORMAT, ) @@ -156,14 +155,7 @@ class SmhiWeather(WeatherEntity): def extra_state_attributes(self) -> Mapping[str, Any] | None: """Return additional attributes.""" if self._forecasts: - wind_gust = SpeedConverter.convert( - self._forecasts[0].wind_gust, - UnitOfSpeed.METERS_PER_SECOND, - self._wind_speed_unit, - ) return { - ATTR_SMHI_CLOUDINESS: self._forecasts[0].cloudiness, - ATTR_SMHI_WIND_GUST_SPEED: round(wind_gust, ROUNDING_PRECISION), ATTR_SMHI_THUNDER_PROBABILITY: self._forecasts[0].thunder, } return None @@ -189,6 +181,8 @@ class SmhiWeather(WeatherEntity): self._attr_wind_bearing = self._forecasts[0].wind_direction self._attr_native_visibility = self._forecasts[0].horizontal_visibility self._attr_native_pressure = self._forecasts[0].pressure + self._attr_native_wind_gust_speed = self._forecasts[0].wind_gust + self._attr_cloud_coverage = self._forecasts[0].cloudiness self._attr_condition = next( ( k @@ -227,6 +221,9 @@ class SmhiWeather(WeatherEntity): ATTR_FORECAST_NATIVE_PRESSURE: forecast.pressure, ATTR_FORECAST_WIND_BEARING: forecast.wind_direction, ATTR_FORECAST_NATIVE_WIND_SPEED: forecast.wind_speed, + ATTR_FORECAST_HUMIDITY: forecast.humidity, + ATTR_FORECAST_NATIVE_WIND_GUST_SPEED: forecast.wind_gust, + ATTR_FORECAST_CLOUD_COVERAGE: forecast.cloudiness, } ) diff --git a/tests/components/smhi/test_weather.py b/tests/components/smhi/test_weather.py index 57998b725f9..55b07530c39 100644 --- a/tests/components/smhi/test_weather.py +++ b/tests/components/smhi/test_weather.py @@ -6,14 +6,11 @@ from unittest.mock import patch import pytest from smhi.smhi_lib import APIURL_TEMPLATE, SmhiForecast, SmhiForecastException -from homeassistant.components.smhi.const import ( - ATTR_SMHI_CLOUDINESS, - ATTR_SMHI_THUNDER_PROBABILITY, - ATTR_SMHI_WIND_GUST_SPEED, -) +from homeassistant.components.smhi.const import ATTR_SMHI_THUNDER_PROBABILITY from homeassistant.components.smhi.weather import CONDITION_CLASSES, RETRY_TIMEOUT from homeassistant.components.weather import ( ATTR_FORECAST, + ATTR_FORECAST_CLOUD_COVERAGE, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRESSURE, @@ -21,6 +18,7 @@ from homeassistant.components.weather import ( ATTR_FORECAST_TEMP_LOW, ATTR_FORECAST_TIME, ATTR_FORECAST_WIND_BEARING, + ATTR_FORECAST_WIND_GUST_SPEED, ATTR_FORECAST_WIND_SPEED, ATTR_WEATHER_HUMIDITY, ATTR_WEATHER_PRESSURE, @@ -31,6 +29,10 @@ from homeassistant.components.weather import ( ATTR_WEATHER_WIND_SPEED_UNIT, DOMAIN as WEATHER_DOMAIN, ) +from homeassistant.components.weather.const import ( + ATTR_WEATHER_CLOUD_COVERAGE, + ATTR_WEATHER_WIND_GUST_SPEED, +) from homeassistant.const import ATTR_ATTRIBUTION, STATE_UNKNOWN, UnitOfSpeed from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er @@ -64,9 +66,9 @@ async def test_setup_hass( assert state assert state.state == "sunny" - assert state.attributes[ATTR_SMHI_CLOUDINESS] == 50 + assert state.attributes[ATTR_WEATHER_CLOUD_COVERAGE] == 50 assert state.attributes[ATTR_SMHI_THUNDER_PROBABILITY] == 33 - assert state.attributes[ATTR_SMHI_WIND_GUST_SPEED] == 16.92 + assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 16.92 assert state.attributes[ATTR_ATTRIBUTION].find("SMHI") >= 0 assert state.attributes[ATTR_WEATHER_HUMIDITY] == 55 assert state.attributes[ATTR_WEATHER_PRESSURE] == 1024 @@ -85,6 +87,8 @@ async def test_setup_hass( assert forecast[ATTR_FORECAST_PRESSURE] == 1026 assert forecast[ATTR_FORECAST_WIND_BEARING] == 203 assert forecast[ATTR_FORECAST_WIND_SPEED] == 6.12 + assert forecast[ATTR_FORECAST_WIND_GUST_SPEED] == 18.36 + assert forecast[ATTR_FORECAST_CLOUD_COVERAGE] == 100 async def test_properties_no_data(hass: HomeAssistant) -> None: @@ -112,9 +116,9 @@ async def test_properties_no_data(hass: HomeAssistant) -> None: assert ATTR_WEATHER_WIND_SPEED not in state.attributes assert ATTR_WEATHER_WIND_BEARING not in state.attributes assert ATTR_FORECAST not in state.attributes - assert ATTR_SMHI_CLOUDINESS not in state.attributes + assert ATTR_WEATHER_CLOUD_COVERAGE not in state.attributes assert ATTR_SMHI_THUNDER_PROBABILITY not in state.attributes - assert ATTR_SMHI_WIND_GUST_SPEED not in state.attributes + assert ATTR_WEATHER_WIND_GUST_SPEED not in state.attributes async def test_properties_unknown_symbol(hass: HomeAssistant) -> None: @@ -337,7 +341,7 @@ async def test_custom_speed_unit( assert state assert state.name == "test" - assert state.attributes[ATTR_SMHI_WIND_GUST_SPEED] == 16.92 + assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 16.92 entity_reg = er.async_get(hass) entity_reg.async_update_entity_options( @@ -349,4 +353,4 @@ async def test_custom_speed_unit( await hass.async_block_till_done() state = hass.states.get(ENTITY_ID) - assert state.attributes[ATTR_SMHI_WIND_GUST_SPEED] == 4.7 + assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 4.7