From 9ed4bcf9659f5e7169306c0a19d1e4f976ee02c8 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Mon, 21 Feb 2022 19:00:09 +0000 Subject: [PATCH] Add unique_id to the filter component (#65010) * Optional manually defined uniqueid * move to _attr --- homeassistant/components/filter/sensor.py | 8 ++++++-- tests/components/filter/test_sensor.py | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/filter/sensor.py b/homeassistant/components/filter/sensor.py index 46d142fc962..d2ad3ec313c 100644 --- a/homeassistant/components/filter/sensor.py +++ b/homeassistant/components/filter/sensor.py @@ -29,6 +29,7 @@ from homeassistant.const import ( ATTR_UNIT_OF_MEASUREMENT, CONF_ENTITY_ID, CONF_NAME, + CONF_UNIQUE_ID, STATE_UNAVAILABLE, STATE_UNKNOWN, ) @@ -150,6 +151,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( cv.entity_domain(INPUT_NUMBER_DOMAIN), ), vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_UNIQUE_ID): cv.string, vol.Required(CONF_FILTERS): vol.All( cv.ensure_list, [ @@ -178,6 +180,7 @@ async def async_setup_platform( await async_setup_reload_service(hass, DOMAIN, PLATFORMS) name = config.get(CONF_NAME) + unique_id = config.get(CONF_UNIQUE_ID) entity_id = config.get(CONF_ENTITY_ID) filters = [ @@ -185,15 +188,16 @@ async def async_setup_platform( for _filter in config[CONF_FILTERS] ] - async_add_entities([SensorFilter(name, entity_id, filters)]) + async_add_entities([SensorFilter(name, unique_id, entity_id, filters)]) class SensorFilter(SensorEntity): """Representation of a Filter Sensor.""" - def __init__(self, name, entity_id, filters): + def __init__(self, name, unique_id, entity_id, filters): """Initialize the sensor.""" self._name = name + self._attr_unique_id = unique_id self._entity = entity_id self._unit_of_measurement = None self._state = None diff --git a/tests/components/filter/test_sensor.py b/tests/components/filter/test_sensor.py index b42fc3fa9fe..b044b2c08fa 100644 --- a/tests/components/filter/test_sensor.py +++ b/tests/components/filter/test_sensor.py @@ -26,6 +26,7 @@ from homeassistant.const import ( STATE_UNKNOWN, ) import homeassistant.core as ha +from homeassistant.helpers import entity_registry as er from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util @@ -256,6 +257,7 @@ async def test_setup(hass): "sensor": { "platform": "filter", "name": "test", + "unique_id": "uniqueid_sensor_test", "entity_id": "sensor.test_monitored", "filters": [ {"filter": "outlier", "window_size": 10, "radius": 4.0}, @@ -285,6 +287,12 @@ async def test_setup(hass): assert state.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL_INCREASING assert state.state == "1.0" + entity_reg = er.async_get(hass) + entity_id = entity_reg.async_get_entity_id( + "sensor", DOMAIN, "uniqueid_sensor_test" + ) + assert entity_id == "sensor.test" + async def test_invalid_state(hass): """Test if filter attributes are inherited."""