diff --git a/homeassistant/components/blebox/__init__.py b/homeassistant/components/blebox/__init__.py index 77b9618a5e3..89d0d5fb146 100644 --- a/homeassistant/components/blebox/__init__.py +++ b/homeassistant/components/blebox/__init__.py @@ -4,7 +4,6 @@ import logging from blebox_uniapi.box import Box from blebox_uniapi.error import Error -from blebox_uniapi.feature import Feature from blebox_uniapi.session import ApiHost from homeassistant.config_entries import ConfigEntry @@ -17,8 +16,6 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady -from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.entity import Entity from .const import DEFAULT_SETUP_TIMEOUT, DOMAIN, PRODUCT from .helpers import get_maybe_authenticated_session @@ -75,29 +72,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.data[DOMAIN].pop(entry.entry_id) return unload_ok - - -class BleBoxEntity[_FeatureT: Feature](Entity): - """Implements a common class for entities representing a BleBox feature.""" - - def __init__(self, feature: _FeatureT) -> None: - """Initialize a BleBox entity.""" - self._feature = feature - self._attr_name = feature.full_name - self._attr_unique_id = feature.unique_id - product = feature.product - self._attr_device_info = DeviceInfo( - identifiers={(DOMAIN, product.unique_id)}, - manufacturer=product.brand, - model=product.model, - name=product.name, - sw_version=product.firmware_version, - configuration_url=f"http://{product.address}", - ) - - async def async_update(self) -> None: - """Update the entity state.""" - try: - await self._feature.async_update() - except Error as ex: - _LOGGER.error("Updating '%s' failed: %s", self.name, ex) diff --git a/homeassistant/components/blebox/binary_sensor.py b/homeassistant/components/blebox/binary_sensor.py index 7eb6fd1e5a2..7f909fd9a7b 100644 --- a/homeassistant/components/blebox/binary_sensor.py +++ b/homeassistant/components/blebox/binary_sensor.py @@ -12,7 +12,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import DOMAIN, PRODUCT, BleBoxEntity +from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity BINARY_SENSOR_TYPES = ( BinarySensorEntityDescription( diff --git a/homeassistant/components/blebox/button.py b/homeassistant/components/blebox/button.py index 940fe7f8f6f..24b09306de7 100644 --- a/homeassistant/components/blebox/button.py +++ b/homeassistant/components/blebox/button.py @@ -10,8 +10,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity async def async_setup_entry( diff --git a/homeassistant/components/blebox/climate.py b/homeassistant/components/blebox/climate.py index 24f036dcd49..d4834ebbc28 100644 --- a/homeassistant/components/blebox/climate.py +++ b/homeassistant/components/blebox/climate.py @@ -17,8 +17,8 @@ from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity SCAN_INTERVAL = timedelta(seconds=5) diff --git a/homeassistant/components/blebox/cover.py b/homeassistant/components/blebox/cover.py index bb75c88ca2a..c86d7aef056 100644 --- a/homeassistant/components/blebox/cover.py +++ b/homeassistant/components/blebox/cover.py @@ -20,8 +20,8 @@ from homeassistant.const import STATE_CLOSED, STATE_CLOSING, STATE_OPEN, STATE_O from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity BLEBOX_TO_COVER_DEVICE_CLASSES = { "gate": CoverDeviceClass.GATE, diff --git a/homeassistant/components/blebox/entity.py b/homeassistant/components/blebox/entity.py new file mode 100644 index 00000000000..14e87349a62 --- /dev/null +++ b/homeassistant/components/blebox/entity.py @@ -0,0 +1,39 @@ +"""Base entity for the BleBox devices integration.""" + +import logging + +from blebox_uniapi.error import Error +from blebox_uniapi.feature import Feature + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.entity import Entity + +from .const import DOMAIN + +_LOGGER = logging.getLogger(__name__) + + +class BleBoxEntity[_FeatureT: Feature](Entity): + """Implements a common class for entities representing a BleBox feature.""" + + def __init__(self, feature: _FeatureT) -> None: + """Initialize a BleBox entity.""" + self._feature = feature + self._attr_name = feature.full_name + self._attr_unique_id = feature.unique_id + product = feature.product + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, product.unique_id)}, + manufacturer=product.brand, + model=product.model, + name=product.name, + sw_version=product.firmware_version, + configuration_url=f"http://{product.address}", + ) + + async def async_update(self) -> None: + """Update the entity state.""" + try: + await self._feature.async_update() + except Error as ex: + _LOGGER.error("Updating '%s' failed: %s", self.name, ex) diff --git a/homeassistant/components/blebox/light.py b/homeassistant/components/blebox/light.py index 34f9b24b17b..650b8c057de 100644 --- a/homeassistant/components/blebox/light.py +++ b/homeassistant/components/blebox/light.py @@ -25,8 +25,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/blebox/sensor.py b/homeassistant/components/blebox/sensor.py index fa11f6d6680..c60387c97b1 100644 --- a/homeassistant/components/blebox/sensor.py +++ b/homeassistant/components/blebox/sensor.py @@ -27,8 +27,8 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity SENSOR_TYPES = ( SensorEntityDescription( diff --git a/homeassistant/components/blebox/switch.py b/homeassistant/components/blebox/switch.py index a68b9f01cf2..93c8df0030c 100644 --- a/homeassistant/components/blebox/switch.py +++ b/homeassistant/components/blebox/switch.py @@ -11,8 +11,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BleBoxEntity from .const import DOMAIN, PRODUCT +from .entity import BleBoxEntity SCAN_INTERVAL = timedelta(seconds=5)