Use new attributes in Smhi (#95096)
parent
5d365ecb6b
commit
071679f91f
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue