@@ -116,6 +116,24 @@ class SolarManagerSensorDescription(SensorEntityDescription):
116116 state_class = SensorStateClass .MEASUREMENT ,
117117 icon = "mdi:home-circle" ,
118118 ),
119+ # Derived: battery charge power (positive currentBatteryChargeDischarge = charging)
120+ SolarManagerSensorDescription (
121+ key = "batteryChargePower" ,
122+ name = "Battery Charge Power" ,
123+ native_unit_of_measurement = UnitOfPower .WATT ,
124+ device_class = SensorDeviceClass .POWER ,
125+ state_class = SensorStateClass .MEASUREMENT ,
126+ icon = "mdi:battery-arrow-up" ,
127+ ),
128+ # Derived: battery discharge power (negative currentBatteryChargeDischarge = discharging)
129+ SolarManagerSensorDescription (
130+ key = "batteryDischargePower" ,
131+ name = "Battery Discharge Power" ,
132+ native_unit_of_measurement = UnitOfPower .WATT ,
133+ device_class = SensorDeviceClass .POWER ,
134+ state_class = SensorStateClass .MEASUREMENT ,
135+ icon = "mdi:battery-arrow-down" ,
136+ ),
119137)
120138
121139# ---------------------------------------------------------------------------
@@ -447,6 +465,12 @@ def _update_value(self) -> None:
447465 pv = data .get ("currentPvGeneration" , 0 ) or 0
448466 grid_export = max (0 , - (data .get ("currentGridPower" , 0 ) or 0 ))
449467 self ._attr_native_value = max (0 , pv - grid_export )
468+ elif self ._key == "batteryChargePower" :
469+ batt = data .get ("currentBatteryChargeDischarge" , 0 ) or 0
470+ self ._attr_native_value = max (0 , batt )
471+ elif self ._key == "batteryDischargePower" :
472+ batt = data .get ("currentBatteryChargeDischarge" , 0 ) or 0
473+ self ._attr_native_value = max (0 , - batt )
450474 else :
451475 self ._attr_native_value = data .get (self ._key )
452476
0 commit comments