From b3990d48d2b7a30a2de0c89581245ba65c50c181 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Wed, 31 May 2023 07:31:02 -0400 Subject: [PATCH] Improve Z-Wave support for Ultraviolet multilevel sensor values (#93848) Improve support for Ultraviolet multilevel sensor values --- homeassistant/components/zwave_js/const.py | 1 + .../components/zwave_js/discovery_data_template.py | 2 ++ homeassistant/components/zwave_js/sensor.py | 7 +++++++ tests/components/zwave_js/test_sensor.py | 7 +++---- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zwave_js/const.py b/homeassistant/components/zwave_js/const.py index 672f8f10e2f..5ee8b300603 100644 --- a/homeassistant/components/zwave_js/const.py +++ b/homeassistant/components/zwave_js/const.py @@ -130,6 +130,7 @@ ENTITY_DESC_KEY_PRESSURE = "pressure" ENTITY_DESC_KEY_SIGNAL_STRENGTH = "signal_strength" ENTITY_DESC_KEY_TEMPERATURE = "temperature" ENTITY_DESC_KEY_TARGET_TEMPERATURE = "target_temperature" +ENTITY_DESC_KEY_UV_INDEX = "uv_index" ENTITY_DESC_KEY_MEASUREMENT = "measurement" ENTITY_DESC_KEY_TOTAL_INCREASING = "total_increasing" diff --git a/homeassistant/components/zwave_js/discovery_data_template.py b/homeassistant/components/zwave_js/discovery_data_template.py index e5a19f9bf2e..7a274df41f2 100644 --- a/homeassistant/components/zwave_js/discovery_data_template.py +++ b/homeassistant/components/zwave_js/discovery_data_template.py @@ -150,6 +150,7 @@ from .const import ( ENTITY_DESC_KEY_TARGET_TEMPERATURE, ENTITY_DESC_KEY_TEMPERATURE, ENTITY_DESC_KEY_TOTAL_INCREASING, + ENTITY_DESC_KEY_UV_INDEX, ENTITY_DESC_KEY_VOLTAGE, ) from .helpers import ZwaveValueID @@ -186,6 +187,7 @@ MULTILEVEL_SENSOR_DEVICE_CLASS_MAP: dict[str, list[MultilevelSensorType]] = { ENTITY_DESC_KEY_SIGNAL_STRENGTH: SIGNAL_STRENGTH_SENSORS, ENTITY_DESC_KEY_TEMPERATURE: TEMPERATURE_SENSORS, ENTITY_DESC_KEY_VOLTAGE: VOLTAGE_SENSORS, + ENTITY_DESC_KEY_UV_INDEX: [MultilevelSensorType.ULTRAVIOLET], } ENERGY_PRODUCTION_UNIT_MAP: dict[str, list[EnergyProductionScaleType]] = { diff --git a/homeassistant/components/zwave_js/sensor.py b/homeassistant/components/zwave_js/sensor.py index 234062111f0..3bb893c303a 100644 --- a/homeassistant/components/zwave_js/sensor.py +++ b/homeassistant/components/zwave_js/sensor.py @@ -32,6 +32,7 @@ from homeassistant.const import ( LIGHT_LUX, PERCENTAGE, SIGNAL_STRENGTH_DECIBELS_MILLIWATT, + UV_INDEX, EntityCategory, UnitOfElectricCurrent, UnitOfElectricPotential, @@ -73,6 +74,7 @@ from .const import ( ENTITY_DESC_KEY_TARGET_TEMPERATURE, ENTITY_DESC_KEY_TEMPERATURE, ENTITY_DESC_KEY_TOTAL_INCREASING, + ENTITY_DESC_KEY_UV_INDEX, ENTITY_DESC_KEY_VOLTAGE, LOGGER, SERVICE_RESET_METER, @@ -321,6 +323,11 @@ ENTITY_DESCRIPTION_KEY_MAP = { ENTITY_DESC_KEY_TOTAL_INCREASING, state_class=SensorStateClass.TOTAL_INCREASING, ), + ENTITY_DESC_KEY_UV_INDEX: SensorEntityDescription( + ENTITY_DESC_KEY_UV_INDEX, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UV_INDEX, + ), } diff --git a/tests/components/zwave_js/test_sensor.py b/tests/components/zwave_js/test_sensor.py index 2bedb88884e..bf6ff36d8f0 100644 --- a/tests/components/zwave_js/test_sensor.py +++ b/tests/components/zwave_js/test_sensor.py @@ -29,6 +29,7 @@ from homeassistant.const import ( PERCENTAGE, STATE_UNAVAILABLE, STATE_UNKNOWN, + UV_INDEX, EntityCategory, UnitOfElectricCurrent, UnitOfElectricPotential, @@ -90,11 +91,9 @@ async def test_numeric_sensor( assert state assert state.state == "0.0" - # TODO: Add UV_INDEX unit of measurement to this sensor - assert ATTR_UNIT_OF_MEASUREMENT not in state.attributes + assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == UV_INDEX assert ATTR_DEVICE_CLASS not in state.attributes - # TODO: Add measurement state class to this sensor - assert ATTR_STATE_CLASS not in state.attributes + assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.MEASUREMENT state = hass.states.get("sensor.hsm200_illuminance")