Skip to content

Commit 5b4014f

Browse files
authored
Add state_class: measurement for battery level sensors (+ per-entity overrides) to enable statistics (#55)
* Added state_class override functionality * Update version
1 parent 81c2d32 commit 5b4014f

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

custom_components/enpal_webparser/const.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"energy_battery_charge_level": "battery",
6060
"energy_battery_charge_level_unit_1": "battery",
6161
"energy_battery_charge_level_unit_2": "battery",
62+
"energy_battery_charge_level_absolute": "battery",
6263
}
6364

6465
# --- Wallbox Mode Mapping ---
@@ -214,3 +215,10 @@
214215
"voltage_wallbox_connector_1_phase_b": "mdi:transmission-tower",
215216
"voltage_wallbox_connector_1_phase_c": "mdi:transmission-tower",
216217
}
218+
219+
STATE_CLASS_OVERRIDES = {
220+
"energy_battery_charge_level": "measurement",
221+
"energy_battery_charge_level_unit_1": "measurement",
222+
"energy_battery_charge_level_unit_2": "measurement",
223+
"energy_battery_charge_level_absolute": "measurement",
224+
}

custom_components/enpal_webparser/entity_factory.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from homeassistant.helpers.entity import DeviceInfo
2525

2626
from .utils import make_id
27-
from .const import ICON_MAP
27+
from .const import ICON_MAP, STATE_CLASS_OVERRIDES
2828

2929

3030
class EnpalBaseSensor(CoordinatorEntity, SensorEntity):
@@ -48,6 +48,11 @@ def __init__(self, sensor: dict, coordinator: DataUpdateCoordinator):
4848
self._attr_device_class = getattr(SensorDeviceClass, device_class.upper())
4949
else:
5050
self._attr_device_class = device_class
51+
52+
# Overrides for state class if specified
53+
sensor_id = self._attr_unique_id
54+
if sensor_id in STATE_CLASS_OVERRIDES:
55+
self._attr_state_class = STATE_CLASS_OVERRIDES[sensor_id]
5156

5257
@property
5358
def native_value(self):
@@ -93,4 +98,9 @@ def build_sensor_entity(sensor: dict, coordinator: DataUpdateCoordinator) -> Sen
9398
class EnpalEnergySensor(EnpalBaseSensor):
9499
def __init__(self, sensor: dict, coordinator: DataUpdateCoordinator):
95100
super().__init__(sensor, coordinator)
101+
# Default: Energy counter is total_increasing
96102
self._attr_state_class = "total_increasing"
103+
# Allow explicit overrides
104+
sensor_id = self._attr_unique_id
105+
if sensor_id in STATE_CLASS_OVERRIDES:
106+
self._attr_state_class = STATE_CLASS_OVERRIDES[sensor_id]

custom_components/enpal_webparser/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
"iot_class": "local_polling",
99
"issue_tracker": "https://github.com/derolli1976/enpal/issues",
1010
"requirements": [],
11-
"version": "2.1.5"
11+
"version": "2.1.6"
1212
}

0 commit comments

Comments
 (0)