diff --git a/homeassistant/components/august/binary_sensor.py b/homeassistant/components/august/binary_sensor.py index 8671032f32d..81d84965d58 100644 --- a/homeassistant/components/august/binary_sensor.py +++ b/homeassistant/components/august/binary_sensor.py @@ -210,8 +210,6 @@ class AugustDoorBinarySensor(AugustEntityMixin, BinarySensorEntity): """Initialize the sensor.""" super().__init__(data, device) self.entity_description = description - self._data = data - self._device = device self._attr_unique_id = f"{self._device_id}_{description.key}" @callback @@ -273,22 +271,21 @@ class AugustDoorbellBinarySensor(AugustEntityMixin, BinarySensorEntity): else: self._attr_available = True + @callback + def _async_scheduled_update(self, now: datetime) -> None: + """Timer callback for sensor update.""" + self._check_for_off_update_listener = None + self._update_from_data() + if not self.is_on: + self.async_write_ha_state() + def _schedule_update_to_recheck_turn_off_sensor(self) -> None: """Schedule an update to recheck the sensor to see if it is ready to turn off.""" # If the sensor is already off there is nothing to do if not self.is_on: return - - @callback - def _scheduled_update(now: datetime) -> None: - """Timer callback for sensor update.""" - self._check_for_off_update_listener = None - self._update_from_data() - if not self.is_on: - self.async_write_ha_state() - self._check_for_off_update_listener = async_call_later( - self.hass, TIME_TO_RECHECK_DETECTION.total_seconds(), _scheduled_update + self.hass, TIME_TO_RECHECK_DETECTION, self._async_scheduled_update ) def _cancel_any_pending_updates(self) -> None: diff --git a/homeassistant/components/august/camera.py b/homeassistant/components/august/camera.py index 4c56502e6c7..76ccf9fa4dd 100644 --- a/homeassistant/components/august/camera.py +++ b/homeassistant/components/august/camera.py @@ -43,6 +43,8 @@ class AugustCamera(AugustEntityMixin, Camera): """An implementation of an August security camera.""" _attr_translation_key = "camera" + _attr_motion_detection_enabled = True + _attr_brand = DEFAULT_NAME def __init__( self, data: AugustData, device: Doorbell, session: ClientSession, timeout: int @@ -55,8 +57,6 @@ class AugustCamera(AugustEntityMixin, Camera): self._content_token = None self._image_content = None self._attr_unique_id = f"{self._device_id:s}_camera" - self._attr_motion_detection_enabled = True - self._attr_brand = DEFAULT_NAME @property def is_recording(self) -> bool: diff --git a/homeassistant/components/august/lock.py b/homeassistant/components/august/lock.py index 1817319d823..47b1be52184 100644 --- a/homeassistant/components/august/lock.py +++ b/homeassistant/components/august/lock.py @@ -40,11 +40,11 @@ class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity): """Representation of an August lock.""" _attr_name = None + _lock_status: LockStatus | None = None def __init__(self, data: AugustData, device: Lock) -> None: """Initialize the lock.""" super().__init__(data, device) - self._lock_status = None self._attr_unique_id = f"{self._device_id:s}_lock" if self._detail.unlatch_supported: self._attr_supported_features = LockEntityFeature.OPEN @@ -136,14 +136,15 @@ class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity): update_lock_detail_from_activity(self._detail, bridge_activity) self._update_lock_status_from_detail() - if self._lock_status is None or self._lock_status is LockStatus.UNKNOWN: + lock_status = self._lock_status + if lock_status is None or lock_status is LockStatus.UNKNOWN: self._attr_is_locked = None else: - self._attr_is_locked = self._lock_status is LockStatus.LOCKED + self._attr_is_locked = lock_status is LockStatus.LOCKED - self._attr_is_jammed = self._lock_status is LockStatus.JAMMED - self._attr_is_locking = self._lock_status is LockStatus.LOCKING - self._attr_is_unlocking = self._lock_status in ( + self._attr_is_jammed = lock_status is LockStatus.JAMMED + self._attr_is_locking = lock_status is LockStatus.LOCKING + self._attr_is_unlocking = lock_status in ( LockStatus.UNLOCKING, LockStatus.UNLATCHING, ) diff --git a/homeassistant/components/august/sensor.py b/homeassistant/components/august/sensor.py index c1dc6620f81..8ad32df3c08 100644 --- a/homeassistant/components/august/sensor.py +++ b/homeassistant/components/august/sensor.py @@ -26,7 +26,6 @@ from homeassistant.const import ( EntityCategory, ) from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers import entity_registry as er from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import AugustConfigEntry, AugustData @@ -37,7 +36,6 @@ from .const import ( ATTR_OPERATION_METHOD, ATTR_OPERATION_REMOTE, ATTR_OPERATION_TAG, - DOMAIN, OPERATION_METHOD_AUTORELOCK, OPERATION_METHOD_KEYPAD, OPERATION_METHOD_MANUAL, @@ -100,7 +98,6 @@ async def async_setup_entry( """Set up the August sensors.""" data = config_entry.runtime_data entities: list[SensorEntity] = [] - migrate_unique_id_devices = [] operation_sensors = [] batteries: dict[str, list[Doorbell | Lock]] = { "device_battery": [], @@ -126,9 +123,7 @@ async def async_setup_entry( device.device_name, ) entities.append( - AugustBatterySensor[LockDetail]( - data, device, device, SENSOR_TYPE_DEVICE_BATTERY - ) + AugustBatterySensor[LockDetail](data, device, SENSOR_TYPE_DEVICE_BATTERY) ) for device in batteries["linked_keypad_battery"]: @@ -145,34 +140,15 @@ async def async_setup_entry( device.device_name, ) keypad_battery_sensor = AugustBatterySensor[KeypadDetail]( - data, detail.keypad, device, SENSOR_TYPE_KEYPAD_BATTERY + data, detail.keypad, SENSOR_TYPE_KEYPAD_BATTERY ) entities.append(keypad_battery_sensor) - migrate_unique_id_devices.append(keypad_battery_sensor) entities.extend(AugustOperatorSensor(data, device) for device in operation_sensors) - await _async_migrate_old_unique_ids(hass, migrate_unique_id_devices) - async_add_entities(entities) -async def _async_migrate_old_unique_ids(hass: HomeAssistant, devices) -> None: - """Keypads now have their own serial number.""" - registry = er.async_get(hass) - for device in devices: - old_entity_id = registry.async_get_entity_id( - "sensor", DOMAIN, device.old_unique_id - ) - if old_entity_id is not None: - _LOGGER.debug( - "Migrating unique_id from [%s] to [%s]", - device.old_unique_id, - device.unique_id, - ) - registry.async_update_entity(old_entity_id, new_unique_id=device.unique_id) - - class AugustOperatorSensor(AugustEntityMixin, RestoreSensor): """Representation of an August lock operation sensor.""" @@ -181,8 +157,6 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreSensor): def __init__(self, data: AugustData, device) -> None: """Initialize the sensor.""" super().__init__(data, device) - self._data = data - self._device = device self._operated_remote: bool | None = None self._operated_keypad: bool | None = None self._operated_manual: bool | None = None @@ -279,15 +253,13 @@ class AugustBatterySensor(AugustEntityMixin, SensorEntity, Generic[_T]): def __init__( self, data: AugustData, - device, - old_device, + device: Doorbell | Lock | KeypadDetail, description: AugustSensorEntityDescription[_T], ) -> None: """Initialize the sensor.""" super().__init__(data, device) self.entity_description = description self._attr_unique_id = f"{self._device_id}_{description.key}" - self.old_unique_id = f"{old_device.device_id}_{description.key}" self._update_from_data() @callback