Remove previously-deprecated RainMachine sensors (#81053)
This commit is contained in:
parent
4e8e53f357
commit
d72b8a025f
2 changed files with 7 additions and 76 deletions
|
@ -12,12 +12,7 @@ from homeassistant.helpers.entity import EntityCategory
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import RainMachineData, RainMachineEntity
|
from . import RainMachineData, RainMachineEntity
|
||||||
from .const import (
|
from .const import DATA_PROVISION_SETTINGS, DATA_RESTRICTIONS_CURRENT, DOMAIN
|
||||||
DATA_PROVISION_SETTINGS,
|
|
||||||
DATA_RESTRICTIONS_CURRENT,
|
|
||||||
DATA_RESTRICTIONS_UNIVERSAL,
|
|
||||||
DOMAIN,
|
|
||||||
)
|
|
||||||
from .model import (
|
from .model import (
|
||||||
RainMachineEntityDescription,
|
RainMachineEntityDescription,
|
||||||
RainMachineEntityDescriptionMixinDataKey,
|
RainMachineEntityDescriptionMixinDataKey,
|
||||||
|
@ -30,8 +25,6 @@ from .util import (
|
||||||
|
|
||||||
TYPE_FLOW_SENSOR = "flow_sensor"
|
TYPE_FLOW_SENSOR = "flow_sensor"
|
||||||
TYPE_FREEZE = "freeze"
|
TYPE_FREEZE = "freeze"
|
||||||
TYPE_FREEZE_PROTECTION = "freeze_protection"
|
|
||||||
TYPE_HOT_DAYS = "extra_water_on_hot_days"
|
|
||||||
TYPE_HOURLY = "hourly"
|
TYPE_HOURLY = "hourly"
|
||||||
TYPE_MONTH = "month"
|
TYPE_MONTH = "month"
|
||||||
TYPE_RAINDELAY = "raindelay"
|
TYPE_RAINDELAY = "raindelay"
|
||||||
|
@ -64,22 +57,6 @@ BINARY_SENSOR_DESCRIPTIONS = (
|
||||||
api_category=DATA_RESTRICTIONS_CURRENT,
|
api_category=DATA_RESTRICTIONS_CURRENT,
|
||||||
data_key="freeze",
|
data_key="freeze",
|
||||||
),
|
),
|
||||||
RainMachineBinarySensorDescription(
|
|
||||||
key=TYPE_FREEZE_PROTECTION,
|
|
||||||
name="Freeze protection",
|
|
||||||
icon="mdi:weather-snowy",
|
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
|
||||||
api_category=DATA_RESTRICTIONS_UNIVERSAL,
|
|
||||||
data_key="freezeProtectEnabled",
|
|
||||||
),
|
|
||||||
RainMachineBinarySensorDescription(
|
|
||||||
key=TYPE_HOT_DAYS,
|
|
||||||
name="Extra water on hot days",
|
|
||||||
icon="mdi:thermometer-lines",
|
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
|
||||||
api_category=DATA_RESTRICTIONS_UNIVERSAL,
|
|
||||||
data_key="hotDaysExtraWatering",
|
|
||||||
),
|
|
||||||
RainMachineBinarySensorDescription(
|
RainMachineBinarySensorDescription(
|
||||||
key=TYPE_HOURLY,
|
key=TYPE_HOURLY,
|
||||||
name="Hourly restrictions",
|
name="Hourly restrictions",
|
||||||
|
@ -139,14 +116,14 @@ async def async_setup_entry(
|
||||||
f"{data.controller.mac}_freeze_protection",
|
f"{data.controller.mac}_freeze_protection",
|
||||||
f"switch.{data.controller.name.lower()}_freeze_protect_enabled",
|
f"switch.{data.controller.name.lower()}_freeze_protect_enabled",
|
||||||
breaks_in_ha_version="2022.12.0",
|
breaks_in_ha_version="2022.12.0",
|
||||||
remove_old_entity=False,
|
remove_old_entity=True,
|
||||||
),
|
),
|
||||||
EntityDomainReplacementStrategy(
|
EntityDomainReplacementStrategy(
|
||||||
BINARY_SENSOR_DOMAIN,
|
BINARY_SENSOR_DOMAIN,
|
||||||
f"{data.controller.mac}_extra_water_on_hot_days",
|
f"{data.controller.mac}_extra_water_on_hot_days",
|
||||||
f"switch.{data.controller.name.lower()}_hot_days_extra_watering",
|
f"switch.{data.controller.name.lower()}_hot_days_extra_watering",
|
||||||
breaks_in_ha_version="2022.12.0",
|
breaks_in_ha_version="2022.12.0",
|
||||||
remove_old_entity=False,
|
remove_old_entity=True,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -154,7 +131,6 @@ async def async_setup_entry(
|
||||||
api_category_sensor_map = {
|
api_category_sensor_map = {
|
||||||
DATA_PROVISION_SETTINGS: ProvisionSettingsBinarySensor,
|
DATA_PROVISION_SETTINGS: ProvisionSettingsBinarySensor,
|
||||||
DATA_RESTRICTIONS_CURRENT: CurrentRestrictionsBinarySensor,
|
DATA_RESTRICTIONS_CURRENT: CurrentRestrictionsBinarySensor,
|
||||||
DATA_RESTRICTIONS_UNIVERSAL: UniversalRestrictionsBinarySensor,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async_add_entities(
|
async_add_entities(
|
||||||
|
@ -204,17 +180,3 @@ class ProvisionSettingsBinarySensor(RainMachineEntity, BinarySensorEntity):
|
||||||
self._attr_is_on = self.coordinator.data.get("system", {}).get(
|
self._attr_is_on = self.coordinator.data.get("system", {}).get(
|
||||||
"useFlowSensor"
|
"useFlowSensor"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class UniversalRestrictionsBinarySensor(RainMachineEntity, BinarySensorEntity):
|
|
||||||
"""Define a binary sensor that handles universal restrictions data."""
|
|
||||||
|
|
||||||
entity_description: RainMachineBinarySensorDescription
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def update_from_latest_data(self) -> None:
|
|
||||||
"""Update the state."""
|
|
||||||
if self.entity_description.key == TYPE_FREEZE_PROTECTION:
|
|
||||||
self._attr_is_on = self.coordinator.data.get("freezeProtectEnabled")
|
|
||||||
elif self.entity_description.key == TYPE_HOT_DAYS:
|
|
||||||
self._attr_is_on = self.coordinator.data.get("hotDaysExtraWatering")
|
|
||||||
|
|
|
@ -14,20 +14,14 @@ from homeassistant.components.sensor import (
|
||||||
SensorStateClass,
|
SensorStateClass,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import TEMP_CELSIUS, VOLUME_CUBIC_METERS, VOLUME_LITERS
|
from homeassistant.const import VOLUME_CUBIC_METERS, VOLUME_LITERS
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity import EntityCategory
|
from homeassistant.helpers.entity import EntityCategory
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.util.dt import utc_from_timestamp, utcnow
|
from homeassistant.util.dt import utc_from_timestamp, utcnow
|
||||||
|
|
||||||
from . import RainMachineData, RainMachineEntity
|
from . import RainMachineData, RainMachineEntity
|
||||||
from .const import (
|
from .const import DATA_PROGRAMS, DATA_PROVISION_SETTINGS, DATA_ZONES, DOMAIN
|
||||||
DATA_PROGRAMS,
|
|
||||||
DATA_PROVISION_SETTINGS,
|
|
||||||
DATA_RESTRICTIONS_UNIVERSAL,
|
|
||||||
DATA_ZONES,
|
|
||||||
DOMAIN,
|
|
||||||
)
|
|
||||||
from .model import (
|
from .model import (
|
||||||
RainMachineEntityDescription,
|
RainMachineEntityDescription,
|
||||||
RainMachineEntityDescriptionMixinDataKey,
|
RainMachineEntityDescriptionMixinDataKey,
|
||||||
|
@ -49,7 +43,6 @@ TYPE_FLOW_SENSOR_LEAK_CLICKS = "flow_sensor_leak_clicks"
|
||||||
TYPE_FLOW_SENSOR_LEAK_VOLUME = "flow_sensor_leak_volume"
|
TYPE_FLOW_SENSOR_LEAK_VOLUME = "flow_sensor_leak_volume"
|
||||||
TYPE_FLOW_SENSOR_START_INDEX = "flow_sensor_start_index"
|
TYPE_FLOW_SENSOR_START_INDEX = "flow_sensor_start_index"
|
||||||
TYPE_FLOW_SENSOR_WATERING_CLICKS = "flow_sensor_watering_clicks"
|
TYPE_FLOW_SENSOR_WATERING_CLICKS = "flow_sensor_watering_clicks"
|
||||||
TYPE_FREEZE_TEMP = "freeze_protect_temp"
|
|
||||||
TYPE_LAST_LEAK_DETECTED = "last_leak_detected"
|
TYPE_LAST_LEAK_DETECTED = "last_leak_detected"
|
||||||
TYPE_PROGRAM_RUN_COMPLETION_TIME = "program_run_completion_time"
|
TYPE_PROGRAM_RUN_COMPLETION_TIME = "program_run_completion_time"
|
||||||
TYPE_RAIN_SENSOR_RAIN_START = "rain_sensor_rain_start"
|
TYPE_RAIN_SENSOR_RAIN_START = "rain_sensor_rain_start"
|
||||||
|
@ -140,17 +133,6 @@ SENSOR_DESCRIPTIONS = (
|
||||||
api_category=DATA_PROVISION_SETTINGS,
|
api_category=DATA_PROVISION_SETTINGS,
|
||||||
data_key="flowSensorWateringClicks",
|
data_key="flowSensorWateringClicks",
|
||||||
),
|
),
|
||||||
RainMachineSensorDataDescription(
|
|
||||||
key=TYPE_FREEZE_TEMP,
|
|
||||||
name="Freeze protect temperature",
|
|
||||||
icon="mdi:thermometer",
|
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
|
||||||
native_unit_of_measurement=TEMP_CELSIUS,
|
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
|
||||||
api_category=DATA_RESTRICTIONS_UNIVERSAL,
|
|
||||||
data_key="freezeProtectTemp",
|
|
||||||
),
|
|
||||||
RainMachineSensorDataDescription(
|
RainMachineSensorDataDescription(
|
||||||
key=TYPE_LAST_LEAK_DETECTED,
|
key=TYPE_LAST_LEAK_DETECTED,
|
||||||
name="Last leak detected",
|
name="Last leak detected",
|
||||||
|
@ -191,17 +173,16 @@ async def async_setup_entry(
|
||||||
f"{data.controller.mac}_freeze_protect_temp",
|
f"{data.controller.mac}_freeze_protect_temp",
|
||||||
f"select.{data.controller.name.lower()}_freeze_protect_temperature",
|
f"select.{data.controller.name.lower()}_freeze_protect_temperature",
|
||||||
breaks_in_ha_version="2022.12.0",
|
breaks_in_ha_version="2022.12.0",
|
||||||
remove_old_entity=False,
|
remove_old_entity=True,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
api_category_sensor_map = {
|
api_category_sensor_map = {
|
||||||
DATA_PROVISION_SETTINGS: ProvisionSettingsSensor,
|
DATA_PROVISION_SETTINGS: ProvisionSettingsSensor,
|
||||||
DATA_RESTRICTIONS_UNIVERSAL: UniversalRestrictionsSensor,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sensors = [
|
sensors: list[ProvisionSettingsSensor | TimeRemainingSensor] = [
|
||||||
api_category_sensor_map[description.api_category](entry, data, description)
|
api_category_sensor_map[description.api_category](entry, data, description)
|
||||||
for description in SENSOR_DESCRIPTIONS
|
for description in SENSOR_DESCRIPTIONS
|
||||||
if (
|
if (
|
||||||
|
@ -373,18 +354,6 @@ class ProvisionSettingsSensor(RainMachineEntity, SensorEntity):
|
||||||
self._attr_native_value = new_value
|
self._attr_native_value = new_value
|
||||||
|
|
||||||
|
|
||||||
class UniversalRestrictionsSensor(RainMachineEntity, SensorEntity):
|
|
||||||
"""Define a sensor that handles universal restrictions data."""
|
|
||||||
|
|
||||||
entity_description: RainMachineSensorDataDescription
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def update_from_latest_data(self) -> None:
|
|
||||||
"""Update the state."""
|
|
||||||
if self.entity_description.key == TYPE_FREEZE_TEMP:
|
|
||||||
self._attr_native_value = self.coordinator.data.get("freezeProtectTemp")
|
|
||||||
|
|
||||||
|
|
||||||
class ZoneTimeRemainingSensor(TimeRemainingSensor):
|
class ZoneTimeRemainingSensor(TimeRemainingSensor):
|
||||||
"""Define a sensor that shows the amount of time remaining for a zone."""
|
"""Define a sensor that shows the amount of time remaining for a zone."""
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue