Fix _consumeSolarPowerOnly sometimes being set to false when it shouldn't

This commit is contained in:
Bernhard Kaszt 2023-03-01 21:35:32 +01:00
parent b70407d7fe
commit 804f225908

View File

@ -40,7 +40,7 @@ void PowerLimiterClass::init()
}
_consumeSolarPowerOnly = true;
_lastCommandSent = 0;
_lastCommandSent = 0;
_lastLoop = 0;
_lastPowerMeterUpdate = 0;
_lastRequestedPowerLimit = 0;
@ -109,8 +109,7 @@ void PowerLimiterClass::loop()
float acPower = inverter->Statistics()->getChannelFieldValue(TYPE_AC, (ChannelNum_t) config.PowerLimiter_InverterChannelId, FLD_PAC);
float correctedDcVoltage = dcVoltage + (acPower * config.PowerLimiter_VoltageLoadCorrectionFactor);
if ((_consumeSolarPowerOnly && isStartThresholdReached(inverter))
|| !canUseDirectSolarPower()) {
if ((_consumeSolarPowerOnly && isStartThresholdReached(inverter))) {
// The battery is full enough again, use the full battery power from now on.
_consumeSolarPowerOnly = false;
} else if (!_consumeSolarPowerOnly && !isStopThresholdReached(inverter) && canUseDirectSolarPower()) {
@ -224,7 +223,7 @@ bool PowerLimiterClass::canUseDirectSolarPower()
uint16_t PowerLimiterClass::getDirectSolarPower()
{
if (!this->canUseDirectSolarPower()) {
if (!canUseDirectSolarPower()) {
return 0;
}
@ -249,7 +248,7 @@ bool PowerLimiterClass::isStartThresholdReached(std::shared_ptr<InverterAbstract
{
CONFIG_T& config = Configuration.get();
// If the Battery interface is enabled, use the SOC value
// Check if the Battery interface is enabled and the SOC start threshold is reached
if (config.Battery_Enabled
&& config.PowerLimiter_BatterySocStartThreshold > 0.0
&& (millis() - Battery.stateOfChargeLastUpdate) < 60000
@ -270,7 +269,7 @@ bool PowerLimiterClass::isStopThresholdReached(std::shared_ptr<InverterAbstract>
{
CONFIG_T& config = Configuration.get();
// If the Battery interface is enabled, use the SOC value
// Check if the Battery interface is enabled and the SOC stop threshold is reached
if (config.Battery_Enabled
&& config.PowerLimiter_BatterySocStopThreshold > 0.0
&& (millis() - Battery.stateOfChargeLastUpdate) < 60000