From 5ae45e398eb7e8a963b4d5824f40d76c915e0afe Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Sat, 7 Oct 2023 11:39:36 +0200 Subject: [PATCH] Move wallbox base entity to its own file (#101576) --- homeassistant/components/wallbox/__init__.py | 36 +----------------- homeassistant/components/wallbox/entity.py | 40 ++++++++++++++++++++ homeassistant/components/wallbox/lock.py | 3 +- homeassistant/components/wallbox/number.py | 3 +- homeassistant/components/wallbox/sensor.py | 3 +- homeassistant/components/wallbox/switch.py | 3 +- 6 files changed, 49 insertions(+), 39 deletions(-) create mode 100644 homeassistant/components/wallbox/entity.py diff --git a/homeassistant/components/wallbox/__init__.py b/homeassistant/components/wallbox/__init__.py index 4db217d0a54..dde7e1a5181 100644 --- a/homeassistant/components/wallbox/__init__.py +++ b/homeassistant/components/wallbox/__init__.py @@ -13,24 +13,14 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryAuthFailed, HomeAssistantError -from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.update_coordinator import ( - CoordinatorEntity, - DataUpdateCoordinator, - UpdateFailed, -) +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .const import ( CHARGER_CURRENCY_KEY, - CHARGER_CURRENT_VERSION_KEY, CHARGER_DATA_KEY, CHARGER_ENERGY_PRICE_KEY, CHARGER_LOCKED_UNLOCKED_KEY, CHARGER_MAX_CHARGING_CURRENT_KEY, - CHARGER_NAME_KEY, - CHARGER_PART_NUMBER_KEY, - CHARGER_SERIAL_NUMBER_KEY, - CHARGER_SOFTWARE_KEY, CHARGER_STATUS_DESCRIPTION_KEY, CHARGER_STATUS_ID_KEY, CODE_KEY, @@ -241,27 +231,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: class InvalidAuth(HomeAssistantError): """Error to indicate there is invalid auth.""" - - -class WallboxEntity(CoordinatorEntity[WallboxCoordinator]): - """Defines a base Wallbox entity.""" - - _attr_has_entity_name = True - - @property - def device_info(self) -> DeviceInfo: - """Return device information about this Wallbox device.""" - return DeviceInfo( - identifiers={ - ( - DOMAIN, - self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY], - ) - }, - name=f"Wallbox {self.coordinator.data[CHARGER_NAME_KEY]}", - manufacturer="Wallbox", - model=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_PART_NUMBER_KEY], - sw_version=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SOFTWARE_KEY][ - CHARGER_CURRENT_VERSION_KEY - ], - ) diff --git a/homeassistant/components/wallbox/entity.py b/homeassistant/components/wallbox/entity.py new file mode 100644 index 00000000000..c9d12643768 --- /dev/null +++ b/homeassistant/components/wallbox/entity.py @@ -0,0 +1,40 @@ +"""Base entity for the wallbox integration.""" +from __future__ import annotations + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from . import WallboxCoordinator +from .const import ( + CHARGER_CURRENT_VERSION_KEY, + CHARGER_DATA_KEY, + CHARGER_NAME_KEY, + CHARGER_PART_NUMBER_KEY, + CHARGER_SERIAL_NUMBER_KEY, + CHARGER_SOFTWARE_KEY, + DOMAIN, +) + + +class WallboxEntity(CoordinatorEntity[WallboxCoordinator]): + """Defines a base Wallbox entity.""" + + _attr_has_entity_name = True + + @property + def device_info(self) -> DeviceInfo: + """Return device information about this Wallbox device.""" + return DeviceInfo( + identifiers={ + ( + DOMAIN, + self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY], + ) + }, + name=f"Wallbox {self.coordinator.data[CHARGER_NAME_KEY]}", + manufacturer="Wallbox", + model=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_PART_NUMBER_KEY], + sw_version=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SOFTWARE_KEY][ + CHARGER_CURRENT_VERSION_KEY + ], + ) diff --git a/homeassistant/components/wallbox/lock.py b/homeassistant/components/wallbox/lock.py index 04a587ae34d..1a2364880f1 100644 --- a/homeassistant/components/wallbox/lock.py +++ b/homeassistant/components/wallbox/lock.py @@ -9,13 +9,14 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import InvalidAuth, WallboxCoordinator, WallboxEntity +from . import InvalidAuth, WallboxCoordinator from .const import ( CHARGER_DATA_KEY, CHARGER_LOCKED_UNLOCKED_KEY, CHARGER_SERIAL_NUMBER_KEY, DOMAIN, ) +from .entity import WallboxEntity LOCK_TYPES: dict[str, LockEntityDescription] = { CHARGER_LOCKED_UNLOCKED_KEY: LockEntityDescription( diff --git a/homeassistant/components/wallbox/number.py b/homeassistant/components/wallbox/number.py index b8ce331146d..cea7bd5ce81 100644 --- a/homeassistant/components/wallbox/number.py +++ b/homeassistant/components/wallbox/number.py @@ -13,7 +13,7 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import InvalidAuth, WallboxCoordinator, WallboxEntity +from . import InvalidAuth, WallboxCoordinator from .const import ( BIDIRECTIONAL_MODEL_PREFIXES, CHARGER_DATA_KEY, @@ -23,6 +23,7 @@ from .const import ( CHARGER_SERIAL_NUMBER_KEY, DOMAIN, ) +from .entity import WallboxEntity @dataclass diff --git a/homeassistant/components/wallbox/sensor.py b/homeassistant/components/wallbox/sensor.py index 56d9e0be735..7a08bdd7c02 100644 --- a/homeassistant/components/wallbox/sensor.py +++ b/homeassistant/components/wallbox/sensor.py @@ -23,7 +23,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from . import WallboxCoordinator, WallboxEntity +from . import WallboxCoordinator from .const import ( CHARGER_ADDED_DISCHARGED_ENERGY_KEY, CHARGER_ADDED_ENERGY_KEY, @@ -43,6 +43,7 @@ from .const import ( CHARGER_STATUS_DESCRIPTION_KEY, DOMAIN, ) +from .entity import WallboxEntity CHARGER_STATION = "station" UPDATE_INTERVAL = 30 diff --git a/homeassistant/components/wallbox/switch.py b/homeassistant/components/wallbox/switch.py index b101ffe1c09..f59e64a516f 100644 --- a/homeassistant/components/wallbox/switch.py +++ b/homeassistant/components/wallbox/switch.py @@ -8,7 +8,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import WallboxCoordinator, WallboxEntity +from . import WallboxCoordinator from .const import ( CHARGER_DATA_KEY, CHARGER_PAUSE_RESUME_KEY, @@ -17,6 +17,7 @@ from .const import ( DOMAIN, ChargerStatus, ) +from .entity import WallboxEntity SWITCH_TYPES: dict[str, SwitchEntityDescription] = { CHARGER_PAUSE_RESUME_KEY: SwitchEntityDescription(