From 1ef70cd47b61c65e8dd775b35612a48275570077 Mon Sep 17 00:00:00 2001 From: xtux77 Date: Sun, 5 Jul 2026 09:03:51 +0200 Subject: [PATCH] Fix invalid state_class for session energy sensors green_energy_session and grid_energy_session used state_class=MEASUREMENT with device_class=ENERGY, which Home Assistant rejects (logs a warning at startup), since an ENERGY device_class expects TOTAL or TOTAL_INCREASING. Switch both to TOTAL_INCREASING, matching the sibling session_energy sensor. total_increasing correctly models the per-session reset (HA detects the reset), so the per-session semantics are preserved. Fixes #2 Co-Authored-By: Claude Opus 4.8 --- custom_components/wallbox_gateway/sensor.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/custom_components/wallbox_gateway/sensor.py b/custom_components/wallbox_gateway/sensor.py index a88cfa9..8adb611 100644 --- a/custom_components/wallbox_gateway/sensor.py +++ b/custom_components/wallbox_gateway/sensor.py @@ -690,15 +690,18 @@ def _month_cost(entity: GatewayEntity) -> float | None: value_fn=lambda e: _opt_int(e._status().get("wifi_rssi")), ), # ---- Live-session feed (r_lse), v0.3.1 ---------------------------- - # Per-session solar/grid energy split + live solar surplus. MEASUREMENT - # (not TOTAL_INCREASING) because each value resets when a new session - # starts. user_id from r_lse is dropped in the coordinator — never here. + # Per-session solar/grid energy split + live solar surplus. Each value + # resets when a new session starts, so TOTAL_INCREASING (not MEASUREMENT): + # an ENERGY device_class can't be MEASUREMENT (HA rejects it), and + # total_increasing models the per-session reset correctly (HA detects it), + # matching the session_energy sensor above. user_id from r_lse is dropped + # in the coordinator — never here. GatewaySensorEntityDescription( key="green_energy_session", translation_key="green_energy_session", name="Green energy (session)", device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.MEASUREMENT, + state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_display_precision=2, value_fn=lambda e: e._lse().get("green_energy_kwh"), @@ -708,7 +711,7 @@ def _month_cost(entity: GatewayEntity) -> float | None: translation_key="grid_energy_session", name="Grid energy (session)", device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.MEASUREMENT, + state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_display_precision=2, value_fn=lambda e: e._lse().get("grid_energy_kwh"),