From fbabb2778757333e857c14ccaf0464c8f0ebc0d5 Mon Sep 17 00:00:00 2001 From: Imeon-Energy Date: Tue, 30 Sep 2025 13:35:18 +0200 Subject: [PATCH] Add forecast energy sensor to Imeon inverter integration (#152176) Co-authored-by: TheBushBoy --- .../components/imeon_inverter/icons.json | 6 + .../components/imeon_inverter/sensor.py | 15 +++ .../components/imeon_inverter/strings.json | 6 + .../imeon_inverter/fixtures/entity_data.json | 4 + .../imeon_inverter/snapshots/test_sensor.ambr | 106 ++++++++++++++++++ 5 files changed, 137 insertions(+) diff --git a/homeassistant/components/imeon_inverter/icons.json b/homeassistant/components/imeon_inverter/icons.json index afd98d697c6..34ecd9d7923 100644 --- a/homeassistant/components/imeon_inverter/icons.json +++ b/homeassistant/components/imeon_inverter/icons.json @@ -169,6 +169,12 @@ }, "energy_battery_consumed": { "default": "mdi:battery-arrow-down-outline" + }, + "forecast_cons_remaining_today": { + "default": "mdi:chart-line" + }, + "forecast_prod_remaining_today": { + "default": "mdi:chart-line" } }, "select": { diff --git a/homeassistant/components/imeon_inverter/sensor.py b/homeassistant/components/imeon_inverter/sensor.py index 21aa37a0523..3aa26f4a3c3 100644 --- a/homeassistant/components/imeon_inverter/sensor.py +++ b/homeassistant/components/imeon_inverter/sensor.py @@ -417,6 +417,21 @@ SENSOR_DESCRIPTIONS = ( state_class=SensorStateClass.TOTAL_INCREASING, suggested_display_precision=2, ), + # Forecast + SensorEntityDescription( + key="forecast_cons_remaining_today", + translation_key="forecast_cons_remaining_today", + native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + suggested_display_precision=2, + ), + SensorEntityDescription( + key="forecast_prod_remaining_today", + translation_key="forecast_prod_remaining_today", + native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + suggested_display_precision=2, + ), ) diff --git a/homeassistant/components/imeon_inverter/strings.json b/homeassistant/components/imeon_inverter/strings.json index a84e5e6ef77..50ca969746d 100644 --- a/homeassistant/components/imeon_inverter/strings.json +++ b/homeassistant/components/imeon_inverter/strings.json @@ -213,6 +213,12 @@ }, "energy_battery_consumed": { "name": "Today battery-consumed energy" + }, + "forecast_cons_remaining_today": { + "name": "Forecast remaining energy consumption for today" + }, + "forecast_prod_remaining_today": { + "name": "Forecast remaining energy production for today" } }, "select": { diff --git a/tests/components/imeon_inverter/fixtures/entity_data.json b/tests/components/imeon_inverter/fixtures/entity_data.json index aa254b6a625..2fe9f5ebe66 100644 --- a/tests/components/imeon_inverter/fixtures/entity_data.json +++ b/tests/components/imeon_inverter/fixtures/entity_data.json @@ -78,5 +78,9 @@ "building_consumption": 15000.0, "battery_stored": 8000.0, "battery_consumed": 2000.0 + }, + "forecast": { + "cons_remaining_today": 3000.0, + "prod_remaining_today": 7000.0 } } diff --git a/tests/components/imeon_inverter/snapshots/test_sensor.ambr b/tests/components/imeon_inverter/snapshots/test_sensor.ambr index de8ef9cce19..35b51043c73 100644 --- a/tests/components/imeon_inverter/snapshots/test_sensor.ambr +++ b/tests/components/imeon_inverter/snapshots/test_sensor.ambr @@ -504,6 +504,112 @@ 'state': '45.5', }) # --- +# name: test_sensors[sensor.imeon_inverter_forecast_remaining_energy_consumption_for_today-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.imeon_inverter_forecast_remaining_energy_consumption_for_today', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Forecast remaining energy consumption for today', + 'platform': 'imeon_inverter', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'forecast_cons_remaining_today', + 'unique_id': '111111111111111_forecast_cons_remaining_today', + 'unit_of_measurement': , + }) +# --- +# name: test_sensors[sensor.imeon_inverter_forecast_remaining_energy_consumption_for_today-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'energy', + 'friendly_name': 'Imeon inverter Forecast remaining energy consumption for today', + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.imeon_inverter_forecast_remaining_energy_consumption_for_today', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3000.0', + }) +# --- +# name: test_sensors[sensor.imeon_inverter_forecast_remaining_energy_production_for_today-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.imeon_inverter_forecast_remaining_energy_production_for_today', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Forecast remaining energy production for today', + 'platform': 'imeon_inverter', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'forecast_prod_remaining_today', + 'unique_id': '111111111111111_forecast_prod_remaining_today', + 'unit_of_measurement': , + }) +# --- +# name: test_sensors[sensor.imeon_inverter_forecast_remaining_energy_production_for_today-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'energy', + 'friendly_name': 'Imeon inverter Forecast remaining energy production for today', + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.imeon_inverter_forecast_remaining_energy_production_for_today', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '7000.0', + }) +# --- # name: test_sensors[sensor.imeon_inverter_grid_consumption-entry] EntityRegistryEntrySnapshot({ 'aliases': set({