@@ -95,6 +95,25 @@ def set_power_limit(self, power_limit: Optional[int]) -> None:
9595 40 , power_value & 0xFFFF , data_type = ModbusDataType .INT_16 , unit = vebus_id )
9696 self .__tcp_client .write_register (
9797 41 , power_value & 0xFFFF , data_type = ModbusDataType .INT_16 , unit = vebus_id )
98+ elif power_limit > 0 :
99+ if self .last_mode != 'charge' :
100+ # ESS Mode 3 für externe Steuerung und auf L1 wird entladen
101+ self .__tcp_client .write_register (2902 , 3 , data_type = ModbusDataType .UINT_16 , unit = modbus_id )
102+ self .__tcp_client .write_register (39 , 0 , data_type = ModbusDataType .UINT_16 , unit = vebus_id )
103+ self .last_mode = 'charge'
104+ # Die maximale Entladeleistung begrenzen auf 5000W
105+ if phases == 3 :
106+ power_limit = power_limit / 3
107+ power_value = int (min (power_limit , 5000 ))
108+ log .debug (f"Aktive Batteriesteuerung. Victron mit { phases } Phase(n). "
109+ f"Batterie wird mit { power_value } W pro Phase geladen." )
110+ self .__tcp_client .write_register (
111+ 37 , power_value & 0xFFFF , data_type = ModbusDataType .INT_16 , unit = vebus_id )
112+ if phases == 3 :
113+ self .__tcp_client .write_register (
114+ 40 , power_value & 0xFFFF , data_type = ModbusDataType .INT_16 , unit = vebus_id )
115+ self .__tcp_client .write_register (
116+ 41 , power_value & 0xFFFF , data_type = ModbusDataType .INT_16 , unit = vebus_id )
98117
99118 def power_limit_controllable (self ) -> bool :
100119 return True
0 commit comments