mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Use CONF_NAME consistently in utility meter sensors with and without tariffs (#69152)
* apply name to tariff based sensors too * change name without breaking entity_id * address comments
This commit is contained in:
parent
c29a5dc3fd
commit
9dfd37c60b
@ -138,13 +138,12 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
|
|
||||||
if not conf[CONF_TARIFFS]:
|
if not conf[CONF_TARIFFS]:
|
||||||
# only one entity is required
|
# only one entity is required
|
||||||
name = conf.get(CONF_NAME, meter)
|
|
||||||
hass.async_create_task(
|
hass.async_create_task(
|
||||||
discovery.async_load_platform(
|
discovery.async_load_platform(
|
||||||
hass,
|
hass,
|
||||||
SENSOR_DOMAIN,
|
SENSOR_DOMAIN,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
{name: {CONF_METER: meter, CONF_NAME: name}},
|
{meter: {CONF_METER: meter}},
|
||||||
config,
|
config,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -170,7 +169,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
name = f"{meter} {tariff}"
|
name = f"{meter} {tariff}"
|
||||||
tariff_confs[name] = {
|
tariff_confs[name] = {
|
||||||
CONF_METER: meter,
|
CONF_METER: meter,
|
||||||
CONF_NAME: name,
|
|
||||||
CONF_TARIFF: tariff,
|
CONF_TARIFF: tariff,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ from homeassistant.helpers.restore_state import RestoreEntity
|
|||||||
from homeassistant.helpers.start import async_at_start
|
from homeassistant.helpers.start import async_at_start
|
||||||
from homeassistant.helpers.template import is_number
|
from homeassistant.helpers.template import is_number
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
from homeassistant.util import slugify
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -194,6 +195,17 @@ async def async_setup_platform(
|
|||||||
if conf_meter_unique_id
|
if conf_meter_unique_id
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
conf_meter_name = hass.data[DATA_UTILITY][meter].get(CONF_NAME, meter)
|
||||||
|
conf_sensor_tariff = conf.get(CONF_TARIFF)
|
||||||
|
|
||||||
|
suggested_entity_id = None
|
||||||
|
if conf_sensor_tariff:
|
||||||
|
conf_sensor_name = f"{conf_meter_name} {conf_sensor_tariff}"
|
||||||
|
slug = slugify(f"{meter} {conf_sensor_tariff}")
|
||||||
|
suggested_entity_id = f"sensor.{slug}"
|
||||||
|
else:
|
||||||
|
conf_sensor_name = conf_meter_name
|
||||||
|
|
||||||
conf_meter_type = hass.data[DATA_UTILITY][meter].get(CONF_METER_TYPE)
|
conf_meter_type = hass.data[DATA_UTILITY][meter].get(CONF_METER_TYPE)
|
||||||
conf_meter_offset = hass.data[DATA_UTILITY][meter][CONF_METER_OFFSET]
|
conf_meter_offset = hass.data[DATA_UTILITY][meter][CONF_METER_OFFSET]
|
||||||
conf_meter_delta_values = hass.data[DATA_UTILITY][meter][
|
conf_meter_delta_values = hass.data[DATA_UTILITY][meter][
|
||||||
@ -211,13 +223,14 @@ async def async_setup_platform(
|
|||||||
delta_values=conf_meter_delta_values,
|
delta_values=conf_meter_delta_values,
|
||||||
meter_offset=conf_meter_offset,
|
meter_offset=conf_meter_offset,
|
||||||
meter_type=conf_meter_type,
|
meter_type=conf_meter_type,
|
||||||
name=conf.get(CONF_NAME),
|
name=conf_sensor_name,
|
||||||
net_consumption=conf_meter_net_consumption,
|
net_consumption=conf_meter_net_consumption,
|
||||||
parent_meter=meter,
|
parent_meter=meter,
|
||||||
source_entity=conf_meter_source,
|
source_entity=conf_meter_source,
|
||||||
tariff_entity=conf_meter_tariff_entity,
|
tariff_entity=conf_meter_tariff_entity,
|
||||||
tariff=conf_sensor_tariff,
|
tariff=conf_sensor_tariff,
|
||||||
unique_id=conf_sensor_unique_id,
|
unique_id=conf_sensor_unique_id,
|
||||||
|
suggested_entity_id=suggested_entity_id,
|
||||||
)
|
)
|
||||||
meters.append(meter_sensor)
|
meters.append(meter_sensor)
|
||||||
|
|
||||||
@ -251,9 +264,11 @@ class UtilityMeterSensor(RestoreEntity, SensorEntity):
|
|||||||
tariff_entity,
|
tariff_entity,
|
||||||
tariff,
|
tariff,
|
||||||
unique_id,
|
unique_id,
|
||||||
|
suggested_entity_id=None,
|
||||||
):
|
):
|
||||||
"""Initialize the Utility Meter sensor."""
|
"""Initialize the Utility Meter sensor."""
|
||||||
self._attr_unique_id = unique_id
|
self._attr_unique_id = unique_id
|
||||||
|
self.entity_id = suggested_entity_id
|
||||||
self._parent_meter = parent_meter
|
self._parent_meter = parent_meter
|
||||||
self._sensor_source_id = source_entity
|
self._sensor_source_id = source_entity
|
||||||
self._state = None
|
self._state = None
|
||||||
|
@ -342,6 +342,61 @@ async def test_unique_id(hass):
|
|||||||
assert ent_reg.entities["sensor.energy_bill_onpeak"].unique_id == "1_onpeak"
|
assert ent_reg.entities["sensor.energy_bill_onpeak"].unique_id == "1_onpeak"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"yaml_config,entity_id, name",
|
||||||
|
(
|
||||||
|
(
|
||||||
|
{
|
||||||
|
"utility_meter": {
|
||||||
|
"energy_bill": {
|
||||||
|
"name": "dog",
|
||||||
|
"source": "sensor.energy",
|
||||||
|
"tariffs": ["onpeak", "midpeak", "offpeak"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sensor.energy_bill_onpeak",
|
||||||
|
"dog onpeak",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
{
|
||||||
|
"utility_meter": {
|
||||||
|
"energy_bill": {
|
||||||
|
"name": "dog",
|
||||||
|
"source": "sensor.energy",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sensor.dog",
|
||||||
|
"dog",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
{
|
||||||
|
"utility_meter": {
|
||||||
|
"energy_bill": {
|
||||||
|
"source": "sensor.energy",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sensor.energy_bill",
|
||||||
|
"energy_bill",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
async def test_entity_name(hass, yaml_config, entity_id, name):
|
||||||
|
"""Test utility sensor state initializtion."""
|
||||||
|
assert await async_setup_component(hass, DOMAIN, yaml_config)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state is not None
|
||||||
|
assert state.state == STATE_UNKNOWN
|
||||||
|
assert state.name == name
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"yaml_config,config_entry_configs",
|
"yaml_config,config_entry_configs",
|
||||||
(
|
(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user