From 8d6880ab8593db035ef8dac2cede51e894e96b98 Mon Sep 17 00:00:00 2001 From: Hans Oischinger Date: Mon, 24 Jan 2022 11:18:54 +0100 Subject: [PATCH] Support systems w/o circuits (#64779) --- homeassistant/components/vicare/__init__.py | 4 --- .../components/vicare/binary_sensor.py | 28 +++++------------ homeassistant/components/vicare/climate.py | 30 ++++++++++--------- homeassistant/components/vicare/const.py | 1 - homeassistant/components/vicare/sensor.py | 21 ++++--------- .../components/vicare/water_heater.py | 30 ++++++++++--------- 6 files changed, 45 insertions(+), 69 deletions(-) diff --git a/homeassistant/components/vicare/__init__.py b/homeassistant/components/vicare/__init__.py index 781b503e5ee..4af36835ed2 100644 --- a/homeassistant/components/vicare/__init__.py +++ b/homeassistant/components/vicare/__init__.py @@ -25,7 +25,6 @@ from .const import ( HEATING_TYPE_TO_CREATOR_METHOD, PLATFORMS, VICARE_API, - VICARE_CIRCUITS, VICARE_DEVICE_CONFIG, HeatingType, ) @@ -127,9 +126,6 @@ def setup_vicare_api(hass, entry): device, HEATING_TYPE_TO_CREATOR_METHOD[HeatingType(entry.data[CONF_HEATING_TYPE])], )() - hass.data[DOMAIN][entry.entry_id][VICARE_CIRCUITS] = hass.data[DOMAIN][ - entry.entry_id - ][VICARE_API].circuits async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: diff --git a/homeassistant/components/vicare/binary_sensor.py b/homeassistant/components/vicare/binary_sensor.py index 133c7307d61..543b5116760 100644 --- a/homeassistant/components/vicare/binary_sensor.py +++ b/homeassistant/components/vicare/binary_sensor.py @@ -22,13 +22,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ViCareRequiredKeysMixin -from .const import ( - DOMAIN, - VICARE_API, - VICARE_CIRCUITS, - VICARE_DEVICE_CONFIG, - VICARE_NAME, -) +from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG, VICARE_NAME _LOGGER = logging.getLogger(__name__) @@ -163,20 +157,12 @@ async def async_setup_entry( if entity is not None: entities.append(entity) - for description in CIRCUIT_SENSORS: - for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]: - suffix = "" - if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]) > 1: - suffix = f" {circuit.id}" - entity = await hass.async_add_executor_job( - _build_entity, - f"{name} {description.name}{suffix}", - circuit, - hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], - description, - ) - if entity is not None: - entities.append(entity) + try: + await _entities_from_descriptions( + hass, name, entities, CIRCUIT_SENSORS, api.circuits, config_entry + ) + except PyViCareNotSupportedFeatureError: + _LOGGER.info("No circuits found") try: await _entities_from_descriptions( diff --git a/homeassistant/components/vicare/climate.py b/homeassistant/components/vicare/climate.py index 74e4c5c2760..a528fd63614 100644 --- a/homeassistant/components/vicare/climate.py +++ b/homeassistant/components/vicare/climate.py @@ -33,7 +33,6 @@ from .const import ( CONF_HEATING_TYPE, DOMAIN, VICARE_API, - VICARE_CIRCUITS, VICARE_DEVICE_CONFIG, VICARE_NAME, ) @@ -112,19 +111,22 @@ async def async_setup_entry( entities = [] - for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]: - suffix = "" - if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]) > 1: - suffix = f" {circuit.id}" - entity = _build_entity( - f"{name} Heating{suffix}", - hass.data[DOMAIN][config_entry.entry_id][VICARE_API], - hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], - circuit, - config_entry.data[CONF_HEATING_TYPE], - ) - if entity is not None: - entities.append(entity) + try: + for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_API].circuits: + suffix = "" + if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_API].circuits) > 1: + suffix = f" {circuit.id}" + entity = _build_entity( + f"{name} Heating{suffix}", + hass.data[DOMAIN][config_entry.entry_id][VICARE_API], + hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], + circuit, + config_entry.data[CONF_HEATING_TYPE], + ) + if entity is not None: + entities.append(entity) + except PyViCareNotSupportedFeatureError: + _LOGGER.info("No circuits found") platform = entity_platform.async_get_current_platform() diff --git a/homeassistant/components/vicare/const.py b/homeassistant/components/vicare/const.py index 2325f246bc5..ea89f635072 100644 --- a/homeassistant/components/vicare/const.py +++ b/homeassistant/components/vicare/const.py @@ -16,7 +16,6 @@ PLATFORMS = [ VICARE_DEVICE_CONFIG = "device_conf" VICARE_API = "api" -VICARE_CIRCUITS = "circuits" VICARE_NAME = "ViCare" CONF_CIRCUIT = "circuit" diff --git a/homeassistant/components/vicare/sensor.py b/homeassistant/components/vicare/sensor.py index 322de57eb97..42594ec202e 100644 --- a/homeassistant/components/vicare/sensor.py +++ b/homeassistant/components/vicare/sensor.py @@ -35,7 +35,6 @@ from . import ViCareRequiredKeysMixin from .const import ( DOMAIN, VICARE_API, - VICARE_CIRCUITS, VICARE_DEVICE_CONFIG, VICARE_NAME, VICARE_UNIT_TO_DEVICE_CLASS, @@ -380,20 +379,12 @@ async def async_setup_entry( if entity is not None: entities.append(entity) - for description in CIRCUIT_SENSORS: - for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]: - suffix = "" - if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]) > 1: - suffix = f" {circuit.id}" - entity = await hass.async_add_executor_job( - _build_entity, - f"{name} {description.name}{suffix}", - circuit, - hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], - description, - ) - if entity is not None: - entities.append(entity) + try: + await _entities_from_descriptions( + hass, name, entities, CIRCUIT_SENSORS, api.circuits, config_entry + ) + except PyViCareNotSupportedFeatureError: + _LOGGER.info("No circuits found") try: await _entities_from_descriptions( diff --git a/homeassistant/components/vicare/water_heater.py b/homeassistant/components/vicare/water_heater.py index 7b77897e55a..5912287a953 100644 --- a/homeassistant/components/vicare/water_heater.py +++ b/homeassistant/components/vicare/water_heater.py @@ -22,7 +22,6 @@ from .const import ( CONF_HEATING_TYPE, DOMAIN, VICARE_API, - VICARE_CIRCUITS, VICARE_DEVICE_CONFIG, VICARE_NAME, ) @@ -78,19 +77,22 @@ async def async_setup_entry( name = VICARE_NAME entities = [] - for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]: - suffix = "" - if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_CIRCUITS]) > 1: - suffix = f" {circuit.id}" - entity = _build_entity( - f"{name} Water{suffix}", - hass.data[DOMAIN][config_entry.entry_id][VICARE_API], - circuit, - hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], - config_entry.data[CONF_HEATING_TYPE], - ) - if entity is not None: - entities.append(entity) + try: + for circuit in hass.data[DOMAIN][config_entry.entry_id][VICARE_API].circuits: + suffix = "" + if len(hass.data[DOMAIN][config_entry.entry_id][VICARE_API].circuits) > 1: + suffix = f" {circuit.id}" + entity = _build_entity( + f"{name} Water{suffix}", + hass.data[DOMAIN][config_entry.entry_id][VICARE_API], + circuit, + hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], + config_entry.data[CONF_HEATING_TYPE], + ) + if entity is not None: + entities.append(entity) + except PyViCareNotSupportedFeatureError: + _LOGGER.info("No circuits found") async_add_entities(entities)