197 files
This commit is contained in:
@@ -389,9 +389,9 @@ def create_grouped_energy_sensor(
|
||||
) -> EnergySensor:
|
||||
name = generate_energy_sensor_name(sensor_config, group_name)
|
||||
unique_id = sensor_config.get(CONF_UNIQUE_ID)
|
||||
energy_unique_id = None
|
||||
if unique_id:
|
||||
energy_unique_id = f"{unique_id}_energy"
|
||||
if not unique_id:
|
||||
unique_id = generate_unique_id(sensor_config)
|
||||
energy_unique_id = f"{unique_id}_energy"
|
||||
entity_id = generate_energy_sensor_entity_id(
|
||||
hass,
|
||||
sensor_config,
|
||||
|
||||
@@ -43,6 +43,11 @@ class SensorType(StrEnum):
|
||||
TRACKED = "tracked"
|
||||
UNTRACKED = "untracked"
|
||||
|
||||
@property
|
||||
def label(self) -> str:
|
||||
"""Capitalized variant, used in the friendly names of the created sensors."""
|
||||
return self.value.capitalize()
|
||||
|
||||
|
||||
async def find_auto_tracked_power_entities(hass: HomeAssistant, exclude_entities: set[str] | None = None) -> set[str]:
|
||||
"""Find tracked power entities."""
|
||||
@@ -124,7 +129,7 @@ class TrackedPowerSensorFactory:
|
||||
self.config,
|
||||
energy_sensor,
|
||||
utility_meter_config={CONF_UTILITY_METER_NET_CONSUMPTION: True, **self.config},
|
||||
cost_name=str(sensor_type),
|
||||
cost_name=sensor_type.label,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -186,7 +191,7 @@ class TrackedPowerSensorFactory:
|
||||
_LOGGER.debug("Creating tracked grouped power sensor, entities: %s", tracked_entities)
|
||||
unique_id = f"{unique_id}_{sensor_type}_power"
|
||||
entity_id = generate_power_sensor_entity_id(self.hass, self.config, name=sensor_type, unique_id=unique_id)
|
||||
name = generate_power_sensor_name(self.config, name=sensor_type)
|
||||
name = generate_power_sensor_name(self.config, name=sensor_type.label)
|
||||
return GroupedPowerSensor(
|
||||
self.hass,
|
||||
sensor_config=self.config,
|
||||
@@ -207,7 +212,7 @@ class TrackedPowerSensorFactory:
|
||||
_LOGGER.debug("Creating untracked grouped power sensor")
|
||||
unique_id = f"{unique_id}_{sensor_type}_power"
|
||||
entity_id = generate_power_sensor_entity_id(self.hass, self.config, name=sensor_type, unique_id=unique_id)
|
||||
name = generate_power_sensor_name(self.config, name=sensor_type)
|
||||
name = generate_power_sensor_name(self.config, name=sensor_type.label)
|
||||
return SubtractGroupSensor(
|
||||
self.hass,
|
||||
entity_id=entity_id,
|
||||
@@ -226,7 +231,7 @@ class TrackedPowerSensorFactory:
|
||||
"""Create an energy sensor for a power sensor."""
|
||||
_LOGGER.debug("Creating %s grouped energy sensor", sensor_type)
|
||||
unique_id = f"{power_sensor.unique_id}_{sensor_type}_energy"
|
||||
name = generate_energy_sensor_name(self.config, sensor_type)
|
||||
name = generate_energy_sensor_name(self.config, sensor_type.label)
|
||||
entity_id = generate_energy_sensor_entity_id(self.hass, self.config, name=sensor_type, unique_id=unique_id)
|
||||
return VirtualEnergySensor(
|
||||
hass=self.hass,
|
||||
|
||||
@@ -242,7 +242,7 @@ async def _get_power_profile(
|
||||
|
||||
power_profile = None
|
||||
try:
|
||||
model_info = await discovery_manager.extract_model_info_from_device_info(source_entity.entity_entry)
|
||||
model_info = discovery_manager.extract_model_info(source_entity)
|
||||
power_profile = await get_power_profile(
|
||||
hass,
|
||||
sensor_config,
|
||||
@@ -482,7 +482,7 @@ class VirtualPowerSensor(PowerSensor, SensorEntity):
|
||||
await self._strategy_instance.on_start(hass)
|
||||
|
||||
entities = self._track_entities
|
||||
if (not entities and self._source_entity.entity_id == DUMMY_ENTITY_ID) or not entities:
|
||||
if (not entities and self._source_entity.is_dummy) or not entities:
|
||||
entities.add(DUMMY_ENTITY_ID)
|
||||
for entity_id in entities:
|
||||
new_state = (
|
||||
@@ -558,7 +558,7 @@ class VirtualPowerSensor(PowerSensor, SensorEntity):
|
||||
)
|
||||
entities_to_track.extend(self._sub_profile_selector.get_tracking_entities())
|
||||
|
||||
if self._source_entity.entity_id != DUMMY_ENTITY_ID:
|
||||
if not self._source_entity.is_dummy:
|
||||
entities_to_track.append(self._source_entity.entity_id)
|
||||
|
||||
if self._availability_entity and self._availability_entity not in entities_to_track:
|
||||
@@ -681,10 +681,7 @@ class VirtualPowerSensor(PowerSensor, SensorEntity):
|
||||
return self._apply_power_adjustments(power, standby_power)
|
||||
|
||||
def _resolve_calculation_state(self, state: State) -> State | None:
|
||||
if (
|
||||
self._source_entity.entity_id == DUMMY_ENTITY_ID
|
||||
and self._calculation_strategy != CalculationStrategy.MULTI_SWITCH
|
||||
):
|
||||
if self._source_entity.is_dummy and self._calculation_strategy != CalculationStrategy.MULTI_SWITCH:
|
||||
if self._availability_entity and state.entity_id == self._availability_entity:
|
||||
return State(DUMMY_ENTITY_ID, STATE_ON)
|
||||
return state
|
||||
|
||||
Reference in New Issue
Block a user