From 812cb4a9d8d6a42bfaf5722c2461f9b1a73e6970 Mon Sep 17 00:00:00 2001 From: Christopher Bailey Date: Thu, 6 Jan 2022 13:31:25 -0500 Subject: [PATCH] UniFi Protect test sensor followup (#63563) --- .../components/unifiprotect/sensor.py | 106 +++++++++--------- tests/components/unifiprotect/test_sensor.py | 44 ++++++-- 2 files changed, 93 insertions(+), 57 deletions(-) diff --git a/homeassistant/components/unifiprotect/sensor.py b/homeassistant/components/unifiprotect/sensor.py index 8c5c90c8ebe..e46fdeb787b 100644 --- a/homeassistant/components/unifiprotect/sensor.py +++ b/homeassistant/components/unifiprotect/sensor.py @@ -127,24 +127,6 @@ ALL_DEVICES_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( ) CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( - ProtectSensorEntityDescription( - key=_KEY_RX, - name="Received Data", - native_unit_of_measurement=DATA_BYTES, - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - state_class=SensorStateClass.TOTAL_INCREASING, - ufp_value="stats.rx_bytes", - ), - ProtectSensorEntityDescription( - key=_KEY_TX, - name="Transferred Data", - native_unit_of_measurement=DATA_BYTES, - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - state_class=SensorStateClass.TOTAL_INCREASING, - ufp_value="stats.tx_bytes", - ), ProtectSensorEntityDescription( key=_KEY_OLDEST, name="Oldest Recording", @@ -184,6 +166,27 @@ CAMERA_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( ), ) +CAMERA_DISABLED_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( + ProtectSensorEntityDescription( + key=_KEY_RX, + name="Received Data", + native_unit_of_measurement=DATA_BYTES, + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + ufp_value="stats.rx_bytes", + ), + ProtectSensorEntityDescription( + key=_KEY_TX, + name="Transferred Data", + native_unit_of_measurement=DATA_BYTES, + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + ufp_value="stats.tx_bytes", + ), +) + SENSE_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( ProtectSensorEntityDescription( key=_KEY_BATTERY, @@ -229,36 +232,6 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( entity_category=EntityCategory.DIAGNOSTIC, ufp_value="up_since", ), - ProtectSensorEntityDescription( - key=_KEY_CPU, - name="CPU Utilization", - native_unit_of_measurement=PERCENTAGE, - icon="mdi:speedometer", - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - state_class=SensorStateClass.MEASUREMENT, - ufp_value="system_info.cpu.average_load", - ), - ProtectSensorEntityDescription( - key=_KEY_CPU_TEMP, - name="CPU Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=DEVICE_CLASS_TEMPERATURE, - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - state_class=SensorStateClass.MEASUREMENT, - ufp_value="system_info.cpu.temperature", - ), - ProtectSensorEntityDescription( - key=_KEY_MEMORY, - name="Memory Utilization", - native_unit_of_measurement=PERCENTAGE, - icon="mdi:memory", - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - state_class=SensorStateClass.MEASUREMENT, - precision=2, - ), ProtectSensorEntityDescription( key=_KEY_DISK, name="Storage Utilization", @@ -340,6 +313,39 @@ NVR_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( ), ) +NVR_DISABLED_SENSORS: tuple[ProtectSensorEntityDescription, ...] = ( + ProtectSensorEntityDescription( + key=_KEY_CPU, + name="CPU Utilization", + native_unit_of_measurement=PERCENTAGE, + icon="mdi:speedometer", + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, + ufp_value="system_info.cpu.average_load", + ), + ProtectSensorEntityDescription( + key=_KEY_CPU_TEMP, + name="CPU Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=DEVICE_CLASS_TEMPERATURE, + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, + ufp_value="system_info.cpu.temperature", + ), + ProtectSensorEntityDescription( + key=_KEY_MEMORY, + name="Memory Utilization", + native_unit_of_measurement=PERCENTAGE, + icon="mdi:memory", + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, + precision=2, + ), +) + async def async_setup_entry( hass: HomeAssistant, @@ -352,7 +358,7 @@ async def async_setup_entry( data, ProtectDeviceSensor, all_descs=ALL_DEVICES_SENSORS, - camera_descs=CAMERA_SENSORS, + camera_descs=CAMERA_SENSORS + CAMERA_DISABLED_SENSORS, sense_descs=SENSE_SENSORS, ) entities += _async_nvr_entities(data) @@ -366,7 +372,7 @@ def _async_nvr_entities( ) -> list[ProtectDeviceEntity]: entities: list[ProtectDeviceEntity] = [] device = data.api.bootstrap.nvr - for description in NVR_SENSORS: + for description in NVR_SENSORS + NVR_DISABLED_SENSORS: entities.append(ProtectNVRSensor(data, device, description)) _LOGGER.debug("Adding NVR sensor entity %s", description.name) diff --git a/tests/components/unifiprotect/test_sensor.py b/tests/components/unifiprotect/test_sensor.py index 2eea398dd40..49f6dfcd971 100644 --- a/tests/components/unifiprotect/test_sensor.py +++ b/tests/components/unifiprotect/test_sensor.py @@ -12,7 +12,9 @@ from pyunifiprotect.data.nvr import NVR from homeassistant.components.unifiprotect.const import DEFAULT_ATTRIBUTION from homeassistant.components.unifiprotect.sensor import ( ALL_DEVICES_SENSORS, + CAMERA_DISABLED_SENSORS, CAMERA_SENSORS, + NVR_DISABLED_SENSORS, NVR_SENSORS, SENSE_SENSORS, ) @@ -191,9 +193,6 @@ async def test_sensor_setup_nvr( "50.0", "50.0", "50.0", - "50.0", - "50.0", - "50.0", "50", ) for index, description in enumerate(NVR_SENSORS): @@ -214,6 +213,24 @@ async def test_sensor_setup_nvr( assert state.state == expected_values[index] assert state.attributes[ATTR_ATTRIBUTION] == DEFAULT_ATTRIBUTION + expected_values = ("50.0", "50.0", "50.0") + for index, description in enumerate(NVR_DISABLED_SENSORS): + unique_id, entity_id = ids_from_device_description( + Platform.SENSOR, nvr, description + ) + + entity = entity_registry.async_get(entity_id) + assert entity + assert entity.disabled is not description.entity_registry_enabled_default + assert entity.unique_id == unique_id + + await enable_entity(hass, mock_entry.entry.entry_id, entity_id) + + state = hass.states.get(entity_id) + assert state + assert state.state == expected_values[index] + assert state.attributes[ATTR_ATTRIBUTION] == DEFAULT_ATTRIBUTION + async def test_sensor_setup_camera( hass: HomeAssistant, mock_entry: MockEntityFixture, camera: Camera, now: datetime @@ -223,8 +240,6 @@ async def test_sensor_setup_camera( entity_registry = er.async_get(hass) expected_values = ( - "100", - "100", now.replace(second=0, microsecond=0).isoformat(), "100", "100.0", @@ -240,8 +255,23 @@ async def test_sensor_setup_camera( assert entity.disabled is not description.entity_registry_enabled_default assert entity.unique_id == unique_id - if not description.entity_registry_enabled_default: - await enable_entity(hass, mock_entry.entry.entry_id, entity_id) + state = hass.states.get(entity_id) + assert state + assert state.state == expected_values[index] + assert state.attributes[ATTR_ATTRIBUTION] == DEFAULT_ATTRIBUTION + + expected_values = ("100", "100") + for index, description in enumerate(CAMERA_DISABLED_SENSORS): + unique_id, entity_id = ids_from_device_description( + Platform.SENSOR, camera, description + ) + + entity = entity_registry.async_get(entity_id) + assert entity + assert entity.disabled is not description.entity_registry_enabled_default + assert entity.unique_id == unique_id + + await enable_entity(hass, mock_entry.entry.entry_id, entity_id) state = hass.states.get(entity_id) assert state