From 804f225908dbc37d900f13510f1a7986e7674985 Mon Sep 17 00:00:00 2001 From: Bernhard Kaszt Date: Wed, 1 Mar 2023 21:35:32 +0100 Subject: [PATCH] Fix _consumeSolarPowerOnly sometimes being set to false when it shouldn't --- src/PowerLimiter.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/PowerLimiter.cpp b/src/PowerLimiter.cpp index 0e60a1f8..9c3c80de 100644 --- a/src/PowerLimiter.cpp +++ b/src/PowerLimiter.cpp @@ -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 0.0 && (millis() - Battery.stateOfChargeLastUpdate) < 60000 @@ -270,7 +269,7 @@ bool PowerLimiterClass::isStopThresholdReached(std::shared_ptr { 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