Is your feature request related to a problem? Please describe.
My Sigenergy system reports a maximum charge power, which appears to be simultaneously a function of SOC and temperature. Predbat supports some input on these, but looking at the code, they appear to be implemented as an either-or - two separate charge limits are computed, one for SOC and one for temperature, and the lowest is taken.
This first graph shows the behaviour for battery temperatures in the range 17-21C. The charge power is 100% of maximum below 60% SOC, and then drops in several stages. This alone could be captured by Predbat's existing battery_charge_power_curve. However, you can also start to see a divergence between different temperatures in those steps - it's not a universal limit regardless of SOC, which battery_temperature_charge_curve currently implements, but appears to be some sort of multiplicative factor where the curve shape is modified.

This second plot is temperatures below 17C. The charge power values below an SOC of 60% are reduced with decreasing temperature, but values above 60% SOC also continue to reduce.

Above 23C, the first few steps in the SOC-charge power curve disappear - the charge power remains 100% until it hits the steep drop starting at 85% SOC.

From the data, I believe the Sigenergy algorithm modifies the SOC-based charge curve by the temperature like so:
soc_max_charge_power = charge_power_lookup_table[soc]
temperature_scaling_factor = temperature_scaling_lookup_temperature[temperature]
combined_max_charge_power = soc_max_charge_rate * temperature_scaling_factor
final_max_charge_power = min(combined_max_charge_power, 100)
With the result being:
- Below 17C,
combined_max_charge_power is always below 100% and doesn't get capped
- At around 17C,
combined_max_charge_power exceeds 100% in the range 0-60% SOC and is capped
- At around 23C,
combined_max_charge_power exceeds 100% in the range 60-85% SOC, so the features in the SOC-charge power curve start to disappear as they are capped
The discharge power behaves similarly for the system - it might even be exactly the same curve flipped around. However, the reported maximum discharge power (21.6kW) is significantly higher than the maximum charge power (13.2kW).
Describe the solution you'd like
The ability to define charge power curves for SOC and temperature that are multiplicative, rather than alternative options that Predbat chooses the minimum of.
Describe alternatives you've considered
I've implemented a battery_charge_power_curve using an average of the 17-21C curve. This is fine in the general case, but I believe I encountered a case on a particularly cold, sunny day where Predbat was too optimistic about the available charge power at high-ish SOC, and some solar output was lost (no export tariff at the time). I sadly lack the data for that day - it's what prompted me to enable the sensors and start looking.
Is your feature request related to a problem? Please describe.
My Sigenergy system reports a maximum charge power, which appears to be simultaneously a function of SOC and temperature. Predbat supports some input on these, but looking at the code, they appear to be implemented as an either-or - two separate charge limits are computed, one for SOC and one for temperature, and the lowest is taken.
This first graph shows the behaviour for battery temperatures in the range 17-21C. The charge power is 100% of maximum below 60% SOC, and then drops in several stages. This alone could be captured by Predbat's existing

battery_charge_power_curve. However, you can also start to see a divergence between different temperatures in those steps - it's not a universal limit regardless of SOC, whichbattery_temperature_charge_curvecurrently implements, but appears to be some sort of multiplicative factor where the curve shape is modified.This second plot is temperatures below 17C. The charge power values below an SOC of 60% are reduced with decreasing temperature, but values above 60% SOC also continue to reduce.

Above 23C, the first few steps in the SOC-charge power curve disappear - the charge power remains 100% until it hits the steep drop starting at 85% SOC.

From the data, I believe the Sigenergy algorithm modifies the SOC-based charge curve by the temperature like so:
With the result being:
combined_max_charge_poweris always below 100% and doesn't get cappedcombined_max_charge_powerexceeds 100% in the range 0-60% SOC and is cappedcombined_max_charge_powerexceeds 100% in the range 60-85% SOC, so the features in the SOC-charge power curve start to disappear as they are cappedThe discharge power behaves similarly for the system - it might even be exactly the same curve flipped around. However, the reported maximum discharge power (21.6kW) is significantly higher than the maximum charge power (13.2kW).
Describe the solution you'd like
The ability to define charge power curves for SOC and temperature that are multiplicative, rather than alternative options that Predbat chooses the minimum of.
Describe alternatives you've considered
I've implemented a
battery_charge_power_curveusing an average of the 17-21C curve. This is fine in the general case, but I believe I encountered a case on a particularly cold, sunny day where Predbat was too optimistic about the available charge power at high-ish SOC, and some solar output was lost (no export tariff at the time). I sadly lack the data for that day - it's what prompted me to enable the sensors and start looking.