Start at night

This commit is contained in:
helgeerbe 2023-03-19 22:53:24 +01:00
parent b9acbe6f2c
commit 2dc7089aa6

View File

@ -127,12 +127,15 @@ void PowerLimiterClass::loop()
if (isStopThresholdReached(inverter)) if (isStopThresholdReached(inverter))
return; return;
// check for possible state changes // check for possible state changes
if (isStartThresholdReached(inverter) && calcPowerLimit(inverter, false) >= config.PowerLimiter_LowerPowerLimit) { if (canUseDirectSolarPower() && calcPowerLimit(inverter, true) >= config.PowerLimiter_LowerPowerLimit) {
_plState = STATE_NORMAL_OPERATION;
}
else if (canUseDirectSolarPower() && calcPowerLimit(inverter, true) >= config.PowerLimiter_LowerPowerLimit) {
_plState = STATE_CONSUME_SOLAR_POWER_ONLY; _plState = STATE_CONSUME_SOLAR_POWER_ONLY;
} }
else if ((isStartThresholdReached(inverter) ||
(config.PowerLimiter_Enabled && config.PowerLimiter_BatteryDrainStategy == EMPTY_AT_NIGTH))
&& calcPowerLimit(inverter, false) >= config.PowerLimiter_LowerPowerLimit) {
_plState = STATE_NORMAL_OPERATION;
}
// inverter on on state change // inverter on on state change
if (_plState != STATE_OFF) { if (_plState != STATE_OFF) {
@ -148,15 +151,16 @@ void PowerLimiterClass::loop()
case STATE_CONSUME_SOLAR_POWER_ONLY: { case STATE_CONSUME_SOLAR_POWER_ONLY: {
int32_t newPowerLimit = calcPowerLimit(inverter, true); int32_t newPowerLimit = calcPowerLimit(inverter, true);
if (!inverter->isProducing() if (!inverter->isProducing()
|| isStopThresholdReached(inverter) || isStopThresholdReached(inverter)) {
|| newPowerLimit < config.PowerLimiter_LowerPowerLimit) {
_plState = STATE_OFF; _plState = STATE_OFF;
break; break;
} else if ((!canUseDirectSolarPower() && config.PowerLimiter_BatteryDrainStategy == EMPTY_AT_NIGTH) || isStartThresholdReached(inverter)) { } else if ((!canUseDirectSolarPower() && config.PowerLimiter_BatteryDrainStategy == EMPTY_AT_NIGTH)
|| isStartThresholdReached(inverter)) {
_plState = STATE_NORMAL_OPERATION; _plState = STATE_NORMAL_OPERATION;
break; break;
} }
else if (!canUseDirectSolarPower()) { else if (!canUseDirectSolarPower() ||
newPowerLimit < config.PowerLimiter_LowerPowerLimit) {
_plState = STATE_OFF; _plState = STATE_OFF;
break; break;
} }