mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 11:47:06 +00:00
Add unique_id to the filter component (#65010)
* Optional manually defined uniqueid * move to _attr
This commit is contained in:
parent
2456d8a401
commit
9ed4bcf965
@ -29,6 +29,7 @@ from homeassistant.const import (
|
|||||||
ATTR_UNIT_OF_MEASUREMENT,
|
ATTR_UNIT_OF_MEASUREMENT,
|
||||||
CONF_ENTITY_ID,
|
CONF_ENTITY_ID,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
CONF_UNIQUE_ID,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
STATE_UNKNOWN,
|
STATE_UNKNOWN,
|
||||||
)
|
)
|
||||||
@ -150,6 +151,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
cv.entity_domain(INPUT_NUMBER_DOMAIN),
|
cv.entity_domain(INPUT_NUMBER_DOMAIN),
|
||||||
),
|
),
|
||||||
vol.Optional(CONF_NAME): cv.string,
|
vol.Optional(CONF_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||||
vol.Required(CONF_FILTERS): vol.All(
|
vol.Required(CONF_FILTERS): vol.All(
|
||||||
cv.ensure_list,
|
cv.ensure_list,
|
||||||
[
|
[
|
||||||
@ -178,6 +180,7 @@ async def async_setup_platform(
|
|||||||
await async_setup_reload_service(hass, DOMAIN, PLATFORMS)
|
await async_setup_reload_service(hass, DOMAIN, PLATFORMS)
|
||||||
|
|
||||||
name = config.get(CONF_NAME)
|
name = config.get(CONF_NAME)
|
||||||
|
unique_id = config.get(CONF_UNIQUE_ID)
|
||||||
entity_id = config.get(CONF_ENTITY_ID)
|
entity_id = config.get(CONF_ENTITY_ID)
|
||||||
|
|
||||||
filters = [
|
filters = [
|
||||||
@ -185,15 +188,16 @@ async def async_setup_platform(
|
|||||||
for _filter in config[CONF_FILTERS]
|
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):
|
class SensorFilter(SensorEntity):
|
||||||
"""Representation of a Filter Sensor."""
|
"""Representation of a Filter Sensor."""
|
||||||
|
|
||||||
def __init__(self, name, entity_id, filters):
|
def __init__(self, name, unique_id, entity_id, filters):
|
||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
self._name = name
|
self._name = name
|
||||||
|
self._attr_unique_id = unique_id
|
||||||
self._entity = entity_id
|
self._entity = entity_id
|
||||||
self._unit_of_measurement = None
|
self._unit_of_measurement = None
|
||||||
self._state = None
|
self._state = None
|
||||||
|
@ -26,6 +26,7 @@ from homeassistant.const import (
|
|||||||
STATE_UNKNOWN,
|
STATE_UNKNOWN,
|
||||||
)
|
)
|
||||||
import homeassistant.core as ha
|
import homeassistant.core as ha
|
||||||
|
from homeassistant.helpers import entity_registry as er
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
@ -256,6 +257,7 @@ async def test_setup(hass):
|
|||||||
"sensor": {
|
"sensor": {
|
||||||
"platform": "filter",
|
"platform": "filter",
|
||||||
"name": "test",
|
"name": "test",
|
||||||
|
"unique_id": "uniqueid_sensor_test",
|
||||||
"entity_id": "sensor.test_monitored",
|
"entity_id": "sensor.test_monitored",
|
||||||
"filters": [
|
"filters": [
|
||||||
{"filter": "outlier", "window_size": 10, "radius": 4.0},
|
{"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.attributes[ATTR_STATE_CLASS] is SensorStateClass.TOTAL_INCREASING
|
||||||
assert state.state == "1.0"
|
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):
|
async def test_invalid_state(hass):
|
||||||
"""Test if filter attributes are inherited."""
|
"""Test if filter attributes are inherited."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user