From 147469d0c79ca008b7c4ad04f8632a53f1057d3a Mon Sep 17 00:00:00 2001 From: Bram Date: Sat, 30 Mar 2024 17:19:39 +0100 Subject: [PATCH 1/3] fix: force_create_energy_sensor should always create an energy sensor --- custom_components/powercalc/sensor.py | 6 ++++- tests/sensors/test_energy.py | 35 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/custom_components/powercalc/sensor.py b/custom_components/powercalc/sensor.py index 68f35eafd..471b5e161 100644 --- a/custom_components/powercalc/sensor.py +++ b/custom_components/powercalc/sensor.py @@ -770,7 +770,11 @@ async def create_individual_sensors( return EntitiesBucket() # Create energy sensor which integrates the power sensor - if sensor_config.get(CONF_CREATE_ENERGY_SENSOR) or CONF_ENERGY_SENSOR_ID in sensor_config: + if ( + sensor_config.get(CONF_CREATE_ENERGY_SENSOR) or + sensor_config.get(CONF_FORCE_ENERGY_SENSOR_CREATION) or + CONF_ENERGY_SENSOR_ID in sensor_config + ): energy_sensor = await create_energy_sensor( hass, sensor_config, diff --git a/tests/sensors/test_energy.py b/tests/sensors/test_energy.py index 1f199190a..22fd785dc 100644 --- a/tests/sensors/test_energy.py +++ b/tests/sensors/test_energy.py @@ -31,6 +31,7 @@ ATTR_ENTITIES, ATTR_SOURCE_DOMAIN, ATTR_SOURCE_ENTITY, + CONF_CREATE_ENERGY_SENSORS, CONF_CREATE_GROUP, CONF_DISABLE_EXTENDED_ATTRIBUTES, CONF_ENERGY_SENSOR_ID, @@ -191,6 +192,40 @@ async def test_force_create_energy_sensor_for_existing_power_sensor( } +async def test_force_create_energy_sensor_overrides_create_energy_sensors_option(hass: HomeAssistant) -> None: + """ + When you use force_energy_sensor_creation, it should override create_energy_sensors option, + and create an energy sensor + """ + mock_registry( + hass, + { + "sensor.existing_power": RegistryEntry( + entity_id="sensor.bedroom_airco_power", + unique_id="1234", + platform="sensor", + device_class=SensorDeviceClass.POWER, + ), + }, + ) + + await run_powercalc_setup( + hass, + { + CONF_POWER_SENSOR_ID: "sensor.bedroom_airco_power", + CONF_FORCE_ENERGY_SENSOR_CREATION: True, + CONF_IGNORE_UNAVAILABLE_STATE: True, + }, + { + CONF_CREATE_ENERGY_SENSORS: False, + }, + ) + await hass.async_block_till_done() + + energy_state = hass.states.get("sensor.bedroom_airco_energy") + assert energy_state + + async def test_disable_extended_attributes(hass: HomeAssistant) -> None: await create_input_boolean(hass) From 1d7427d515c3d11055f149736d7194949e340923 Mon Sep 17 00:00:00 2001 From: Bram Date: Sat, 30 Mar 2024 17:21:45 +0100 Subject: [PATCH 2/3] fix: force_create_energy_sensor should always create an energy sensor --- tests/sensors/test_energy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/sensors/test_energy.py b/tests/sensors/test_energy.py index 22fd785dc..d5b683ba3 100644 --- a/tests/sensors/test_energy.py +++ b/tests/sensors/test_energy.py @@ -213,6 +213,7 @@ async def test_force_create_energy_sensor_overrides_create_energy_sensors_option hass, { CONF_POWER_SENSOR_ID: "sensor.bedroom_airco_power", + CONF_NAME: "Bedroom airco", CONF_FORCE_ENERGY_SENSOR_CREATION: True, CONF_IGNORE_UNAVAILABLE_STATE: True, }, From 2e02102ecd1cf0757f4a43bf7b878c7b24b29fc1 Mon Sep 17 00:00:00 2001 From: Bram Date: Sat, 30 Mar 2024 17:25:24 +0100 Subject: [PATCH 3/3] add note to documentation --- docs/source/sensor-types/real-power-sensor.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/source/sensor-types/real-power-sensor.rst b/docs/source/sensor-types/real-power-sensor.rst index dc7d3b887..8ebda816d 100644 --- a/docs/source/sensor-types/real-power-sensor.rst +++ b/docs/source/sensor-types/real-power-sensor.rst @@ -35,5 +35,8 @@ to use an existing power sensor and let powercalc create the energy sensors and This also enables you to combine virtual power sensors (created with powercalc) and existing power sensors in your HA installation into a YAML group. Without this configuration option power_sensor_id that would not be possible. +When using `force_energy_sensor_creation` you need to provide either a source entity (``entity_id``) or a ``name`` for the energy sensor. +If you don't provide this Powercalc has no way to determine how the energy sensor should be named. + .. note:: If you don't define `force_energy_sensor_creation` or you set it to `false` an energy sensor will not be created if the device already has an energy sensor. This can be a problem if you want to create an energy sensor for an MQTT device with multiple energy and power sensors already in it. \ No newline at end of file