From f5697ad5d2e16c02bc2cc2fd148cb25bb7db3714 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:11:58 +0200 Subject: [PATCH] Move vallox base entity to separate module (#126541) --- homeassistant/components/vallox/__init__.py | 23 -------------- .../components/vallox/binary_sensor.py | 2 +- homeassistant/components/vallox/date.py | 2 +- homeassistant/components/vallox/entity.py | 31 +++++++++++++++++++ homeassistant/components/vallox/fan.py | 2 +- homeassistant/components/vallox/number.py | 2 +- homeassistant/components/vallox/sensor.py | 2 +- homeassistant/components/vallox/switch.py | 2 +- 8 files changed, 37 insertions(+), 29 deletions(-) create mode 100644 homeassistant/components/vallox/entity.py diff --git a/homeassistant/components/vallox/__init__.py b/homeassistant/components/vallox/__init__.py index 09080f1a5f6..ceb34bc6ff9 100644 --- a/homeassistant/components/vallox/__init__.py +++ b/homeassistant/components/vallox/__init__.py @@ -13,8 +13,6 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_NAME, Platform from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.helpers import config_validation as cv -from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( DEFAULT_FAN_SPEED_AWAY, @@ -234,24 +232,3 @@ class ValloxServiceHandler: # be observed by all parties involved. if result: await self._coordinator.async_request_refresh() - - -class ValloxEntity(CoordinatorEntity[ValloxDataUpdateCoordinator]): - """Representation of a Vallox entity.""" - - _attr_has_entity_name = True - - def __init__(self, name: str, coordinator: ValloxDataUpdateCoordinator) -> None: - """Initialize a Vallox entity.""" - super().__init__(coordinator) - - self._device_uuid = self.coordinator.data.uuid - assert self.coordinator.config_entry is not None - self._attr_device_info = DeviceInfo( - identifiers={(DOMAIN, str(self._device_uuid))}, - manufacturer=DEFAULT_NAME, - model=self.coordinator.data.model, - name=name, - sw_version=self.coordinator.data.sw_version, - configuration_url=f"http://{self.coordinator.config_entry.data[CONF_HOST]}", - ) diff --git a/homeassistant/components/vallox/binary_sensor.py b/homeassistant/components/vallox/binary_sensor.py index 20593fa4402..4a0efc7b101 100644 --- a/homeassistant/components/vallox/binary_sensor.py +++ b/homeassistant/components/vallox/binary_sensor.py @@ -13,9 +13,9 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import ValloxEntity from .const import DOMAIN from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ValloxBinarySensorEntity(ValloxEntity, BinarySensorEntity): diff --git a/homeassistant/components/vallox/date.py b/homeassistant/components/vallox/date.py index 0236117fd0f..33c3ebb253c 100644 --- a/homeassistant/components/vallox/date.py +++ b/homeassistant/components/vallox/date.py @@ -12,9 +12,9 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import ValloxEntity from .const import DOMAIN from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ValloxFilterChangeDateEntity(ValloxEntity, DateEntity): diff --git a/homeassistant/components/vallox/entity.py b/homeassistant/components/vallox/entity.py new file mode 100644 index 00000000000..b0657c561a8 --- /dev/null +++ b/homeassistant/components/vallox/entity.py @@ -0,0 +1,31 @@ +"""Support for Vallox ventilation units.""" + +from __future__ import annotations + +from homeassistant.const import CONF_HOST +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DEFAULT_NAME, DOMAIN +from .coordinator import ValloxDataUpdateCoordinator + + +class ValloxEntity(CoordinatorEntity[ValloxDataUpdateCoordinator]): + """Representation of a Vallox entity.""" + + _attr_has_entity_name = True + + def __init__(self, name: str, coordinator: ValloxDataUpdateCoordinator) -> None: + """Initialize a Vallox entity.""" + super().__init__(coordinator) + + self._device_uuid = self.coordinator.data.uuid + assert self.coordinator.config_entry is not None + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, str(self._device_uuid))}, + manufacturer=DEFAULT_NAME, + model=self.coordinator.data.model, + name=name, + sw_version=self.coordinator.data.sw_version, + configuration_url=f"http://{self.coordinator.config_entry.data[CONF_HOST]}", + ) diff --git a/homeassistant/components/vallox/fan.py b/homeassistant/components/vallox/fan.py index c9226110332..5fac46177cb 100644 --- a/homeassistant/components/vallox/fan.py +++ b/homeassistant/components/vallox/fan.py @@ -14,7 +14,6 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from . import ValloxEntity from .const import ( DOMAIN, METRIC_KEY_MODE, @@ -27,6 +26,7 @@ from .const import ( VALLOX_PROFILE_TO_PRESET_MODE, ) from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ExtraStateAttributeDetails(NamedTuple): diff --git a/homeassistant/components/vallox/number.py b/homeassistant/components/vallox/number.py index 93190da1f16..96bc07b5a93 100644 --- a/homeassistant/components/vallox/number.py +++ b/homeassistant/components/vallox/number.py @@ -16,9 +16,9 @@ from homeassistant.const import EntityCategory, UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import ValloxEntity from .const import DOMAIN from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ValloxNumberEntity(ValloxEntity, NumberEntity): diff --git a/homeassistant/components/vallox/sensor.py b/homeassistant/components/vallox/sensor.py index fb9977cefaf..7165947861a 100644 --- a/homeassistant/components/vallox/sensor.py +++ b/homeassistant/components/vallox/sensor.py @@ -25,7 +25,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.util import dt as dt_util -from . import ValloxEntity from .const import ( DOMAIN, METRIC_KEY_MODE, @@ -34,6 +33,7 @@ from .const import ( VALLOX_PROFILE_TO_PRESET_MODE, ) from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ValloxSensorEntity(ValloxEntity, SensorEntity): diff --git a/homeassistant/components/vallox/switch.py b/homeassistant/components/vallox/switch.py index d70de89606d..20b270f8f18 100644 --- a/homeassistant/components/vallox/switch.py +++ b/homeassistant/components/vallox/switch.py @@ -13,9 +13,9 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import ValloxEntity from .const import DOMAIN from .coordinator import ValloxDataUpdateCoordinator +from .entity import ValloxEntity class ValloxSwitchEntity(ValloxEntity, SwitchEntity):