Add sensors to Ecovacs (#108686)

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
Robert Resch 2024-01-23 21:17:18 +01:00 committed by GitHub
parent bfd9bd3ff2
commit 37f5c75752
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 1099 additions and 56 deletions

View file

@ -16,26 +16,13 @@ from homeassistant.helpers.entity import Entity, EntityDescription
from .const import DOMAIN
_EntityDescriptionT = TypeVar("_EntityDescriptionT", bound=EntityDescription)
CapabilityT = TypeVar("CapabilityT")
EventT = TypeVar("EventT", bound=Event)
@dataclass(kw_only=True, frozen=True)
class EcovacsEntityDescription(
EntityDescription,
Generic[CapabilityT],
):
"""Ecovacs entity description."""
capability_fn: Callable[[Capabilities], CapabilityT | None]
class EcovacsEntity(Entity, Generic[CapabilityT, _EntityDescriptionT]):
class EcovacsEntity(Entity, Generic[CapabilityT]):
"""Ecovacs entity."""
entity_description: _EntityDescriptionT
_attr_should_poll = False
_attr_has_entity_name = True
_always_available: bool = False
@ -106,16 +93,26 @@ class EcovacsEntity(Entity, Generic[CapabilityT, _EntityDescriptionT]):
self._device.events.request_refresh(event_type)
class EcovacsDescriptionEntity(EcovacsEntity[CapabilityT, _EntityDescriptionT]):
class EcovacsDescriptionEntity(EcovacsEntity[CapabilityT]):
"""Ecovacs entity."""
def __init__(
self,
device: Device,
capability: CapabilityT,
entity_description: _EntityDescriptionT,
entity_description: EntityDescription,
**kwargs: Any,
) -> None:
"""Initialize entity."""
self.entity_description = entity_description
super().__init__(device, capability, **kwargs)
@dataclass(kw_only=True, frozen=True)
class EcovacsCapabilityEntityDescription(
EntityDescription,
Generic[CapabilityT],
):
"""Ecovacs entity description."""
capability_fn: Callable[[Capabilities], CapabilityT | None]