updated apps
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from custom_components.powercalc.common import SourceEntity
|
||||
from custom_components.powercalc.const import CONF_CREATE_COST_SENSOR
|
||||
|
||||
from .cost import create_cost_sensor
|
||||
from .energy import EnergySensor
|
||||
from .utility_meter import create_utility_meters
|
||||
|
||||
|
||||
def create_energy_related_sensors(
|
||||
hass: HomeAssistant,
|
||||
sensor_config: ConfigType,
|
||||
energy_sensor: EnergySensor,
|
||||
source_entity: SourceEntity | None = None,
|
||||
config_entry: ConfigEntry | None = None,
|
||||
utility_meter_config: ConfigType | None = None,
|
||||
cost_name: str | None = None,
|
||||
) -> list[Entity]:
|
||||
"""Create optional utility meters and cost sensor for an energy sensor.
|
||||
|
||||
When cost sensors are enabled, a cost sensor is created for the energy sensor and,
|
||||
when utility meters are enabled as well, one additional cost sensor per utility meter.
|
||||
"""
|
||||
entities: list[Entity] = []
|
||||
meter_config = sensor_config if utility_meter_config is None else utility_meter_config
|
||||
utility_meters = create_utility_meters(hass, energy_sensor, meter_config, config_entry)
|
||||
entities.extend(utility_meters)
|
||||
|
||||
cost_sensor = create_cost_sensor_if_needed(hass, sensor_config, energy_sensor, source_entity, cost_name)
|
||||
if cost_sensor:
|
||||
entities.append(cost_sensor)
|
||||
# A cost sensor per utility meter, so each meter cycle (daily, monthly, ...) is priced individually.
|
||||
for utility_meter in utility_meters:
|
||||
meter_name = utility_meter.name if isinstance(utility_meter.name, str) else None
|
||||
# The utility meter resets each cycle, so the cost sensor must reset along with it.
|
||||
meter_cost_sensor = create_cost_sensor(
|
||||
hass,
|
||||
sensor_config,
|
||||
utility_meter,
|
||||
source_entity,
|
||||
meter_name,
|
||||
reset_on_source_reset=True,
|
||||
)
|
||||
if meter_cost_sensor:
|
||||
entities.append(meter_cost_sensor)
|
||||
|
||||
return entities
|
||||
|
||||
|
||||
def create_cost_sensor_if_needed(
|
||||
hass: HomeAssistant,
|
||||
sensor_config: ConfigType,
|
||||
energy_sensor: EnergySensor,
|
||||
source_entity: SourceEntity | None = None,
|
||||
name: str | None = None,
|
||||
) -> Entity | None:
|
||||
"""Create a cost sensor when enabled and configured."""
|
||||
if not sensor_config.get(CONF_CREATE_COST_SENSOR):
|
||||
return None
|
||||
return create_cost_sensor(hass, sensor_config, energy_sensor, source_entity, name)
|
||||
Reference in New Issue
Block a user