mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Move list to dict in utility-meter discovery (#63808)
* Move list to dict in utility-meter discovery * Reuse name variable Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
parent
c109d59862
commit
58a53046f2
@ -7,11 +7,13 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
|
||||
from homeassistant.const import CONF_NAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import discovery
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||
from homeassistant.helpers.entity_component import EntityComponent
|
||||
from homeassistant.helpers.restore_state import RestoreEntity
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
ATTR_TARIFF,
|
||||
@ -101,13 +103,13 @@ CONFIG_SCHEMA = vol.Schema(
|
||||
)
|
||||
|
||||
|
||||
async def async_setup(hass, config):
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
"""Set up an Utility Meter."""
|
||||
component = EntityComponent(_LOGGER, DOMAIN, hass)
|
||||
hass.data[DATA_UTILITY] = {}
|
||||
register_services = False
|
||||
|
||||
for meter, conf in config.get(DOMAIN).items():
|
||||
for meter, conf in config[DOMAIN].items():
|
||||
_LOGGER.debug("Setup %s.%s", DOMAIN, meter)
|
||||
|
||||
hass.data[DATA_UTILITY][meter] = conf
|
||||
@ -115,12 +117,13 @@ async def async_setup(hass, config):
|
||||
|
||||
if not conf[CONF_TARIFFS]:
|
||||
# only one entity is required
|
||||
name = conf.get(CONF_NAME, meter)
|
||||
hass.async_create_task(
|
||||
discovery.async_load_platform(
|
||||
hass,
|
||||
SENSOR_DOMAIN,
|
||||
DOMAIN,
|
||||
[{CONF_METER: meter, CONF_NAME: conf.get(CONF_NAME, meter)}],
|
||||
{name: {CONF_METER: meter, CONF_NAME: name}},
|
||||
config,
|
||||
)
|
||||
)
|
||||
@ -134,15 +137,15 @@ async def async_setup(hass, config):
|
||||
)
|
||||
|
||||
# add one meter for each tariff
|
||||
tariff_confs = []
|
||||
tariff_confs = {}
|
||||
for tariff in conf[CONF_TARIFFS]:
|
||||
tariff_confs.append(
|
||||
{
|
||||
CONF_METER: meter,
|
||||
CONF_NAME: f"{meter} {tariff}",
|
||||
CONF_TARIFF: tariff,
|
||||
}
|
||||
)
|
||||
name = f"{meter} {tariff}"
|
||||
tariff_confs[name] = {
|
||||
CONF_METER: meter,
|
||||
CONF_NAME: name,
|
||||
CONF_TARIFF: tariff,
|
||||
}
|
||||
|
||||
hass.async_create_task(
|
||||
discovery.async_load_platform(
|
||||
hass, SENSOR_DOMAIN, DOMAIN, tariff_confs, config
|
||||
|
@ -1,4 +1,6 @@
|
||||
"""Utility meter from sensors providing raw data."""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from decimal import Decimal, DecimalException, InvalidOperation
|
||||
import logging
|
||||
@ -21,14 +23,16 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_platform
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.event import (
|
||||
async_track_point_in_time,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.restore_state import RestoreEntity
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
from .const import (
|
||||
@ -88,14 +92,19 @@ PAUSED = "paused"
|
||||
COLLECTING = "collecting"
|
||||
|
||||
|
||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||
async def async_setup_platform(
|
||||
hass: HomeAssistant,
|
||||
config: ConfigType,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
discovery_info: DiscoveryInfoType | None = None,
|
||||
) -> None:
|
||||
"""Set up the utility meter sensor."""
|
||||
if discovery_info is None:
|
||||
_LOGGER.error("This platform is only available through discovery")
|
||||
return
|
||||
|
||||
meters = []
|
||||
for conf in discovery_info:
|
||||
for conf in discovery_info.values():
|
||||
meter = conf[CONF_METER]
|
||||
conf_meter_source = hass.data[DATA_UTILITY][meter][CONF_SOURCE_SENSOR]
|
||||
conf_meter_type = hass.data[DATA_UTILITY][meter].get(CONF_METER_TYPE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user