Apply limit instantaneously if inverter info is available

This commit is contained in:
Thomas Basler 2022-10-06 18:36:13 +02:00
parent 9b68eb6beb
commit e1690e8f74

View File

@ -48,9 +48,14 @@ bool ActivePowerControlCommand::handleResponse(InverterAbstract* inverter, fragm
if ((getType() == PowerLimitControlType::RelativNonPersistent) || (getType() == PowerLimitControlType::RelativPersistent)) { if ((getType() == PowerLimitControlType::RelativNonPersistent) || (getType() == PowerLimitControlType::RelativPersistent)) {
inverter->SystemConfigPara()->setLimitPercent(getLimit()); inverter->SystemConfigPara()->setLimitPercent(getLimit());
} else {
uint16_t max_power = inverter->DevInfo()->getMaxPower();
if (max_power > 0) {
inverter->SystemConfigPara()->setLimitPercent(static_cast<float>(getLimit()) / max_power * 100);
} else { } else {
// TODO(tbnobody): Not implemented yet because we only can publish the percentage value // TODO(tbnobody): Not implemented yet because we only can publish the percentage value
} }
}
inverter->SystemConfigPara()->setLastUpdateCommand(millis()); inverter->SystemConfigPara()->setLastUpdateCommand(millis());
inverter->SystemConfigPara()->setLastLimitCommandSuccess(CMD_OK); inverter->SystemConfigPara()->setLastLimitCommandSuccess(CMD_OK);
return true; return true;