mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Remove unneeded vesync device base class (#134499)
* Remove unneeded entity to make code cleaner * Update light.py * Update fan.py * Typing. * Update homeassistant/components/vesync/common.py Co-authored-by: Allen Porter <allen.porter@gmail.com> * Wrap --------- Co-authored-by: Allen Porter <allen.porter@gmail.com>
This commit is contained in:
parent
66b4b24612
commit
d662a4465c
@ -2,14 +2,21 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from pyvesync import VeSync
|
||||||
|
from pyvesync.vesyncbasedevice import VeSyncBaseDevice
|
||||||
|
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from .const import VS_FANS, VS_LIGHTS, VS_SENSORS, VS_SWITCHES
|
from .const import VS_FANS, VS_LIGHTS, VS_SENSORS, VS_SWITCHES
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
async def async_process_devices(hass, manager):
|
async def async_process_devices(
|
||||||
|
hass: HomeAssistant, manager: VeSync
|
||||||
|
) -> dict[str, list[VeSyncBaseDevice]]:
|
||||||
"""Assign devices to proper component."""
|
"""Assign devices to proper component."""
|
||||||
devices = {}
|
devices: dict[str, list[VeSyncBaseDevice]] = {}
|
||||||
devices[VS_SWITCHES] = []
|
devices[VS_SWITCHES] = []
|
||||||
devices[VS_FANS] = []
|
devices[VS_FANS] = []
|
||||||
devices[VS_LIGHTS] = []
|
devices[VS_LIGHTS] = []
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
"""Common entity for VeSync Component."""
|
"""Common entity for VeSync Component."""
|
||||||
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from pyvesync.vesyncbasedevice import VeSyncBaseDevice
|
from pyvesync.vesyncbasedevice import VeSyncBaseDevice
|
||||||
|
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
from homeassistant.helpers.entity import ToggleEntity
|
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
@ -50,21 +47,3 @@ class VeSyncBaseEntity(CoordinatorEntity[VeSyncDataCoordinator]):
|
|||||||
manufacturer="VeSync",
|
manufacturer="VeSync",
|
||||||
sw_version=self.device.current_firm_version,
|
sw_version=self.device.current_firm_version,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VeSyncDevice(VeSyncBaseEntity, ToggleEntity):
|
|
||||||
"""Base class for VeSync Device Representations."""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def details(self):
|
|
||||||
"""Provide access to the device details dictionary."""
|
|
||||||
return self.device.details
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_on(self) -> bool:
|
|
||||||
"""Return True if device is on."""
|
|
||||||
return self.device.device_status == "on"
|
|
||||||
|
|
||||||
def turn_off(self, **kwargs: Any) -> None:
|
|
||||||
"""Turn the device off."""
|
|
||||||
self.device.turn_off()
|
|
||||||
|
@ -28,7 +28,7 @@ from .const import (
|
|||||||
VS_FANS,
|
VS_FANS,
|
||||||
)
|
)
|
||||||
from .coordinator import VeSyncDataCoordinator
|
from .coordinator import VeSyncDataCoordinator
|
||||||
from .entity import VeSyncDevice
|
from .entity import VeSyncBaseEntity
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ def _setup_entities(
|
|||||||
async_add_entities(entities, update_before_add=True)
|
async_add_entities(entities, update_before_add=True)
|
||||||
|
|
||||||
|
|
||||||
class VeSyncFanHA(VeSyncDevice, FanEntity):
|
class VeSyncFanHA(VeSyncBaseEntity, FanEntity):
|
||||||
"""Representation of a VeSync fan."""
|
"""Representation of a VeSync fan."""
|
||||||
|
|
||||||
_attr_supported_features = (
|
_attr_supported_features = (
|
||||||
@ -112,11 +112,18 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
|
|||||||
_attr_name = None
|
_attr_name = None
|
||||||
_attr_translation_key = "vesync"
|
_attr_translation_key = "vesync"
|
||||||
|
|
||||||
def __init__(self, fan, coordinator: VeSyncDataCoordinator) -> None:
|
def __init__(
|
||||||
|
self, fan: VeSyncBaseDevice, coordinator: VeSyncDataCoordinator
|
||||||
|
) -> None:
|
||||||
"""Initialize the VeSync fan device."""
|
"""Initialize the VeSync fan device."""
|
||||||
super().__init__(fan, coordinator)
|
super().__init__(fan, coordinator)
|
||||||
self.smartfan = fan
|
self.smartfan = fan
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_on(self) -> bool:
|
||||||
|
"""Return True if device is on."""
|
||||||
|
return self.device.device_status == "on"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def percentage(self) -> int | None:
|
def percentage(self) -> int | None:
|
||||||
"""Return the current speed."""
|
"""Return the current speed."""
|
||||||
@ -229,3 +236,7 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
|
|||||||
if percentage is None:
|
if percentage is None:
|
||||||
percentage = 50
|
percentage = 50
|
||||||
self.set_percentage(percentage)
|
self.set_percentage(percentage)
|
||||||
|
|
||||||
|
def turn_off(self, **kwargs: Any) -> None:
|
||||||
|
"""Turn the device off."""
|
||||||
|
self.device.turn_off()
|
||||||
|
@ -19,7 +19,7 @@ from homeassistant.util import color as color_util
|
|||||||
|
|
||||||
from .const import DEV_TYPE_TO_HA, DOMAIN, VS_COORDINATOR, VS_DISCOVERY, VS_LIGHTS
|
from .const import DEV_TYPE_TO_HA, DOMAIN, VS_COORDINATOR, VS_DISCOVERY, VS_LIGHTS
|
||||||
from .coordinator import VeSyncDataCoordinator
|
from .coordinator import VeSyncDataCoordinator
|
||||||
from .entity import VeSyncDevice
|
from .entity import VeSyncBaseEntity
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
MAX_MIREDS = 370 # 1,000,000 divided by 2700 Kelvin = 370 Mireds
|
MAX_MIREDS = 370 # 1,000,000 divided by 2700 Kelvin = 370 Mireds
|
||||||
@ -54,7 +54,7 @@ def _setup_entities(
|
|||||||
coordinator: VeSyncDataCoordinator,
|
coordinator: VeSyncDataCoordinator,
|
||||||
):
|
):
|
||||||
"""Check if device is online and add entity."""
|
"""Check if device is online and add entity."""
|
||||||
entities: list[VeSyncBaseLight] = []
|
entities: list[VeSyncBaseLightHA] = []
|
||||||
for dev in devices:
|
for dev in devices:
|
||||||
if DEV_TYPE_TO_HA.get(dev.device_type) in ("walldimmer", "bulb-dimmable"):
|
if DEV_TYPE_TO_HA.get(dev.device_type) in ("walldimmer", "bulb-dimmable"):
|
||||||
entities.append(VeSyncDimmableLightHA(dev, coordinator))
|
entities.append(VeSyncDimmableLightHA(dev, coordinator))
|
||||||
@ -69,11 +69,16 @@ def _setup_entities(
|
|||||||
async_add_entities(entities, update_before_add=True)
|
async_add_entities(entities, update_before_add=True)
|
||||||
|
|
||||||
|
|
||||||
class VeSyncBaseLight(VeSyncDevice, LightEntity):
|
class VeSyncBaseLightHA(VeSyncBaseEntity, LightEntity):
|
||||||
"""Base class for VeSync Light Devices Representations."""
|
"""Base class for VeSync Light Devices Representations."""
|
||||||
|
|
||||||
_attr_name = None
|
_attr_name = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_on(self) -> bool:
|
||||||
|
"""Return True if device is on."""
|
||||||
|
return self.device.device_status == "on"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def brightness(self) -> int:
|
def brightness(self) -> int:
|
||||||
"""Get light brightness."""
|
"""Get light brightness."""
|
||||||
@ -139,15 +144,19 @@ class VeSyncBaseLight(VeSyncDevice, LightEntity):
|
|||||||
# send turn_on command to pyvesync api
|
# send turn_on command to pyvesync api
|
||||||
self.device.turn_on()
|
self.device.turn_on()
|
||||||
|
|
||||||
|
def turn_off(self, **kwargs: Any) -> None:
|
||||||
|
"""Turn the device off."""
|
||||||
|
self.device.turn_off()
|
||||||
|
|
||||||
class VeSyncDimmableLightHA(VeSyncBaseLight, LightEntity):
|
|
||||||
|
class VeSyncDimmableLightHA(VeSyncBaseLightHA, LightEntity):
|
||||||
"""Representation of a VeSync dimmable light device."""
|
"""Representation of a VeSync dimmable light device."""
|
||||||
|
|
||||||
_attr_color_mode = ColorMode.BRIGHTNESS
|
_attr_color_mode = ColorMode.BRIGHTNESS
|
||||||
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
|
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
|
||||||
|
|
||||||
|
|
||||||
class VeSyncTunableWhiteLightHA(VeSyncBaseLight, LightEntity):
|
class VeSyncTunableWhiteLightHA(VeSyncBaseLightHA, LightEntity):
|
||||||
"""Representation of a VeSync Tunable White Light device."""
|
"""Representation of a VeSync Tunable White Light device."""
|
||||||
|
|
||||||
_attr_color_mode = ColorMode.COLOR_TEMP
|
_attr_color_mode = ColorMode.COLOR_TEMP
|
||||||
|
@ -13,7 +13,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
|
|
||||||
from .const import DEV_TYPE_TO_HA, DOMAIN, VS_COORDINATOR, VS_DISCOVERY, VS_SWITCHES
|
from .const import DEV_TYPE_TO_HA, DOMAIN, VS_COORDINATOR, VS_DISCOVERY, VS_SWITCHES
|
||||||
from .coordinator import VeSyncDataCoordinator
|
from .coordinator import VeSyncDataCoordinator
|
||||||
from .entity import VeSyncDevice
|
from .entity import VeSyncBaseEntity
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ def _setup_entities(
|
|||||||
async_add_entities(entities, update_before_add=True)
|
async_add_entities(entities, update_before_add=True)
|
||||||
|
|
||||||
|
|
||||||
class VeSyncBaseSwitch(VeSyncDevice, SwitchEntity):
|
class VeSyncBaseSwitch(VeSyncBaseEntity, SwitchEntity):
|
||||||
"""Base class for VeSync switch Device Representations."""
|
"""Base class for VeSync switch Device Representations."""
|
||||||
|
|
||||||
_attr_name = None
|
_attr_name = None
|
||||||
@ -70,11 +70,22 @@ class VeSyncBaseSwitch(VeSyncDevice, SwitchEntity):
|
|||||||
"""Turn the device on."""
|
"""Turn the device on."""
|
||||||
self.device.turn_on()
|
self.device.turn_on()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_on(self) -> bool:
|
||||||
|
"""Return True if device is on."""
|
||||||
|
return self.device.device_status == "on"
|
||||||
|
|
||||||
|
def turn_off(self, **kwargs: Any) -> None:
|
||||||
|
"""Turn the device off."""
|
||||||
|
self.device.turn_off()
|
||||||
|
|
||||||
|
|
||||||
class VeSyncSwitchHA(VeSyncBaseSwitch, SwitchEntity):
|
class VeSyncSwitchHA(VeSyncBaseSwitch, SwitchEntity):
|
||||||
"""Representation of a VeSync switch."""
|
"""Representation of a VeSync switch."""
|
||||||
|
|
||||||
def __init__(self, plug, coordinator: VeSyncDataCoordinator) -> None:
|
def __init__(
|
||||||
|
self, plug: VeSyncBaseDevice, coordinator: VeSyncDataCoordinator
|
||||||
|
) -> None:
|
||||||
"""Initialize the VeSync switch device."""
|
"""Initialize the VeSync switch device."""
|
||||||
super().__init__(plug, coordinator)
|
super().__init__(plug, coordinator)
|
||||||
self.smartplug = plug
|
self.smartplug = plug
|
||||||
@ -83,7 +94,9 @@ class VeSyncSwitchHA(VeSyncBaseSwitch, SwitchEntity):
|
|||||||
class VeSyncLightSwitch(VeSyncBaseSwitch, SwitchEntity):
|
class VeSyncLightSwitch(VeSyncBaseSwitch, SwitchEntity):
|
||||||
"""Handle representation of VeSync Light Switch."""
|
"""Handle representation of VeSync Light Switch."""
|
||||||
|
|
||||||
def __init__(self, switch, coordinator: VeSyncDataCoordinator) -> None:
|
def __init__(
|
||||||
|
self, switch: VeSyncBaseDevice, coordinator: VeSyncDataCoordinator
|
||||||
|
) -> None:
|
||||||
"""Initialize Light Switch device class."""
|
"""Initialize Light Switch device class."""
|
||||||
super().__init__(switch, coordinator)
|
super().__init__(switch, coordinator)
|
||||||
self.switch = switch
|
self.switch = switch
|
||||||
|
Loading…
x
Reference in New Issue
Block a user