mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
OpenWeatherMap remove obsolete forecast sensors (#119922)
This commit is contained in:
parent
6ddc872655
commit
0aacc67c38
@ -53,19 +53,6 @@ ATTR_API_DAILY_FORECAST = "daily_forecast"
|
|||||||
UPDATE_LISTENER = "update_listener"
|
UPDATE_LISTENER = "update_listener"
|
||||||
PLATFORMS = [Platform.SENSOR, Platform.WEATHER]
|
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"
|
|
||||||
ATTR_API_FORECAST_TEMP = "temperature"
|
|
||||||
ATTR_API_FORECAST_TEMP_LOW = "templow"
|
|
||||||
ATTR_API_FORECAST_TIME = "datetime"
|
|
||||||
ATTR_API_FORECAST_WIND_BEARING = "wind_bearing"
|
|
||||||
ATTR_API_FORECAST_WIND_SPEED = "wind_speed"
|
|
||||||
|
|
||||||
FORECAST_MODE_HOURLY = "hourly"
|
FORECAST_MODE_HOURLY = "hourly"
|
||||||
FORECAST_MODE_DAILY = "daily"
|
FORECAST_MODE_DAILY = "daily"
|
||||||
FORECAST_MODE_FREE_DAILY = "freedaily"
|
FORECAST_MODE_FREE_DAILY = "freedaily"
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from homeassistant.components.sensor import (
|
from homeassistant.components.sensor import (
|
||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
SensorEntity,
|
SensorEntity,
|
||||||
@ -15,7 +13,6 @@ from homeassistant.const import (
|
|||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
UV_INDEX,
|
UV_INDEX,
|
||||||
UnitOfLength,
|
UnitOfLength,
|
||||||
UnitOfPrecipitationDepth,
|
|
||||||
UnitOfPressure,
|
UnitOfPressure,
|
||||||
UnitOfSpeed,
|
UnitOfSpeed,
|
||||||
UnitOfTemperature,
|
UnitOfTemperature,
|
||||||
@ -26,23 +23,14 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.typing import StateType
|
from homeassistant.helpers.typing import StateType
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||||
from homeassistant.util import dt as dt_util
|
|
||||||
|
|
||||||
from . import OpenweathermapConfigEntry
|
from . import OpenweathermapConfigEntry
|
||||||
from .const import (
|
from .const import (
|
||||||
ATTR_API_CLOUD_COVERAGE,
|
|
||||||
ATTR_API_CLOUDS,
|
ATTR_API_CLOUDS,
|
||||||
ATTR_API_CONDITION,
|
ATTR_API_CONDITION,
|
||||||
ATTR_API_CURRENT,
|
ATTR_API_CURRENT,
|
||||||
ATTR_API_DAILY_FORECAST,
|
|
||||||
ATTR_API_DEW_POINT,
|
ATTR_API_DEW_POINT,
|
||||||
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
||||||
ATTR_API_FORECAST_PRECIPITATION,
|
|
||||||
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
|
|
||||||
ATTR_API_FORECAST_PRESSURE,
|
|
||||||
ATTR_API_FORECAST_TEMP,
|
|
||||||
ATTR_API_FORECAST_TEMP_LOW,
|
|
||||||
ATTR_API_FORECAST_TIME,
|
|
||||||
ATTR_API_HUMIDITY,
|
ATTR_API_HUMIDITY,
|
||||||
ATTR_API_PRECIPITATION_KIND,
|
ATTR_API_PRECIPITATION_KIND,
|
||||||
ATTR_API_PRESSURE,
|
ATTR_API_PRESSURE,
|
||||||
@ -161,62 +149,6 @@ WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
name="Weather Code",
|
name="Weather Code",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_CONDITION,
|
|
||||||
name="Condition",
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_PRECIPITATION,
|
|
||||||
name="Precipitation",
|
|
||||||
device_class=SensorDeviceClass.PRECIPITATION,
|
|
||||||
native_unit_of_measurement=UnitOfPrecipitationDepth.MILLIMETERS,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
|
|
||||||
name="Precipitation probability",
|
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_PRESSURE,
|
|
||||||
name="Pressure",
|
|
||||||
native_unit_of_measurement=UnitOfPressure.HPA,
|
|
||||||
device_class=SensorDeviceClass.PRESSURE,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_TEMP,
|
|
||||||
name="Temperature",
|
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_TEMP_LOW,
|
|
||||||
name="Temperature Low",
|
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_FORECAST_TIME,
|
|
||||||
name="Time",
|
|
||||||
device_class=SensorDeviceClass.TIMESTAMP,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_WIND_BEARING,
|
|
||||||
name="Wind bearing",
|
|
||||||
native_unit_of_measurement=DEGREE,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_WIND_SPEED,
|
|
||||||
name="Wind speed",
|
|
||||||
native_unit_of_measurement=UnitOfSpeed.METERS_PER_SECOND,
|
|
||||||
device_class=SensorDeviceClass.WIND_SPEED,
|
|
||||||
),
|
|
||||||
SensorEntityDescription(
|
|
||||||
key=ATTR_API_CLOUD_COVERAGE,
|
|
||||||
name="Cloud coverage",
|
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
@ -238,19 +170,6 @@ async def async_setup_entry(
|
|||||||
)
|
)
|
||||||
for description in WEATHER_SENSOR_TYPES
|
for description in WEATHER_SENSOR_TYPES
|
||||||
]
|
]
|
||||||
|
|
||||||
entities.extend(
|
|
||||||
[
|
|
||||||
OpenWeatherMapForecastSensor(
|
|
||||||
f"{name} Forecast",
|
|
||||||
f"{config_entry.unique_id}-forecast-{description.key}",
|
|
||||||
description,
|
|
||||||
weather_coordinator,
|
|
||||||
)
|
|
||||||
for description in FORECAST_SENSOR_TYPES
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
@ -317,31 +236,3 @@ class OpenWeatherMapSensor(AbstractOpenWeatherMapSensor):
|
|||||||
return self._weather_coordinator.data[ATTR_API_CURRENT].get(
|
return self._weather_coordinator.data[ATTR_API_CURRENT].get(
|
||||||
self.entity_description.key
|
self.entity_description.key
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class OpenWeatherMapForecastSensor(AbstractOpenWeatherMapSensor):
|
|
||||||
"""Implementation of an OpenWeatherMap this day forecast sensor."""
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
name: str,
|
|
||||||
unique_id: str,
|
|
||||||
description: SensorEntityDescription,
|
|
||||||
weather_coordinator: WeatherUpdateCoordinator,
|
|
||||||
) -> None:
|
|
||||||
"""Initialize the sensor."""
|
|
||||||
super().__init__(name, unique_id, description, weather_coordinator)
|
|
||||||
self._weather_coordinator = weather_coordinator
|
|
||||||
|
|
||||||
@property
|
|
||||||
def native_value(self) -> StateType | datetime:
|
|
||||||
"""Return the state of the device."""
|
|
||||||
forecasts = self._weather_coordinator.data[ATTR_API_DAILY_FORECAST]
|
|
||||||
value = forecasts[0].get(self.entity_description.key)
|
|
||||||
if (
|
|
||||||
value
|
|
||||||
and self.entity_description.device_class is SensorDeviceClass.TIMESTAMP
|
|
||||||
):
|
|
||||||
return dt_util.parse_datetime(value)
|
|
||||||
|
|
||||||
return value
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user