1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 21:06:19 +00:00

Add unique_id for derivative (#157055)

This commit is contained in:
karwosts
2025-11-22 10:25:46 -08:00
committed by GitHub
parent 931b2c2db0
commit 263839a6c0
2 changed files with 27 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
CONF_NAME,
CONF_SOURCE,
CONF_UNIQUE_ID,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
UnitOfTime,
@@ -85,6 +86,7 @@ DEFAULT_TIME_WINDOW = 0
PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
{
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_UNIQUE_ID): cv.string,
vol.Required(CONF_SOURCE): cv.entity_id,
vol.Optional(CONF_ROUND_DIGITS, default=DEFAULT_ROUND): vol.Coerce(int),
vol.Optional(CONF_UNIT_PREFIX, default=None): vol.In(UNIT_PREFIXES),
@@ -154,7 +156,7 @@ async def async_setup_platform(
unit_of_measurement=config.get(CONF_UNIT),
unit_prefix=config[CONF_UNIT_PREFIX],
unit_time=config[CONF_UNIT_TIME],
unique_id=None,
unique_id=config.get(CONF_UNIQUE_ID),
max_sub_interval=config.get(CONF_MAX_SUB_INTERVAL),
)

View File

@@ -998,3 +998,27 @@ async def test_source_unit_change(
state = hass.states.get(entity_id)
assert state.state == "8.000"
assert state.attributes.get("unit_of_measurement") == "dogs/s"
async def test_unique_id(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
) -> None:
"""Test YAML-based derivative with unique id."""
source_id = "sensor.source"
config = {
"sensor": {
"platform": "derivative",
"name": "derivative",
"source": source_id,
"unique_id": "my unique id",
}
}
assert await async_setup_component(hass, "sensor", config)
await hass.async_block_till_done()
entity_id = "sensor.derivative"
entry = entity_registry.async_get(entity_id)
assert entry
assert entry.unique_id == "my unique id"