mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Set friendly name of utility meter select entity when configured through YAML (#128267)
* set select friendly name in YAML * backward compatibility added * clean * cleaner backward compatibility approach * don't introduce default unique_id * split test according to review
This commit is contained in:
parent
1e42a38473
commit
83a1b06b56
@ -6,7 +6,7 @@ import logging
|
|||||||
|
|
||||||
from homeassistant.components.select import SelectEntity
|
from homeassistant.components.select import SelectEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import CONF_UNIQUE_ID
|
from homeassistant.const import CONF_NAME, CONF_UNIQUE_ID
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device import async_device_info_to_link_from_entity
|
from homeassistant.helpers.device import async_device_info_to_link_from_entity
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
@ -36,9 +36,9 @@ async def async_setup_entry(
|
|||||||
)
|
)
|
||||||
|
|
||||||
tariff_select = TariffSelect(
|
tariff_select = TariffSelect(
|
||||||
name,
|
name=name,
|
||||||
tariffs,
|
tariffs=tariffs,
|
||||||
unique_id,
|
unique_id=unique_id,
|
||||||
device_info=device_info,
|
device_info=device_info,
|
||||||
)
|
)
|
||||||
async_add_entities([tariff_select])
|
async_add_entities([tariff_select])
|
||||||
@ -62,13 +62,15 @@ async def async_setup_platform(
|
|||||||
conf_meter_unique_id: str | None = hass.data[DATA_UTILITY][meter].get(
|
conf_meter_unique_id: str | None = hass.data[DATA_UTILITY][meter].get(
|
||||||
CONF_UNIQUE_ID
|
CONF_UNIQUE_ID
|
||||||
)
|
)
|
||||||
|
conf_meter_name = hass.data[DATA_UTILITY][meter].get(CONF_NAME, meter)
|
||||||
|
|
||||||
async_add_entities(
|
async_add_entities(
|
||||||
[
|
[
|
||||||
TariffSelect(
|
TariffSelect(
|
||||||
meter,
|
name=conf_meter_name,
|
||||||
discovery_info[CONF_TARIFFS],
|
tariffs=discovery_info[CONF_TARIFFS],
|
||||||
conf_meter_unique_id,
|
yaml_slug=meter,
|
||||||
|
unique_id=conf_meter_unique_id,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -82,12 +84,16 @@ class TariffSelect(SelectEntity, RestoreEntity):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
name,
|
name,
|
||||||
tariffs,
|
tariffs: list[str],
|
||||||
unique_id,
|
*,
|
||||||
|
yaml_slug: str | None = None,
|
||||||
|
unique_id: str | None = None,
|
||||||
device_info: DeviceInfo | None = None,
|
device_info: DeviceInfo | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize a tariff selector."""
|
"""Initialize a tariff selector."""
|
||||||
self._attr_name = name
|
self._attr_name = name
|
||||||
|
if yaml_slug: # Backwards compatibility with YAML configuration entries
|
||||||
|
self.entity_id = f"select.{yaml_slug}"
|
||||||
self._attr_unique_id = unique_id
|
self._attr_unique_id = unique_id
|
||||||
self._attr_device_info = device_info
|
self._attr_device_info = device_info
|
||||||
self._current_tariff: str | None = None
|
self._current_tariff: str | None = None
|
||||||
|
@ -3,10 +3,72 @@
|
|||||||
from homeassistant.components.utility_meter.const import DOMAIN
|
from homeassistant.components.utility_meter.const import DOMAIN
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
|
||||||
|
async def test_select_entity_name_config_entry(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
|
"""Test for Utility Meter select platform."""
|
||||||
|
|
||||||
|
config_entry_config = {
|
||||||
|
"cycle": "none",
|
||||||
|
"delta_values": False,
|
||||||
|
"name": "Energy bill",
|
||||||
|
"net_consumption": False,
|
||||||
|
"offset": 0,
|
||||||
|
"periodically_resetting": True,
|
||||||
|
"source": "sensor.energy",
|
||||||
|
"tariffs": ["peak", "offpeak"],
|
||||||
|
}
|
||||||
|
|
||||||
|
source_config_entry = MockConfigEntry()
|
||||||
|
source_config_entry.add_to_hass(hass)
|
||||||
|
utility_meter_config_entry = MockConfigEntry(
|
||||||
|
data={},
|
||||||
|
domain=DOMAIN,
|
||||||
|
options=config_entry_config,
|
||||||
|
title=config_entry_config["name"],
|
||||||
|
)
|
||||||
|
|
||||||
|
utility_meter_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
assert await hass.config_entries.async_setup(utility_meter_config_entry.entry_id)
|
||||||
|
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("select.energy_bill")
|
||||||
|
assert state is not None
|
||||||
|
assert state.attributes.get("friendly_name") == "Energy bill"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_select_entity_name_yaml(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
|
"""Test for Utility Meter select platform."""
|
||||||
|
|
||||||
|
yaml_config = {
|
||||||
|
"utility_meter": {
|
||||||
|
"energy_bill": {
|
||||||
|
"name": "Energy bill",
|
||||||
|
"source": "sensor.energy",
|
||||||
|
"tariffs": ["peak", "offpeak"],
|
||||||
|
"unique_id": "1234abcd",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert await async_setup_component(hass, DOMAIN, yaml_config)
|
||||||
|
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("select.energy_bill")
|
||||||
|
assert state is not None
|
||||||
|
assert state.attributes.get("friendly_name") == "Energy bill"
|
||||||
|
|
||||||
|
|
||||||
async def test_device_id(
|
async def test_device_id(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_registry: dr.DeviceRegistry,
|
device_registry: dr.DeviceRegistry,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user