mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Reduce code needed to set august unique ids (#119942)
* Reduce code needed to set august unique ids Set the unique ids in the base class since they always use the same format * Reduce code needed to set august unique ids Set the unique ids in the base class since they always use the same format
This commit is contained in:
parent
f88b24f8a4
commit
b11801df50
@ -1,12 +1,10 @@
|
||||
"""Support for August buttons."""
|
||||
|
||||
from yalexs.lock import Lock
|
||||
|
||||
from homeassistant.components.button import ButtonEntity
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import AugustConfigEntry, AugustData
|
||||
from . import AugustConfigEntry
|
||||
from .entity import AugustEntityMixin
|
||||
|
||||
|
||||
@ -17,7 +15,7 @@ async def async_setup_entry(
|
||||
) -> None:
|
||||
"""Set up August lock wake buttons."""
|
||||
data = config_entry.runtime_data
|
||||
async_add_entities(AugustWakeLockButton(data, lock) for lock in data.locks)
|
||||
async_add_entities(AugustWakeLockButton(data, lock, "wake") for lock in data.locks)
|
||||
|
||||
|
||||
class AugustWakeLockButton(AugustEntityMixin, ButtonEntity):
|
||||
@ -25,11 +23,6 @@ class AugustWakeLockButton(AugustEntityMixin, ButtonEntity):
|
||||
|
||||
_attr_translation_key = "wake"
|
||||
|
||||
def __init__(self, data: AugustData, device: Lock) -> None:
|
||||
"""Initialize the lock wake button."""
|
||||
super().__init__(data, device)
|
||||
self._attr_unique_id = f"{self._device_id}_wake"
|
||||
|
||||
async def async_press(self) -> None:
|
||||
"""Wake the device."""
|
||||
await self._data.async_status_async(self._device_id, self._hyper_bridge)
|
||||
|
@ -51,10 +51,9 @@ class AugustCamera(AugustEntityMixin, Camera):
|
||||
self, data: AugustData, device: Doorbell, session: ClientSession, timeout: int
|
||||
) -> None:
|
||||
"""Initialize an August security camera."""
|
||||
super().__init__(data, device)
|
||||
super().__init__(data, device, "camera")
|
||||
self._timeout = timeout
|
||||
self._session = session
|
||||
self._attr_unique_id = f"{self._device_id:s}_camera"
|
||||
|
||||
@property
|
||||
def is_recording(self) -> bool:
|
||||
|
@ -25,12 +25,15 @@ class AugustEntityMixin(Entity):
|
||||
_attr_should_poll = False
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(self, data: AugustData, device: Doorbell | Lock) -> None:
|
||||
def __init__(
|
||||
self, data: AugustData, device: Doorbell | Lock | KeypadDetail, unique_id: str
|
||||
) -> None:
|
||||
"""Initialize an August device."""
|
||||
super().__init__()
|
||||
self._data = data
|
||||
self._device = device
|
||||
detail = self._detail
|
||||
self._attr_unique_id = f"{device.device_id}_{unique_id}"
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={(DOMAIN, self._device_id)},
|
||||
manufacturer=MANUFACTURER,
|
||||
@ -77,6 +80,7 @@ class AugustEntityMixin(Entity):
|
||||
self._device_id, self._update_from_data_and_write_state
|
||||
)
|
||||
)
|
||||
self._update_from_data()
|
||||
|
||||
|
||||
class AugustDescriptionEntity(AugustEntityMixin):
|
||||
@ -89,14 +93,8 @@ class AugustDescriptionEntity(AugustEntityMixin):
|
||||
description: EntityDescription,
|
||||
) -> None:
|
||||
"""Initialize an August entity with a description."""
|
||||
super().__init__(data, device)
|
||||
super().__init__(data, device, description.key)
|
||||
self.entity_description = description
|
||||
self._attr_unique_id = f"{self._device_id}_{description.key}"
|
||||
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Update data before adding to hass."""
|
||||
self._update_from_data()
|
||||
await super().async_added_to_hass()
|
||||
|
||||
|
||||
def _remove_device_types(name: str, device_types: list[str]) -> str:
|
||||
|
@ -44,11 +44,9 @@ class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity):
|
||||
|
||||
def __init__(self, data: AugustData, device: Lock) -> None:
|
||||
"""Initialize the lock."""
|
||||
super().__init__(data, device)
|
||||
self._attr_unique_id = f"{self._device_id:s}_lock"
|
||||
super().__init__(data, device, "lock")
|
||||
if self._detail.unlatch_supported:
|
||||
self._attr_supported_features = LockEntityFeature.OPEN
|
||||
self._update_from_data()
|
||||
|
||||
async def async_lock(self, **kwargs: Any) -> None:
|
||||
"""Lock the device."""
|
||||
|
@ -27,7 +27,7 @@ from homeassistant.const import (
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import AugustConfigEntry, AugustData
|
||||
from . import AugustConfigEntry
|
||||
from .const import (
|
||||
ATTR_OPERATION_AUTORELOCK,
|
||||
ATTR_OPERATION_KEYPAD,
|
||||
@ -91,7 +91,7 @@ async def async_setup_entry(
|
||||
|
||||
for device in data.locks:
|
||||
detail = data.get_device_detail(device.device_id)
|
||||
entities.append(AugustOperatorSensor(data, device))
|
||||
entities.append(AugustOperatorSensor(data, device, "lock_operator"))
|
||||
if SENSOR_TYPE_DEVICE_BATTERY.value_fn(detail):
|
||||
entities.append(
|
||||
AugustBatterySensor[LockDetail](
|
||||
@ -124,12 +124,6 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreSensor):
|
||||
_operated_tag: bool | None = None
|
||||
_operated_autorelock: bool | None = None
|
||||
|
||||
def __init__(self, data: AugustData, device) -> None:
|
||||
"""Initialize the sensor."""
|
||||
super().__init__(data, device)
|
||||
self._attr_unique_id = f"{self._device_id}_lock_operator"
|
||||
self._update_from_data()
|
||||
|
||||
@callback
|
||||
def _update_from_data(self) -> None:
|
||||
"""Get the latest state of the sensor and update activity."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user