mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 06:37:52 +00:00
Add reuse functions to access circuits, burners and compressors in ViCare integration (#104371)
This commit is contained in:
parent
03caa21a51
commit
48f8cec84b
@ -26,7 +26,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from . import ViCareRequiredKeysMixin
|
from . import ViCareRequiredKeysMixin
|
||||||
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
||||||
from .entity import ViCareEntity
|
from .entity import ViCareEntity
|
||||||
from .utils import is_supported
|
from .utils import get_burners, get_circuits, get_compressors, is_supported
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -159,26 +159,17 @@ async def async_setup_entry(
|
|||||||
if entity is not None:
|
if entity is not None:
|
||||||
entities.append(entity)
|
entities.append(entity)
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, CIRCUIT_SENSORS, get_circuits(api), config_entry
|
||||||
hass, entities, CIRCUIT_SENSORS, api.circuits, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No circuits found")
|
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, BURNER_SENSORS, get_burners(api), config_entry
|
||||||
hass, entities, BURNER_SENSORS, api.burners, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No burners found")
|
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, COMPRESSOR_SENSORS, get_compressors(api), config_entry
|
||||||
hass, entities, COMPRESSOR_SENSORS, api.compressors, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No compressors found")
|
|
||||||
|
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
|
|
||||||
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
||||||
from .entity import ViCareEntity
|
from .entity import ViCareEntity
|
||||||
|
from .utils import get_burners, get_circuits, get_compressors
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -93,15 +94,6 @@ HA_TO_VICARE_PRESET_HEATING = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _get_circuits(vicare_api):
|
|
||||||
"""Return the list of circuits."""
|
|
||||||
try:
|
|
||||||
return vicare_api.circuits
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No circuits found")
|
|
||||||
return []
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
config_entry: ConfigEntry,
|
config_entry: ConfigEntry,
|
||||||
@ -111,7 +103,7 @@ async def async_setup_entry(
|
|||||||
entities = []
|
entities = []
|
||||||
api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
||||||
device_config = hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG]
|
device_config = hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG]
|
||||||
circuits = await hass.async_add_executor_job(_get_circuits, api)
|
circuits = get_circuits(api)
|
||||||
|
|
||||||
for circuit in circuits:
|
for circuit in circuits:
|
||||||
entity = ViCareClimate(
|
entity = ViCareClimate(
|
||||||
@ -213,11 +205,11 @@ class ViCareClimate(ViCareEntity, ClimateEntity):
|
|||||||
self._current_action = False
|
self._current_action = False
|
||||||
# Update the specific device attributes
|
# Update the specific device attributes
|
||||||
with suppress(PyViCareNotSupportedFeatureError):
|
with suppress(PyViCareNotSupportedFeatureError):
|
||||||
for burner in self._api.burners:
|
for burner in get_burners(self._api):
|
||||||
self._current_action = self._current_action or burner.getActive()
|
self._current_action = self._current_action or burner.getActive()
|
||||||
|
|
||||||
with suppress(PyViCareNotSupportedFeatureError):
|
with suppress(PyViCareNotSupportedFeatureError):
|
||||||
for compressor in self._api.compressors:
|
for compressor in get_compressors(self._api):
|
||||||
self._current_action = (
|
self._current_action = (
|
||||||
self._current_action or compressor.getActive()
|
self._current_action or compressor.getActive()
|
||||||
)
|
)
|
||||||
|
@ -45,7 +45,7 @@ from .const import (
|
|||||||
VICARE_UNIT_TO_UNIT_OF_MEASUREMENT,
|
VICARE_UNIT_TO_UNIT_OF_MEASUREMENT,
|
||||||
)
|
)
|
||||||
from .entity import ViCareEntity
|
from .entity import ViCareEntity
|
||||||
from .utils import is_supported
|
from .utils import get_burners, get_circuits, get_compressors, is_supported
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -634,39 +634,33 @@ async def async_setup_entry(
|
|||||||
async_add_entities: AddEntitiesCallback,
|
async_add_entities: AddEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Create the ViCare sensor devices."""
|
"""Create the ViCare sensor devices."""
|
||||||
api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
api: Device = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
||||||
|
device_config: PyViCareDeviceConfig = hass.data[DOMAIN][config_entry.entry_id][
|
||||||
|
VICARE_DEVICE_CONFIG
|
||||||
|
]
|
||||||
|
|
||||||
entities = []
|
entities = []
|
||||||
for description in GLOBAL_SENSORS:
|
for description in GLOBAL_SENSORS:
|
||||||
entity = await hass.async_add_executor_job(
|
entity = await hass.async_add_executor_job(
|
||||||
_build_entity,
|
_build_entity,
|
||||||
api,
|
api,
|
||||||
hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG],
|
device_config,
|
||||||
description,
|
description,
|
||||||
)
|
)
|
||||||
if entity is not None:
|
if entity is not None:
|
||||||
entities.append(entity)
|
entities.append(entity)
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, CIRCUIT_SENSORS, get_circuits(api), config_entry
|
||||||
hass, entities, CIRCUIT_SENSORS, api.circuits, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No circuits found")
|
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, BURNER_SENSORS, get_burners(api), config_entry
|
||||||
hass, entities, BURNER_SENSORS, api.burners, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No burners found")
|
|
||||||
|
|
||||||
try:
|
await _entities_from_descriptions(
|
||||||
await _entities_from_descriptions(
|
hass, entities, COMPRESSOR_SENSORS, get_compressors(api), config_entry
|
||||||
hass, entities, COMPRESSOR_SENSORS, api.compressors, config_entry
|
)
|
||||||
)
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No compressors found")
|
|
||||||
|
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
"""ViCare helpers functions."""
|
"""ViCare helpers functions."""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from PyViCare.PyViCareDevice import Device as PyViCareDevice
|
||||||
|
from PyViCare.PyViCareHeatingDevice import (
|
||||||
|
HeatingDeviceWithComponent as PyViCareHeatingDeviceComponent,
|
||||||
|
)
|
||||||
from PyViCare.PyViCareUtils import PyViCareNotSupportedFeatureError
|
from PyViCare.PyViCareUtils import PyViCareNotSupportedFeatureError
|
||||||
|
|
||||||
from . import ViCareRequiredKeysMixin
|
from . import ViCareRequiredKeysMixin
|
||||||
@ -24,3 +28,30 @@ def is_supported(
|
|||||||
_LOGGER.debug("Attribute Error %s: %s", name, error)
|
_LOGGER.debug("Attribute Error %s: %s", name, error)
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_burners(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
|
||||||
|
"""Return the list of burners."""
|
||||||
|
try:
|
||||||
|
return device.burners
|
||||||
|
except PyViCareNotSupportedFeatureError:
|
||||||
|
_LOGGER.debug("No burners found")
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def get_circuits(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
|
||||||
|
"""Return the list of circuits."""
|
||||||
|
try:
|
||||||
|
return device.circuits
|
||||||
|
except PyViCareNotSupportedFeatureError:
|
||||||
|
_LOGGER.debug("No circuits found")
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def get_compressors(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
|
||||||
|
"""Return the list of compressors."""
|
||||||
|
try:
|
||||||
|
return device.compressors
|
||||||
|
except PyViCareNotSupportedFeatureError:
|
||||||
|
_LOGGER.debug("No compressors found")
|
||||||
|
return []
|
||||||
|
@ -24,6 +24,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
|
|
||||||
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG
|
||||||
from .entity import ViCareEntity
|
from .entity import ViCareEntity
|
||||||
|
from .utils import get_circuits
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -57,15 +58,6 @@ HA_TO_VICARE_HVAC_DHW = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _get_circuits(vicare_api):
|
|
||||||
"""Return the list of circuits."""
|
|
||||||
try:
|
|
||||||
return vicare_api.circuits
|
|
||||||
except PyViCareNotSupportedFeatureError:
|
|
||||||
_LOGGER.info("No circuits found")
|
|
||||||
return []
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
config_entry: ConfigEntry,
|
config_entry: ConfigEntry,
|
||||||
@ -75,7 +67,7 @@ async def async_setup_entry(
|
|||||||
entities = []
|
entities = []
|
||||||
api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API]
|
||||||
device_config = hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG]
|
device_config = hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG]
|
||||||
circuits = await hass.async_add_executor_job(_get_circuits, api)
|
circuits = get_circuits(api)
|
||||||
|
|
||||||
for circuit in circuits:
|
for circuit in circuits:
|
||||||
entity = ViCareWater(
|
entity = ViCareWater(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user