mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Remove deprecated entities from OpenTherm Gateway (#99712)
This commit is contained in:
parent
533350b94a
commit
b0e46f425f
@ -1,12 +1,10 @@
|
||||
"""Support for OpenTherm Gateway binary sensors."""
|
||||
import logging
|
||||
from pprint import pformat
|
||||
|
||||
from homeassistant.components.binary_sensor import ENTITY_ID_FORMAT, BinarySensorEntity
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_ID
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import async_generate_entity_id
|
||||
@ -17,7 +15,6 @@ from .const import (
|
||||
BINARY_SENSOR_INFO,
|
||||
DATA_GATEWAYS,
|
||||
DATA_OPENTHERM_GW,
|
||||
DEPRECATED_BINARY_SENSOR_SOURCE_LOOKUP,
|
||||
TRANSLATE_SOURCE,
|
||||
)
|
||||
|
||||
@ -31,9 +28,7 @@ async def async_setup_entry(
|
||||
) -> None:
|
||||
"""Set up the OpenTherm Gateway binary sensors."""
|
||||
sensors = []
|
||||
deprecated_sensors = []
|
||||
gw_dev = hass.data[DATA_OPENTHERM_GW][DATA_GATEWAYS][config_entry.data[CONF_ID]]
|
||||
ent_reg = er.async_get(hass)
|
||||
for var, info in BINARY_SENSOR_INFO.items():
|
||||
device_class = info[0]
|
||||
friendly_name_format = info[1]
|
||||
@ -50,36 +45,6 @@ async def async_setup_entry(
|
||||
)
|
||||
)
|
||||
|
||||
old_style_entity_id = async_generate_entity_id(
|
||||
ENTITY_ID_FORMAT, f"{var}_{gw_dev.gw_id}", hass=gw_dev.hass
|
||||
)
|
||||
old_ent = ent_reg.async_get(old_style_entity_id)
|
||||
if old_ent and old_ent.config_entry_id == config_entry.entry_id:
|
||||
if old_ent.disabled:
|
||||
ent_reg.async_remove(old_style_entity_id)
|
||||
else:
|
||||
deprecated_sensors.append(
|
||||
DeprecatedOpenThermBinarySensor(
|
||||
gw_dev,
|
||||
var,
|
||||
device_class,
|
||||
friendly_name_format,
|
||||
)
|
||||
)
|
||||
|
||||
sensors.extend(deprecated_sensors)
|
||||
|
||||
if deprecated_sensors:
|
||||
_LOGGER.warning(
|
||||
(
|
||||
"The following binary_sensor entities are deprecated and may "
|
||||
"no longer behave as expected. They will be removed in a "
|
||||
"future version. You can force removal of these entities by "
|
||||
"disabling them and restarting Home Assistant.\n%s"
|
||||
),
|
||||
pformat([s.entity_id for s in deprecated_sensors]),
|
||||
)
|
||||
|
||||
async_add_entities(sensors)
|
||||
|
||||
|
||||
@ -166,26 +131,3 @@ class OpenThermBinarySensor(BinarySensorEntity):
|
||||
def device_class(self):
|
||||
"""Return the class of this device."""
|
||||
return self._device_class
|
||||
|
||||
|
||||
class DeprecatedOpenThermBinarySensor(OpenThermBinarySensor):
|
||||
"""Represent a deprecated OpenTherm Gateway Binary Sensor."""
|
||||
|
||||
# pylint: disable=super-init-not-called
|
||||
def __init__(self, gw_dev, var, device_class, friendly_name_format):
|
||||
"""Initialize the binary sensor."""
|
||||
self.entity_id = async_generate_entity_id(
|
||||
ENTITY_ID_FORMAT, f"{var}_{gw_dev.gw_id}", hass=gw_dev.hass
|
||||
)
|
||||
self._gateway = gw_dev
|
||||
self._var = var
|
||||
self._source = DEPRECATED_BINARY_SENSOR_SOURCE_LOOKUP[var]
|
||||
self._state = None
|
||||
self._device_class = device_class
|
||||
self._friendly_name = friendly_name_format.format(gw_dev.name)
|
||||
self._unsub_updates = None
|
||||
|
||||
@property
|
||||
def unique_id(self):
|
||||
"""Return a unique ID."""
|
||||
return f"{self._gateway.gw_id}-{self._var}"
|
||||
|
@ -535,106 +535,3 @@ SENSOR_INFO: dict[str, list] = {
|
||||
[gw_vars.OTGW],
|
||||
],
|
||||
}
|
||||
|
||||
DEPRECATED_BINARY_SENSOR_SOURCE_LOOKUP = {
|
||||
gw_vars.DATA_MASTER_CH_ENABLED: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_MASTER_DHW_ENABLED: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_MASTER_OTC_ENABLED: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_MASTER_CH2_ENABLED: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_SLAVE_FAULT_IND: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CH_ACTIVE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DHW_ACTIVE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_FLAME_ON: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_COOLING_ACTIVE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CH2_ACTIVE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DIAG_IND: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DHW_PRESENT: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CONTROL_TYPE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_COOLING_SUPPORTED: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DHW_CONFIG: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_MASTER_LOW_OFF_PUMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CH2_PRESENT: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_SERVICE_REQ: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_REMOTE_RESET: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_LOW_WATER_PRESS: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_GAS_FAULT: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_AIR_PRESS_FAULT: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_WATER_OVERTEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_REMOTE_TRANSFER_DHW: gw_vars.BOILER,
|
||||
gw_vars.DATA_REMOTE_TRANSFER_MAX_CH: gw_vars.BOILER,
|
||||
gw_vars.DATA_REMOTE_RW_DHW: gw_vars.BOILER,
|
||||
gw_vars.DATA_REMOTE_RW_MAX_CH: gw_vars.BOILER,
|
||||
gw_vars.DATA_ROVRD_MAN_PRIO: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_ROVRD_AUTO_PRIO: gw_vars.THERMOSTAT,
|
||||
gw_vars.OTGW_GPIO_A_STATE: gw_vars.OTGW,
|
||||
gw_vars.OTGW_GPIO_B_STATE: gw_vars.OTGW,
|
||||
gw_vars.OTGW_IGNORE_TRANSITIONS: gw_vars.OTGW,
|
||||
gw_vars.OTGW_OVRD_HB: gw_vars.OTGW,
|
||||
}
|
||||
|
||||
DEPRECATED_SENSOR_SOURCE_LOOKUP = {
|
||||
gw_vars.DATA_CONTROL_SETPOINT: gw_vars.BOILER,
|
||||
gw_vars.DATA_MASTER_MEMBERID: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_SLAVE_MEMBERID: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_OEM_FAULT: gw_vars.BOILER,
|
||||
gw_vars.DATA_COOLING_CONTROL: gw_vars.BOILER,
|
||||
gw_vars.DATA_CONTROL_SETPOINT_2: gw_vars.BOILER,
|
||||
gw_vars.DATA_ROOM_SETPOINT_OVRD: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_SLAVE_MAX_RELATIVE_MOD: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_MAX_CAPACITY: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_MIN_MOD_LEVEL: gw_vars.BOILER,
|
||||
gw_vars.DATA_ROOM_SETPOINT: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_REL_MOD_LEVEL: gw_vars.BOILER,
|
||||
gw_vars.DATA_CH_WATER_PRESS: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_FLOW_RATE: gw_vars.BOILER,
|
||||
gw_vars.DATA_ROOM_SETPOINT_2: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_ROOM_TEMP: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_CH_WATER_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_OUTSIDE_TEMP: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_RETURN_WATER_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SOLAR_STORAGE_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SOLAR_COLL_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_CH_WATER_TEMP_2: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_TEMP_2: gw_vars.BOILER,
|
||||
gw_vars.DATA_EXHAUST_TEMP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DHW_MAX_SETP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_DHW_MIN_SETP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CH_MAX_SETP: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_CH_MIN_SETP: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_SETPOINT: gw_vars.BOILER,
|
||||
gw_vars.DATA_MAX_CH_SETPOINT: gw_vars.BOILER,
|
||||
gw_vars.DATA_OEM_DIAG: gw_vars.BOILER,
|
||||
gw_vars.DATA_TOTAL_BURNER_STARTS: gw_vars.BOILER,
|
||||
gw_vars.DATA_CH_PUMP_STARTS: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_PUMP_STARTS: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_BURNER_STARTS: gw_vars.BOILER,
|
||||
gw_vars.DATA_TOTAL_BURNER_HOURS: gw_vars.BOILER,
|
||||
gw_vars.DATA_CH_PUMP_HOURS: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_PUMP_HOURS: gw_vars.BOILER,
|
||||
gw_vars.DATA_DHW_BURNER_HOURS: gw_vars.BOILER,
|
||||
gw_vars.DATA_MASTER_OT_VERSION: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_SLAVE_OT_VERSION: gw_vars.BOILER,
|
||||
gw_vars.DATA_MASTER_PRODUCT_TYPE: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_MASTER_PRODUCT_VERSION: gw_vars.THERMOSTAT,
|
||||
gw_vars.DATA_SLAVE_PRODUCT_TYPE: gw_vars.BOILER,
|
||||
gw_vars.DATA_SLAVE_PRODUCT_VERSION: gw_vars.BOILER,
|
||||
gw_vars.OTGW_MODE: gw_vars.OTGW,
|
||||
gw_vars.OTGW_DHW_OVRD: gw_vars.OTGW,
|
||||
gw_vars.OTGW_ABOUT: gw_vars.OTGW,
|
||||
gw_vars.OTGW_BUILD: gw_vars.OTGW,
|
||||
gw_vars.OTGW_CLOCKMHZ: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_A: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_B: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_C: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_D: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_E: gw_vars.OTGW,
|
||||
gw_vars.OTGW_LED_F: gw_vars.OTGW,
|
||||
gw_vars.OTGW_GPIO_A: gw_vars.OTGW,
|
||||
gw_vars.OTGW_GPIO_B: gw_vars.OTGW,
|
||||
gw_vars.OTGW_SB_TEMP: gw_vars.OTGW,
|
||||
gw_vars.OTGW_SETP_OVRD_MODE: gw_vars.OTGW,
|
||||
gw_vars.OTGW_SMART_PWR: gw_vars.OTGW,
|
||||
gw_vars.OTGW_THRM_DETECT: gw_vars.OTGW,
|
||||
gw_vars.OTGW_VREF: gw_vars.OTGW,
|
||||
}
|
||||
|
@ -1,25 +1,17 @@
|
||||
"""Support for OpenTherm Gateway sensors."""
|
||||
import logging
|
||||
from pprint import pformat
|
||||
|
||||
from homeassistant.components.sensor import ENTITY_ID_FORMAT, SensorEntity
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_ID
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import async_generate_entity_id
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import DOMAIN
|
||||
from .const import (
|
||||
DATA_GATEWAYS,
|
||||
DATA_OPENTHERM_GW,
|
||||
DEPRECATED_SENSOR_SOURCE_LOOKUP,
|
||||
SENSOR_INFO,
|
||||
TRANSLATE_SOURCE,
|
||||
)
|
||||
from .const import DATA_GATEWAYS, DATA_OPENTHERM_GW, SENSOR_INFO, TRANSLATE_SOURCE
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -31,9 +23,7 @@ async def async_setup_entry(
|
||||
) -> None:
|
||||
"""Set up the OpenTherm Gateway sensors."""
|
||||
sensors = []
|
||||
deprecated_sensors = []
|
||||
gw_dev = hass.data[DATA_OPENTHERM_GW][DATA_GATEWAYS][config_entry.data[CONF_ID]]
|
||||
ent_reg = er.async_get(hass)
|
||||
for var, info in SENSOR_INFO.items():
|
||||
device_class = info[0]
|
||||
unit = info[1]
|
||||
@ -52,37 +42,6 @@ async def async_setup_entry(
|
||||
)
|
||||
)
|
||||
|
||||
old_style_entity_id = async_generate_entity_id(
|
||||
ENTITY_ID_FORMAT, f"{var}_{gw_dev.gw_id}", hass=gw_dev.hass
|
||||
)
|
||||
old_ent = ent_reg.async_get(old_style_entity_id)
|
||||
if old_ent and old_ent.config_entry_id == config_entry.entry_id:
|
||||
if old_ent.disabled:
|
||||
ent_reg.async_remove(old_style_entity_id)
|
||||
else:
|
||||
deprecated_sensors.append(
|
||||
DeprecatedOpenThermSensor(
|
||||
gw_dev,
|
||||
var,
|
||||
device_class,
|
||||
unit,
|
||||
friendly_name_format,
|
||||
)
|
||||
)
|
||||
|
||||
sensors.extend(deprecated_sensors)
|
||||
|
||||
if deprecated_sensors:
|
||||
_LOGGER.warning(
|
||||
(
|
||||
"The following sensor entities are deprecated and may no "
|
||||
"longer behave as expected. They will be removed in a future "
|
||||
"version. You can force removal of these entities by disabling "
|
||||
"them and restarting Home Assistant.\n%s"
|
||||
),
|
||||
pformat([s.entity_id for s in deprecated_sensors]),
|
||||
)
|
||||
|
||||
async_add_entities(sensors)
|
||||
|
||||
|
||||
@ -175,27 +134,3 @@ class OpenThermSensor(SensorEntity):
|
||||
def native_unit_of_measurement(self):
|
||||
"""Return the unit of measurement."""
|
||||
return self._unit
|
||||
|
||||
|
||||
class DeprecatedOpenThermSensor(OpenThermSensor):
|
||||
"""Represent a deprecated OpenTherm Gateway Sensor."""
|
||||
|
||||
# pylint: disable=super-init-not-called
|
||||
def __init__(self, gw_dev, var, device_class, unit, friendly_name_format):
|
||||
"""Initialize the OpenTherm Gateway sensor."""
|
||||
self.entity_id = async_generate_entity_id(
|
||||
ENTITY_ID_FORMAT, f"{var}_{gw_dev.gw_id}", hass=gw_dev.hass
|
||||
)
|
||||
self._gateway = gw_dev
|
||||
self._var = var
|
||||
self._source = DEPRECATED_SENSOR_SOURCE_LOOKUP[var]
|
||||
self._value = None
|
||||
self._device_class = device_class
|
||||
self._unit = unit
|
||||
self._friendly_name = friendly_name_format.format(gw_dev.name)
|
||||
self._unsub_updates = None
|
||||
|
||||
@property
|
||||
def unique_id(self):
|
||||
"""Return a unique ID."""
|
||||
return f"{self._gateway.gw_id}-{self._var}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user