@@ -374,16 +374,14 @@ async def automatic_config(self):
374374
375375 # Set up entity references for each plant
376376 # Load/import/export from plant realtime data
377- inverter_list = [self .plant_inverters [plant ][0 ] for plant in plants ]
378-
379377 self .set_arg ("load_today" , [f"sensor.{ self .prefix } _solax_{ plant } _total_load" for plant in plants ])
380378 self .set_arg ("import_today" , [f"sensor.{ self .prefix } _solax_{ plant } _total_imported" for plant in plants ])
381379 self .set_arg ("export_today" , [f"sensor.{ self .prefix } _solax_{ plant } _total_exported" for plant in plants ])
382380 self .set_arg ("pv_today" , [f"sensor.{ self .prefix } _solax_{ plant } _total_yield" for plant in plants ])
381+ self .set_arg ("battery_power" , [f"sensor.{ self .prefix } _solax_{ plant } _battery_charge_discharge_power" for plant in plants ])
383382
384383 # Power and SOC from device realtime data (using first inverter)
385384 inverter_list = [self .plant_inverters [plant ][0 ] for plant in plants ]
386- self .set_arg ("battery_power" , [f"sensor.{ self .prefix } _solax_{ plant } _{ inv } _charge_discharge_power" for plant , inv in zip (plants , inverter_list )])
387385 self .set_arg ("grid_power" , [f"sensor.{ self .prefix } _solax_{ plant } _{ inv } _grid_power" for plant , inv in zip (plants , inverter_list )])
388386 self .set_arg ("pv_power" , [f"sensor.{ self .prefix } _solax_{ plant } _{ inv } _pv_power" for plant , inv in zip (plants , inverter_list )])
389387 self .set_arg ("load_power" , [f"sensor.{ self .prefix } _solax_{ plant } _{ inv } _ac_power" for plant , inv in zip (plants , inverter_list )])
@@ -557,6 +555,12 @@ def get_max_soc_battery(self, plant_id):
557555 max_soc = plant_info .get ("batteryCapacity" , 0 )
558556 return max_soc # in kWh
559557
558+ def get_charge_discharge_power_battery (self , plant_id ):
559+ total_power = 0
560+ for device_id in self .plant_batteries .get (plant_id , []):
561+ total_power += self .realtime_device_data .get (device_id , {}).get ("chargeDischargePower" , 0 )
562+ return total_power # in Watts
563+
560564 def get_current_soc_battery_kwh (self , plant_id ):
561565 current_soc = 0
562566 count_devices = 0
@@ -2077,6 +2081,7 @@ async def publish_plant_info(self):
20772081 battery_soc_max = self .get_max_soc_battery (plant_id )
20782082 battery_soc = self .get_current_soc_battery_kwh (plant_id )
20792083 battery_temp = self .get_battery_temperature (plant_id )
2084+ charge_discharge_power = self .get_charge_discharge_power_battery (plant_id )
20802085
20812086 # Battery SOC
20822087 self .dashboard_item (
@@ -2091,6 +2096,18 @@ async def publish_plant_info(self):
20912096 },
20922097 app = "solax" ,
20932098 )
2099+ # Battery Charge/Discharge Power
2100+ self .dashboard_item (
2101+ f"sensor.{ self .prefix } _solax_{ plant_id } _battery_charge_discharge_power" ,
2102+ state = charge_discharge_power ,
2103+ attributes = {
2104+ "friendly_name" : f"SolaX { plant_name } Battery Charge/Discharge Power" ,
2105+ "unit_of_measurement" : "W" ,
2106+ "device_class" : "power" ,
2107+ "state_class" : "measurement" ,
2108+ },
2109+ app = "solax" ,
2110+ )
20942111 # Battery SOC max sensor
20952112 self .dashboard_item (
20962113 f"sensor.{ self .prefix } _solax_{ plant_id } _battery_capacity" ,
0 commit comments