Connect a BMS that sends a charge current limit. This is written to com.ve.vebus/BatteryOperationalLimits/MaxChargeCurrent.
Disconnect the BMS. System sees there is no BMS, and sends the limit to com.ve.vebus/Dc/0/MaxChargeCurrent instead.
Lower the max charge current setting in the DVCC menu to a lower value. This writes this lower limit to com.ve.vebus/Dc/0/MaxChargeCurrent.
Reconnect the BMS. System switches back to writing the higher limit to com.ve.vebus/BatteryOperationalLimits/MaxChargeCurrent.
Disable the maximum charge current setting in the DVCC menu.
Since system uses the lower of the two values, it is now stuck at the lower value that was previously set instead of the higher one sent by the BMS.
Possible solutions
Just write the limit to both paths on every iteration (increases dbus traffic :-1:)
Write the limit to /Dc/0/MaxChargeCurrent if it is lower than what the BMS wants
Write a large value to /Dc/0/MaxChargeCurrent once when the DVCC setting changes, if it is unset (equal to -1). That maxes out the charge current so the BMS has full control.
Steps to create situation:
com.ve.vebus/BatteryOperationalLimits/MaxChargeCurrent
.com.ve.vebus/Dc/0/MaxChargeCurrent
instead.com.ve.vebus/Dc/0/MaxChargeCurrent
.com.ve.vebus/BatteryOperationalLimits/MaxChargeCurrent
.Possible solutions
Solution 3 seems like the best.