mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Remove hourly weather entity from Aemet (#110764)
This commit is contained in:
parent
48553ece68
commit
4fb11dc4f3
@ -121,8 +121,3 @@ FORECAST_MAP = {
|
||||
AOD_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
|
||||
},
|
||||
}
|
||||
|
||||
WEATHER_FORECAST_MODES = {
|
||||
AOD_FORECAST_DAILY: "daily",
|
||||
AOD_FORECAST_HOURLY: "hourly",
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ from aemet_opendata.const import (
|
||||
)
|
||||
|
||||
from homeassistant.components.weather import (
|
||||
DOMAIN as WEATHER_DOMAIN,
|
||||
Forecast,
|
||||
SingleCoordinatorWeatherEntity,
|
||||
WeatherEntityFeature,
|
||||
@ -27,7 +26,6 @@ from homeassistant.const import (
|
||||
UnitOfTemperature,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import (
|
||||
@ -36,7 +34,6 @@ from .const import (
|
||||
DOMAIN,
|
||||
ENTRY_NAME,
|
||||
ENTRY_WEATHER_COORDINATOR,
|
||||
WEATHER_FORECAST_MODES,
|
||||
)
|
||||
from .coordinator import WeatherUpdateCoordinator
|
||||
from .entity import AemetEntity
|
||||
@ -51,31 +48,14 @@ async def async_setup_entry(
|
||||
domain_data = hass.data[DOMAIN][config_entry.entry_id]
|
||||
weather_coordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
|
||||
|
||||
entities = []
|
||||
entity_registry = er.async_get(hass)
|
||||
|
||||
# Add daily + hourly entity for legacy config entries, only add daily for new
|
||||
# config entries. This can be removed in HA Core 2024.3
|
||||
if entity_registry.async_get_entity_id(
|
||||
WEATHER_DOMAIN,
|
||||
DOMAIN,
|
||||
f"{config_entry.unique_id} {WEATHER_FORECAST_MODES[AOD_FORECAST_HOURLY]}",
|
||||
):
|
||||
for mode, mode_id in WEATHER_FORECAST_MODES.items():
|
||||
name = f"{domain_data[ENTRY_NAME]} {mode_id}"
|
||||
unique_id = f"{config_entry.unique_id} {mode_id}"
|
||||
entities.append(AemetWeather(name, unique_id, weather_coordinator, mode))
|
||||
else:
|
||||
entities.append(
|
||||
async_add_entities(
|
||||
[
|
||||
AemetWeather(
|
||||
domain_data[ENTRY_NAME],
|
||||
config_entry.unique_id,
|
||||
weather_coordinator,
|
||||
AOD_FORECAST_DAILY,
|
||||
domain_data[ENTRY_NAME], config_entry.unique_id, weather_coordinator
|
||||
)
|
||||
)
|
||||
|
||||
async_add_entities(entities, False)
|
||||
],
|
||||
False,
|
||||
)
|
||||
|
||||
|
||||
class AemetWeather(
|
||||
@ -98,14 +78,9 @@ class AemetWeather(
|
||||
name,
|
||||
unique_id,
|
||||
coordinator: WeatherUpdateCoordinator,
|
||||
forecast_mode,
|
||||
) -> None:
|
||||
"""Initialize the sensor."""
|
||||
super().__init__(coordinator)
|
||||
self._forecast_mode = forecast_mode
|
||||
self._attr_entity_registry_enabled_default = (
|
||||
self._forecast_mode == AOD_FORECAST_DAILY
|
||||
)
|
||||
self._attr_name = name
|
||||
self._attr_unique_id = unique_id
|
||||
|
||||
@ -115,11 +90,6 @@ class AemetWeather(
|
||||
cond = self.get_aemet_value([AOD_WEATHER, AOD_CONDITION])
|
||||
return CONDITIONS_MAP.get(cond)
|
||||
|
||||
@property
|
||||
def forecast(self) -> list[Forecast]:
|
||||
"""Return the forecast array."""
|
||||
return self.get_aemet_forecast(self._forecast_mode)
|
||||
|
||||
@callback
|
||||
def _async_forecast_daily(self) -> list[Forecast]:
|
||||
"""Return the daily forecast in native units."""
|
||||
|
@ -7,19 +7,10 @@ from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.aemet.const import ATTRIBUTION, DOMAIN
|
||||
from homeassistant.components.aemet.const import ATTRIBUTION
|
||||
from homeassistant.components.aemet.coordinator import WEATHER_UPDATE_INTERVAL
|
||||
from homeassistant.components.weather import (
|
||||
ATTR_CONDITION_SNOWY,
|
||||
ATTR_FORECAST,
|
||||
ATTR_FORECAST_CONDITION,
|
||||
ATTR_FORECAST_PRECIPITATION,
|
||||
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
|
||||
ATTR_FORECAST_TEMP,
|
||||
ATTR_FORECAST_TEMP_LOW,
|
||||
ATTR_FORECAST_TIME,
|
||||
ATTR_FORECAST_WIND_BEARING,
|
||||
ATTR_FORECAST_WIND_SPEED,
|
||||
ATTR_WEATHER_HUMIDITY,
|
||||
ATTR_WEATHER_PRESSURE,
|
||||
ATTR_WEATHER_TEMPERATURE,
|
||||
@ -32,8 +23,6 @@ from homeassistant.components.weather import (
|
||||
)
|
||||
from homeassistant.const import ATTR_ATTRIBUTION
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
from .util import async_init_integration, mock_api_call
|
||||
|
||||
@ -60,62 +49,6 @@ async def test_aemet_weather(
|
||||
assert state.attributes[ATTR_WEATHER_WIND_BEARING] == 122.0
|
||||
assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 12.2
|
||||
assert state.attributes[ATTR_WEATHER_WIND_SPEED] == 3.2
|
||||
forecast = state.attributes[ATTR_FORECAST][0]
|
||||
assert forecast[ATTR_FORECAST_CONDITION] == ATTR_CONDITION_SNOWY
|
||||
assert ATTR_FORECAST_PRECIPITATION not in forecast
|
||||
assert forecast[ATTR_FORECAST_PRECIPITATION_PROBABILITY] == 0
|
||||
assert forecast[ATTR_FORECAST_TEMP] == 2
|
||||
assert forecast[ATTR_FORECAST_TEMP_LOW] == -1
|
||||
assert (
|
||||
forecast[ATTR_FORECAST_TIME]
|
||||
== dt_util.parse_datetime("2021-01-08 23:00:00+00:00").isoformat()
|
||||
)
|
||||
assert forecast[ATTR_FORECAST_WIND_BEARING] == 90.0
|
||||
assert forecast[ATTR_FORECAST_WIND_SPEED] == 0.0
|
||||
|
||||
state = hass.states.get("weather.aemet_hourly")
|
||||
assert state is None
|
||||
|
||||
|
||||
async def test_aemet_weather_legacy(
|
||||
hass: HomeAssistant,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
entity_registry: er.EntityRegistry,
|
||||
) -> None:
|
||||
"""Test states of legacy weather."""
|
||||
|
||||
entity_registry.async_get_or_create(
|
||||
WEATHER_DOMAIN,
|
||||
DOMAIN,
|
||||
"None hourly",
|
||||
)
|
||||
|
||||
hass.config.set_time_zone("UTC")
|
||||
freezer.move_to("2021-01-09 12:00:00+00:00")
|
||||
await async_init_integration(hass)
|
||||
|
||||
state = hass.states.get("weather.aemet_daily")
|
||||
assert state
|
||||
assert state.state == ATTR_CONDITION_SNOWY
|
||||
assert state.attributes[ATTR_ATTRIBUTION] == ATTRIBUTION
|
||||
assert state.attributes[ATTR_WEATHER_HUMIDITY] == 99.0
|
||||
assert state.attributes[ATTR_WEATHER_PRESSURE] == 1004.4 # 100440.0 Pa -> hPa
|
||||
assert state.attributes[ATTR_WEATHER_TEMPERATURE] == -0.7
|
||||
assert state.attributes[ATTR_WEATHER_WIND_BEARING] == 122.0
|
||||
assert state.attributes[ATTR_WEATHER_WIND_GUST_SPEED] == 12.2
|
||||
assert state.attributes[ATTR_WEATHER_WIND_SPEED] == 3.2
|
||||
forecast = state.attributes[ATTR_FORECAST][0]
|
||||
assert forecast[ATTR_FORECAST_CONDITION] == ATTR_CONDITION_SNOWY
|
||||
assert ATTR_FORECAST_PRECIPITATION not in forecast
|
||||
assert forecast[ATTR_FORECAST_PRECIPITATION_PROBABILITY] == 0
|
||||
assert forecast[ATTR_FORECAST_TEMP] == 2
|
||||
assert forecast[ATTR_FORECAST_TEMP_LOW] == -1
|
||||
assert (
|
||||
forecast[ATTR_FORECAST_TIME]
|
||||
== dt_util.parse_datetime("2021-01-08 23:00:00+00:00").isoformat()
|
||||
)
|
||||
assert forecast[ATTR_FORECAST_WIND_BEARING] == 90.0
|
||||
assert forecast[ATTR_FORECAST_WIND_SPEED] == 0.0
|
||||
|
||||
state = hass.states.get("weather.aemet_hourly")
|
||||
assert state is None
|
||||
|
Loading…
x
Reference in New Issue
Block a user