mirror of
https://github.com/elisspace/core.git
synced 2026-10-01 23:10:05 +00:00
Migrate Unifi Protect last tripped time attributes to their own entities (#68347)
This commit is contained in:
@@ -13,7 +13,7 @@ from homeassistant.components.binary_sensor import (
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_LAST_TRIP_TIME, ATTR_MODEL
|
||||
from homeassistant.const import ATTR_MODEL
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
@@ -27,7 +27,6 @@ from .entity import (
|
||||
async_all_device_entities,
|
||||
)
|
||||
from .models import ProtectRequiredKeysMixin
|
||||
from .utils import get_nested_attr
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
_KEY_DOOR = "door"
|
||||
@@ -39,8 +38,6 @@ class ProtectBinaryEntityDescription(
|
||||
):
|
||||
"""Describes UniFi Protect Binary Sensor entity."""
|
||||
|
||||
ufp_last_trip_value: str | None = None
|
||||
|
||||
|
||||
MOUNT_DEVICE_CLASS_MAP = {
|
||||
MountType.GARAGE: BinarySensorDeviceClass.GARAGE_DOOR,
|
||||
@@ -57,7 +54,6 @@ CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
icon="mdi:doorbell-video",
|
||||
ufp_required_field="feature_flags.has_chime",
|
||||
ufp_value="is_ringing",
|
||||
ufp_last_trip_value="last_ring",
|
||||
),
|
||||
ProtectBinaryEntityDescription(
|
||||
key="dark",
|
||||
@@ -79,7 +75,6 @@ LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
name="Motion Detected",
|
||||
device_class=BinarySensorDeviceClass.MOTION,
|
||||
ufp_value="is_pir_motion_detected",
|
||||
ufp_last_trip_value="last_motion",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -89,7 +84,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
name="Contact",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
ufp_value="is_opened",
|
||||
ufp_last_trip_value="open_status_changed_at",
|
||||
ufp_enabled="is_contact_sensor_enabled",
|
||||
),
|
||||
ProtectBinaryEntityDescription(
|
||||
@@ -104,7 +98,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
name="Motion Detected",
|
||||
device_class=BinarySensorDeviceClass.MOTION,
|
||||
ufp_value="is_motion_detected",
|
||||
ufp_last_trip_value="motion_detected_at",
|
||||
ufp_enabled="is_motion_sensor_enabled",
|
||||
),
|
||||
ProtectBinaryEntityDescription(
|
||||
@@ -112,7 +105,6 @@ SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
name="Tampering Detected",
|
||||
device_class=BinarySensorDeviceClass.TAMPER,
|
||||
ufp_value="is_tampering_detected",
|
||||
ufp_last_trip_value="tampering_detected_at",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -122,7 +114,6 @@ MOTION_SENSORS: tuple[ProtectBinaryEntityDescription, ...] = (
|
||||
name="Motion",
|
||||
device_class=BinarySensorDeviceClass.MOTION,
|
||||
ufp_value="is_motion_detected",
|
||||
ufp_last_trip_value="last_motion",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -215,16 +206,6 @@ class ProtectDeviceBinarySensor(ProtectDeviceEntity, BinarySensorEntity):
|
||||
super()._async_update_device_from_protect()
|
||||
|
||||
self._attr_is_on = self.entity_description.get_ufp_value(self.device)
|
||||
if self.entity_description.ufp_last_trip_value is not None:
|
||||
last_trip = get_nested_attr(
|
||||
self.device, self.entity_description.ufp_last_trip_value
|
||||
)
|
||||
attrs = self.extra_state_attributes or {}
|
||||
self._attr_extra_state_attributes = {
|
||||
**attrs,
|
||||
ATTR_LAST_TRIP_TIME: last_trip,
|
||||
}
|
||||
|
||||
# UP Sense can be any of the 3 contact sensor device classes
|
||||
if self.entity_description.key == _KEY_DOOR and isinstance(self.device, Sensor):
|
||||
self.entity_description.device_class = MOUNT_DEVICE_CLASS_MAP.get(
|
||||
|
||||
Reference in New Issue
Block a user