mirror of
https://github.com/elisspace/core.git
synced 2026-10-01 23:10:05 +00:00
Add new features from new UniFi Protect (#82892)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
co-authored by
J. Nick Koston
parent
a5890b2374
commit
596016c2ac
@@ -13,7 +13,7 @@ from pyunifiprotect.data import (
|
||||
Sensor,
|
||||
SmartDetectObjectType,
|
||||
)
|
||||
from pyunifiprotect.data.nvr import EventMetadata
|
||||
from pyunifiprotect.data.nvr import EventMetadata, LicensePlateMetadata
|
||||
|
||||
from homeassistant.components.unifiprotect.const import (
|
||||
ATTR_EVENT_SCORE,
|
||||
@@ -62,11 +62,11 @@ async def test_sensor_camera_remove(
|
||||
|
||||
ufp.api.bootstrap.nvr.system_info.ustorage = None
|
||||
await init_entry(hass, ufp, [doorbell, unadopted_camera])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 25, 12)
|
||||
assert_entity_counts(hass, Platform.SENSOR, 26, 13)
|
||||
await remove_entities(hass, ufp, [doorbell, unadopted_camera])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 12, 9)
|
||||
await adopt_devices(hass, ufp, [doorbell, unadopted_camera])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 25, 12)
|
||||
assert_entity_counts(hass, Platform.SENSOR, 26, 13)
|
||||
|
||||
|
||||
async def test_sensor_sensor_remove(
|
||||
@@ -318,7 +318,7 @@ async def test_sensor_setup_camera(
|
||||
"""Test sensor entity setup for camera devices."""
|
||||
|
||||
await init_entry(hass, ufp, [doorbell])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 25, 12)
|
||||
assert_entity_counts(hass, Platform.SENSOR, 26, 13)
|
||||
|
||||
entity_registry = er.async_get(hass)
|
||||
|
||||
@@ -424,7 +424,7 @@ async def test_sensor_setup_camera_with_last_trip_time(
|
||||
"""Test sensor entity setup for camera devices with last trip time."""
|
||||
|
||||
await init_entry(hass, ufp, [doorbell])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 25, 25)
|
||||
assert_entity_counts(hass, Platform.SENSOR, 26, 26)
|
||||
|
||||
entity_registry = er.async_get(hass)
|
||||
|
||||
@@ -452,7 +452,7 @@ async def test_sensor_update_motion(
|
||||
"""Test sensor motion entity."""
|
||||
|
||||
await init_entry(hass, ufp, [doorbell])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 25, 12)
|
||||
assert_entity_counts(hass, Platform.SENSOR, 26, 13)
|
||||
|
||||
_, entity_id = ids_from_device_description(
|
||||
Platform.SENSOR, doorbell, MOTION_SENSORS[0]
|
||||
@@ -565,3 +565,54 @@ async def test_sensor_update_alarm_with_last_trip_time(
|
||||
== (fixed_now - timedelta(hours=1)).replace(microsecond=0).isoformat()
|
||||
)
|
||||
assert state.attributes[ATTR_ATTRIBUTION] == DEFAULT_ATTRIBUTION
|
||||
|
||||
|
||||
async def test_camera_update_licenseplate(
|
||||
hass: HomeAssistant, ufp: MockUFPFixture, camera: Camera, fixed_now: datetime
|
||||
):
|
||||
"""Test sensor motion entity."""
|
||||
|
||||
camera.feature_flags.smart_detect_types.append(SmartDetectObjectType.LICENSE_PLATE)
|
||||
camera.feature_flags.has_smart_detect = True
|
||||
camera.smart_detect_settings.object_types.append(
|
||||
SmartDetectObjectType.LICENSE_PLATE
|
||||
)
|
||||
|
||||
await init_entry(hass, ufp, [camera])
|
||||
assert_entity_counts(hass, Platform.SENSOR, 24, 13)
|
||||
|
||||
_, entity_id = ids_from_device_description(
|
||||
Platform.SENSOR, camera, MOTION_SENSORS[1]
|
||||
)
|
||||
|
||||
event_metadata = EventMetadata(
|
||||
license_plate=LicensePlateMetadata(name="ABCD1234", confidence_level=95)
|
||||
)
|
||||
event = Event(
|
||||
id="test_event_id",
|
||||
type=EventType.SMART_DETECT,
|
||||
start=fixed_now - timedelta(seconds=1),
|
||||
end=None,
|
||||
score=100,
|
||||
smart_detect_types=[SmartDetectObjectType.LICENSE_PLATE],
|
||||
smart_detect_event_ids=[],
|
||||
metadata=event_metadata,
|
||||
api=ufp.api,
|
||||
)
|
||||
|
||||
new_camera = camera.copy()
|
||||
new_camera.is_smart_detected = True
|
||||
new_camera.last_smart_detect_event_id = event.id
|
||||
|
||||
mock_msg = Mock()
|
||||
mock_msg.changed_data = {}
|
||||
mock_msg.new_obj = new_camera
|
||||
|
||||
ufp.api.bootstrap.cameras = {new_camera.id: new_camera}
|
||||
ufp.api.bootstrap.events = {event.id: event}
|
||||
ufp.ws_msg(mock_msg)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "ABCD1234"
|
||||
|
||||
Reference in New Issue
Block a user