mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Move nuki base entity to separate module (#126500)
This commit is contained in:
parent
5b1e4e0691
commit
9b9edecaac
@ -10,7 +10,6 @@ import logging
|
|||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
from pynuki import NukiBridge, NukiLock, NukiOpener
|
from pynuki import NukiBridge, NukiLock, NukiOpener
|
||||||
from pynuki.bridge import InvalidCredentialsException
|
from pynuki.bridge import InvalidCredentialsException
|
||||||
from pynuki.device import NukiDevice
|
|
||||||
from requests.exceptions import RequestException
|
from requests.exceptions import RequestException
|
||||||
|
|
||||||
from homeassistant import exceptions
|
from homeassistant import exceptions
|
||||||
@ -25,9 +24,8 @@ from homeassistant.const import (
|
|||||||
)
|
)
|
||||||
from homeassistant.core import Event, HomeAssistant
|
from homeassistant.core import Event, HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr, issue_registry as ir
|
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.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 .const import CONF_ENCRYPT_TOKEN, DEFAULT_TIMEOUT, DOMAIN
|
||||||
from .coordinator import NukiCoordinator
|
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)
|
hass.data[DOMAIN].pop(entry.entry_id)
|
||||||
|
|
||||||
return unload_ok
|
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),
|
|
||||||
)
|
|
||||||
|
@ -14,8 +14,9 @@ from homeassistant.const import EntityCategory
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import NukiEntity, NukiEntryData
|
from . import NukiEntryData
|
||||||
from .const import DOMAIN as NUKI_DOMAIN
|
from .const import DOMAIN as NUKI_DOMAIN
|
||||||
|
from .entity import NukiEntity
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
|
42
homeassistant/components/nuki/entity.py
Normal file
42
homeassistant/components/nuki/entity.py
Normal 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),
|
||||||
|
)
|
@ -17,8 +17,9 @@ from homeassistant.core import HomeAssistant
|
|||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
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 .const import ATTR_ENABLE, ATTR_UNLATCH, DOMAIN as NUKI_DOMAIN, ERROR_STATES
|
||||||
|
from .entity import NukiEntity
|
||||||
from .helpers import CannotConnect
|
from .helpers import CannotConnect
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,8 +10,9 @@ from homeassistant.const import PERCENTAGE, EntityCategory
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import NukiEntity, NukiEntryData
|
from . import NukiEntryData
|
||||||
from .const import DOMAIN as NUKI_DOMAIN
|
from .const import DOMAIN as NUKI_DOMAIN
|
||||||
|
from .entity import NukiEntity
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user