Reduce duplicate code in unifiprotect entities (#119779)
parent
2713a3fdb1
commit
151b3b3b0a
|
@ -706,8 +706,8 @@ def _async_nvr_entities(
|
||||||
return entities
|
return entities
|
||||||
|
|
||||||
|
|
||||||
class ProtectDeviceSensor(ProtectDeviceEntity, SensorEntity):
|
class BaseProtectSensor(BaseProtectEntity, SensorEntity):
|
||||||
"""A Ubiquiti UniFi Protect Sensor."""
|
"""A UniFi Protect Sensor Entity."""
|
||||||
|
|
||||||
entity_description: ProtectSensorEntityDescription
|
entity_description: ProtectSensorEntityDescription
|
||||||
_state_attrs = ("_attr_available", "_attr_native_value")
|
_state_attrs = ("_attr_available", "_attr_native_value")
|
||||||
|
@ -717,15 +717,12 @@ class ProtectDeviceSensor(ProtectDeviceEntity, SensorEntity):
|
||||||
self._attr_native_value = self.entity_description.get_ufp_value(self.device)
|
self._attr_native_value = self.entity_description.get_ufp_value(self.device)
|
||||||
|
|
||||||
|
|
||||||
class ProtectNVRSensor(ProtectNVREntity, SensorEntity):
|
class ProtectDeviceSensor(BaseProtectSensor, ProtectDeviceEntity):
|
||||||
"""A Ubiquiti UniFi Protect Sensor."""
|
"""A Ubiquiti UniFi Protect Sensor."""
|
||||||
|
|
||||||
entity_description: ProtectSensorEntityDescription
|
|
||||||
_state_attrs = ("_attr_available", "_attr_native_value")
|
|
||||||
|
|
||||||
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
class ProtectNVRSensor(BaseProtectSensor, ProtectNVREntity):
|
||||||
super()._async_update_device_from_protect(device)
|
"""A Ubiquiti UniFi Protect Sensor."""
|
||||||
self._attr_native_value = self.entity_description.get_ufp_value(self.device)
|
|
||||||
|
|
||||||
|
|
||||||
class ProtectEventSensor(EventEntityMixin, SensorEntity):
|
class ProtectEventSensor(EventEntityMixin, SensorEntity):
|
||||||
|
|
|
@ -472,43 +472,32 @@ _PRIVACY_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ProtectSwitch(ProtectDeviceEntity, SwitchEntity):
|
class ProtectBaseSwitch(BaseProtectEntity, SwitchEntity):
|
||||||
|
"""Base class for UniFi Protect Switch."""
|
||||||
|
|
||||||
|
entity_description: ProtectSwitchEntityDescription
|
||||||
|
_state_attrs = ("_attr_available", "_attr_is_on")
|
||||||
|
|
||||||
|
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
||||||
|
super()._async_update_device_from_protect(device)
|
||||||
|
self._attr_is_on = self.entity_description.get_ufp_value(self.device) is True
|
||||||
|
|
||||||
|
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||||
|
"""Turn the device on."""
|
||||||
|
await self.entity_description.ufp_set(self.device, True)
|
||||||
|
|
||||||
|
async def async_turn_off(self, **kwargs: Any) -> None:
|
||||||
|
"""Turn the device off."""
|
||||||
|
await self.entity_description.ufp_set(self.device, False)
|
||||||
|
|
||||||
|
|
||||||
|
class ProtectSwitch(ProtectBaseSwitch, ProtectDeviceEntity):
|
||||||
"""A UniFi Protect Switch."""
|
"""A UniFi Protect Switch."""
|
||||||
|
|
||||||
entity_description: ProtectSwitchEntityDescription
|
|
||||||
_state_attrs = ("_attr_available", "_attr_is_on")
|
|
||||||
|
|
||||||
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
class ProtectNVRSwitch(ProtectBaseSwitch, ProtectNVREntity):
|
||||||
super()._async_update_device_from_protect(device)
|
|
||||||
self._attr_is_on = self.entity_description.get_ufp_value(self.device) is True
|
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
|
||||||
"""Turn the device on."""
|
|
||||||
await self.entity_description.ufp_set(self.device, True)
|
|
||||||
|
|
||||||
async def async_turn_off(self, **kwargs: Any) -> None:
|
|
||||||
"""Turn the device off."""
|
|
||||||
await self.entity_description.ufp_set(self.device, False)
|
|
||||||
|
|
||||||
|
|
||||||
class ProtectNVRSwitch(ProtectNVREntity, SwitchEntity):
|
|
||||||
"""A UniFi Protect NVR Switch."""
|
"""A UniFi Protect NVR Switch."""
|
||||||
|
|
||||||
entity_description: ProtectSwitchEntityDescription
|
|
||||||
_state_attrs = ("_attr_available", "_attr_is_on")
|
|
||||||
|
|
||||||
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
|
||||||
super()._async_update_device_from_protect(device)
|
|
||||||
self._attr_is_on = self.entity_description.get_ufp_value(self.device) is True
|
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
|
||||||
"""Turn the device on."""
|
|
||||||
await self.entity_description.ufp_set(self.device, True)
|
|
||||||
|
|
||||||
async def async_turn_off(self, **kwargs: Any) -> None:
|
|
||||||
"""Turn the device off."""
|
|
||||||
await self.entity_description.ufp_set(self.device, False)
|
|
||||||
|
|
||||||
|
|
||||||
class ProtectPrivacyModeSwitch(RestoreEntity, ProtectSwitch):
|
class ProtectPrivacyModeSwitch(RestoreEntity, ProtectSwitch):
|
||||||
"""A UniFi Protect Switch."""
|
"""A UniFi Protect Switch."""
|
||||||
|
|
Loading…
Reference in New Issue