From 0eb1101de84b6042380a0d2220da182493b2d206 Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Wed, 5 Oct 2022 17:03:23 +0200 Subject: [PATCH] Velbus split of entity in its own file (#79653) * Velbus split of entity in its own file * Update coveragerc --- .coveragerc | 1 + homeassistant/components/velbus/__init__.py | 31 ---------------- .../components/velbus/binary_sensor.py | 2 +- homeassistant/components/velbus/button.py | 2 +- homeassistant/components/velbus/climate.py | 2 +- homeassistant/components/velbus/cover.py | 2 +- homeassistant/components/velbus/entity.py | 37 +++++++++++++++++++ homeassistant/components/velbus/light.py | 2 +- homeassistant/components/velbus/sensor.py | 2 +- homeassistant/components/velbus/switch.py | 2 +- 10 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 homeassistant/components/velbus/entity.py diff --git a/.coveragerc b/.coveragerc index 79ecbb3ece5..dd01fa11e84 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1426,6 +1426,7 @@ omit = homeassistant/components/velbus/const.py homeassistant/components/velbus/cover.py homeassistant/components/velbus/diagnostics.py + homeassistant/components/velbus/entity.py homeassistant/components/velbus/light.py homeassistant/components/velbus/sensor.py homeassistant/components/velbus/switch.py diff --git a/homeassistant/components/velbus/__init__.py b/homeassistant/components/velbus/__init__.py index eeeee2f9716..67a4652d5e5 100644 --- a/homeassistant/components/velbus/__init__.py +++ b/homeassistant/components/velbus/__init__.py @@ -3,7 +3,6 @@ from __future__ import annotations import logging -from velbusaio.channels import Channel as VelbusChannel from velbusaio.controller import Velbus import voluptuous as vol @@ -13,7 +12,6 @@ from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.helpers import device_registry import homeassistant.helpers.config_validation as cv from homeassistant.helpers.device_registry import DeviceEntry -from homeassistant.helpers.entity import DeviceInfo, Entity from .const import ( CONF_INTERFACE, @@ -146,32 +144,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.services.async_remove(DOMAIN, SERVICE_SYNC) hass.services.async_remove(DOMAIN, SERVICE_SET_MEMO_TEXT) return unload_ok - - -class VelbusEntity(Entity): - """Representation of a Velbus entity.""" - - _attr_should_poll: bool = False - - def __init__(self, channel: VelbusChannel) -> None: - """Initialize a Velbus entity.""" - self._channel = channel - self._attr_name = channel.get_name() - self._attr_device_info = DeviceInfo( - identifiers={ - (DOMAIN, str(channel.get_module_address())), - }, - manufacturer="Velleman", - model=channel.get_module_type_name(), - name=channel.get_full_name(), - sw_version=channel.get_module_sw_version(), - ) - serial = channel.get_module_serial() or str(channel.get_module_address()) - self._attr_unique_id = f"{serial}-{channel.get_channel_number()}" - - async def async_added_to_hass(self) -> None: - """Add listener for state changes.""" - self._channel.on_status_update(self._on_update) - - async def _on_update(self) -> None: - self.async_write_ha_state() diff --git a/homeassistant/components/velbus/binary_sensor.py b/homeassistant/components/velbus/binary_sensor.py index 8c67520dd9a..ef0cef938b1 100644 --- a/homeassistant/components/velbus/binary_sensor.py +++ b/homeassistant/components/velbus/binary_sensor.py @@ -6,8 +6,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/button.py b/homeassistant/components/velbus/button.py index 189cfb495e4..5f76f7bba98 100644 --- a/homeassistant/components/velbus/button.py +++ b/homeassistant/components/velbus/button.py @@ -12,8 +12,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/climate.py b/homeassistant/components/velbus/climate.py index a6549f0262c..76eb3e30fa0 100644 --- a/homeassistant/components/velbus/climate.py +++ b/homeassistant/components/velbus/climate.py @@ -15,8 +15,8 @@ from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN, PRESET_MODES +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/cover.py b/homeassistant/components/velbus/cover.py index 6bd1629d3a3..3ac66147bb6 100644 --- a/homeassistant/components/velbus/cover.py +++ b/homeassistant/components/velbus/cover.py @@ -14,8 +14,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/entity.py b/homeassistant/components/velbus/entity.py new file mode 100644 index 00000000000..13ecb7febab --- /dev/null +++ b/homeassistant/components/velbus/entity.py @@ -0,0 +1,37 @@ +"""Support for Velbus devices.""" +from __future__ import annotations + +from velbusaio.channels import Channel as VelbusChannel + +from homeassistant.helpers.entity import DeviceInfo, Entity + +from .const import DOMAIN + + +class VelbusEntity(Entity): + """Representation of a Velbus entity.""" + + _attr_should_poll: bool = False + + def __init__(self, channel: VelbusChannel) -> None: + """Initialize a Velbus entity.""" + self._channel = channel + self._attr_name = channel.get_name() + self._attr_device_info = DeviceInfo( + identifiers={ + (DOMAIN, str(channel.get_module_address())), + }, + manufacturer="Velleman", + model=channel.get_module_type_name(), + name=channel.get_full_name(), + sw_version=channel.get_module_sw_version(), + ) + serial = channel.get_module_serial() or str(channel.get_module_address()) + self._attr_unique_id = f"{serial}-{channel.get_channel_number()}" + + async def async_added_to_hass(self) -> None: + """Add listener for state changes.""" + self._channel.on_status_update(self._on_update) + + async def _on_update(self) -> None: + self.async_write_ha_state() diff --git a/homeassistant/components/velbus/light.py b/homeassistant/components/velbus/light.py index f562e250892..b5b106b6f9f 100644 --- a/homeassistant/components/velbus/light.py +++ b/homeassistant/components/velbus/light.py @@ -24,8 +24,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import Entity, EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/sensor.py b/homeassistant/components/velbus/sensor.py index a0bd9b6c173..0805ae2699a 100644 --- a/homeassistant/components/velbus/sensor.py +++ b/homeassistant/components/velbus/sensor.py @@ -12,8 +12,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry( diff --git a/homeassistant/components/velbus/switch.py b/homeassistant/components/velbus/switch.py index c3c4c8a5863..6de8373d3fc 100644 --- a/homeassistant/components/velbus/switch.py +++ b/homeassistant/components/velbus/switch.py @@ -8,8 +8,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import VelbusEntity from .const import DOMAIN +from .entity import VelbusEntity async def async_setup_entry(