added interval for forced set temperatures

This commit is contained in:
Yurii
2023-10-17 14:50:43 +03:00
parent 96c1a187cd
commit bc91168bbf

View File

@@ -116,7 +116,7 @@ protected:
// //
// Температура ГВС // Температура ГВС
byte newDHWTemp = settings.dhw.target; byte newDHWTemp = settings.dhw.target;
if (settings.opentherm.dhwPresent && settings.dhw.enable && newDHWTemp != currentDHWTemp) { if (settings.opentherm.dhwPresent && settings.dhw.enable && (needSetDhwTemp() || newDHWTemp != currentDHWTemp)) {
if (newDHWTemp < vars.parameters.dhwMinTemp || newDHWTemp > vars.parameters.dhwMaxTemp) { if (newDHWTemp < vars.parameters.dhwMinTemp || newDHWTemp > vars.parameters.dhwMaxTemp) {
newDHWTemp = constrain(newDHWTemp, vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp); newDHWTemp = constrain(newDHWTemp, vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp);
} }
@@ -126,6 +126,7 @@ protected:
// Записываем заданную температуру ГВС // Записываем заданную температуру ГВС
if (ot->setDHWSetpoint(newDHWTemp)) { if (ot->setDHWSetpoint(newDHWTemp)) {
currentDHWTemp = newDHWTemp; currentDHWTemp = newDHWTemp;
dhwSetTempTime = millis();
} else { } else {
WARN("Failed set DHW temp"); WARN("Failed set DHW temp");
@@ -134,12 +135,13 @@ protected:
// //
// Температура отопления // Температура отопления
if (heatingEnabled && fabs(vars.parameters.heatingSetpoint - currentHeatingTemp) > 0.0001) { if (heatingEnabled && (needSetHeatingTemp() || fabs(vars.parameters.heatingSetpoint - currentHeatingTemp) > 0.0001)) {
INFO_F("Setting heating temp = %u \n", vars.parameters.heatingSetpoint); INFO_F("Setting heating temp = %u \n", vars.parameters.heatingSetpoint);
// Записываем заданную температуру // Записываем заданную температуру
if (ot->setBoilerTemperature(vars.parameters.heatingSetpoint)) { if (ot->setBoilerTemperature(vars.parameters.heatingSetpoint)) {
currentHeatingTemp = vars.parameters.heatingSetpoint; currentHeatingTemp = vars.parameters.heatingSetpoint;
heatingSetTempTime = millis();
} else { } else {
WARN("Failed set heating temp"); WARN("Failed set heating temp");
@@ -203,13 +205,27 @@ protected:
} }
protected: protected:
unsigned short readyTime = 60000;
unsigned short dhwSetTempInterval = 60000;
unsigned short heatingSetTempInterval = 60000;
bool pump = true; bool pump = true;
unsigned long prevUpdateNonEssentialVars = 0; unsigned long prevUpdateNonEssentialVars = 0;
unsigned long startupTime = millis(); unsigned long startupTime = millis();
unsigned long dhwSetTempTime = 0;
unsigned long heatingSetTempTime = 0;
bool isReady() { bool isReady() {
return millis() - startupTime > 60000; return millis() - startupTime > readyTime;
}
bool needSetDhwTemp() {
return millis() - dhwSetTempTime > dhwSetTempInterval;
}
bool needSetHeatingTemp() {
return millis() - heatingSetTempTime > heatingSetTempInterval;
} }
void static printRequestDetail(OpenThermMessageID id, OpenThermResponseStatus status, unsigned long request, unsigned long response, byte attempt) { void static printRequestDetail(OpenThermMessageID id, OpenThermResponseStatus status, unsigned long request, unsigned long response, byte attempt) {