Move nuki base entity to separate module (#126500)

This commit is contained in:
epenet 2024-09-23 11:55:03 +02:00 committed by GitHub
parent 5b1e4e0691
commit 9b9edecaac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 49 additions and 36 deletions

View File

@ -10,7 +10,6 @@ import logging
from aiohttp import web
from pynuki import NukiBridge, NukiLock, NukiOpener
from pynuki.bridge import InvalidCredentialsException
from pynuki.device import NukiDevice
from requests.exceptions import RequestException
from homeassistant import exceptions
@ -25,9 +24,8 @@ from homeassistant.const import (
)
from homeassistant.core import Event, HomeAssistant
from homeassistant.helpers import device_registry as dr, issue_registry as ir
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.network import NoURLAvailableError, get_url
from homeassistant.helpers.update_coordinator import CoordinatorEntity, UpdateFailed
from homeassistant.helpers.update_coordinator import UpdateFailed
from .const import CONF_ENCRYPT_TOKEN, DEFAULT_TIMEOUT, DOMAIN
from .coordinator import NukiCoordinator
@ -266,33 +264,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
class NukiEntity[_NukiDeviceT: NukiDevice](CoordinatorEntity[NukiCoordinator]):
"""An entity using CoordinatorEntity.
The CoordinatorEntity class provides:
should_poll
async_update
async_added_to_hass
available
"""
def __init__(self, coordinator: NukiCoordinator, nuki_device: _NukiDeviceT) -> None:
"""Pass coordinator to CoordinatorEntity."""
super().__init__(coordinator)
self._nuki_device = nuki_device
@property
def device_info(self) -> DeviceInfo:
"""Device info for Nuki entities."""
return DeviceInfo(
identifiers={(DOMAIN, parse_id(self._nuki_device.nuki_id))},
name=self._nuki_device.name,
manufacturer="Nuki Home Solutions GmbH",
model=self._nuki_device.device_model_str.capitalize(),
sw_version=self._nuki_device.firmware_version,
via_device=(DOMAIN, self.coordinator.bridge_id),
serial_number=parse_id(self._nuki_device.nuki_id),
)

View File

@ -14,8 +14,9 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import NukiEntity, NukiEntryData
from . import NukiEntryData
from .const import DOMAIN as NUKI_DOMAIN
from .entity import NukiEntity
async def async_setup_entry(

View File

@ -0,0 +1,42 @@
"""The nuki component."""
from __future__ import annotations
from pynuki.device import NukiDevice
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import NukiCoordinator
from .helpers import parse_id
class NukiEntity[_NukiDeviceT: NukiDevice](CoordinatorEntity[NukiCoordinator]):
"""An entity using CoordinatorEntity.
The CoordinatorEntity class provides:
should_poll
async_update
async_added_to_hass
available
"""
def __init__(self, coordinator: NukiCoordinator, nuki_device: _NukiDeviceT) -> None:
"""Pass coordinator to CoordinatorEntity."""
super().__init__(coordinator)
self._nuki_device = nuki_device
@property
def device_info(self) -> DeviceInfo:
"""Device info for Nuki entities."""
return DeviceInfo(
identifiers={(DOMAIN, parse_id(self._nuki_device.nuki_id))},
name=self._nuki_device.name,
manufacturer="Nuki Home Solutions GmbH",
model=self._nuki_device.device_model_str.capitalize(),
sw_version=self._nuki_device.firmware_version,
via_device=(DOMAIN, self.coordinator.bridge_id),
serial_number=parse_id(self._nuki_device.nuki_id),
)

View File

@ -17,8 +17,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import NukiEntity, NukiEntryData
from . import NukiEntryData
from .const import ATTR_ENABLE, ATTR_UNLATCH, DOMAIN as NUKI_DOMAIN, ERROR_STATES
from .entity import NukiEntity
from .helpers import CannotConnect

View File

@ -10,8 +10,9 @@ from homeassistant.const import PERCENTAGE, EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import NukiEntity, NukiEntryData
from . import NukiEntryData
from .const import DOMAIN as NUKI_DOMAIN
from .entity import NukiEntity
async def async_setup_entry(