refactor: always set temperature to ID 1

This commit is contained in:
Yurii
2025-12-13 06:25:16 +03:00
parent 5a14857f52
commit a9220d9fa1
2 changed files with 71 additions and 52 deletions

View File

@@ -171,7 +171,7 @@ protected:
vars.master.heating.enabled = this->isReady() vars.master.heating.enabled = this->isReady()
&& settings.heating.enabled && settings.heating.enabled
&& vars.cascadeControl.input && vars.cascadeControl.input
&& (!vars.master.heating.blocking || settings.heating.hysteresis.action != HysteresisAction::DISABLE_HEATING) && !vars.master.heating.blocking
&& !vars.master.heating.overheat; && !vars.master.heating.overheat;
// DHW settings // DHW settings
@@ -186,7 +186,9 @@ protected:
|| (settings.opentherm.options.dhwToCh2 && settings.opentherm.options.dhwSupport && settings.dhw.enabled); || (settings.opentherm.options.dhwToCh2 && settings.opentherm.options.dhwSupport && settings.dhw.enabled);
if (settings.opentherm.options.heatingToCh2) { if (settings.opentherm.options.heatingToCh2) {
vars.master.ch2.targetTemp = vars.master.heating.setpointTemp; vars.master.ch2.targetTemp = !settings.opentherm.options.nativeOTC
? vars.master.heating.setpointTemp
: vars.master.heating.targetTemp;
} else if (settings.opentherm.options.dhwToCh2) { } else if (settings.opentherm.options.dhwToCh2) {
vars.master.ch2.targetTemp = vars.master.dhw.targetTemp; vars.master.ch2.targetTemp = vars.master.dhw.targetTemp;
@@ -1202,9 +1204,12 @@ protected:
// Update DHW temp // Update DHW temp
if (vars.master.dhw.enabled) { if (vars.master.dhw.enabled) {
// Target dhw temp
const float& targetTemp = vars.master.dhw.targetTemp;
// Converted target dhw temp // Converted target dhw temp
float convertedTemp = convertTemp( const float convertedTemp = convertTemp(
vars.master.dhw.targetTemp, targetTemp,
settings.system.unitSystem, settings.system.unitSystem,
settings.opentherm.unitSystem settings.opentherm.unitSystem
); );
@@ -1216,7 +1221,7 @@ protected:
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_DHW), F("Set temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_DHW), F("Set temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.dhw.targetTemp, convertedTemp, vars.slave.dhw.targetTemp targetTemp, convertedTemp, vars.slave.dhw.targetTemp
); );
} else { } else {
@@ -1227,14 +1232,17 @@ protected:
// Send indoor temp if AlwaysSendIndoorTemp option is enabled. // Send indoor temp if AlwaysSendIndoorTemp option is enabled.
if (settings.opentherm.options.nativeOTC || settings.opentherm.options.alwaysSendIndoorTemp) { if (settings.opentherm.options.nativeOTC || settings.opentherm.options.alwaysSendIndoorTemp) {
// Current indoor temp
const float& indoorTemp = vars.master.heating.indoorTemp;
// Converted current indoor temp // Converted current indoor temp
float convertedTemp = convertTemp(vars.master.heating.indoorTemp, settings.system.unitSystem, settings.opentherm.unitSystem); const float convertedTemp = convertTemp(indoorTemp, settings.system.unitSystem, settings.opentherm.unitSystem);
// Set current indoor temp // Set current indoor temp
if (this->setRoomTemp(convertedTemp)) { if (this->setRoomTemp(convertedTemp)) {
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set current indoor temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_HEATING), F("Set current indoor temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.indoorTemp, convertedTemp, vars.slave.heating.indoorTemp indoorTemp, convertedTemp, vars.slave.heating.indoorTemp
); );
} else { } else {
@@ -1246,7 +1254,7 @@ protected:
if (this->setRoomTempCh2(convertedTemp)) { if (this->setRoomTempCh2(convertedTemp)) {
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set current CH2 indoor temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_HEATING), F("Set current CH2 indoor temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.indoorTemp, convertedTemp, vars.slave.ch2.indoorTemp indoorTemp, convertedTemp, vars.slave.ch2.indoorTemp
); );
} else { } else {
@@ -1257,8 +1265,15 @@ protected:
// NativeOTC // NativeOTC
if (settings.opentherm.options.nativeOTC) { if (settings.opentherm.options.nativeOTC) {
// Target indoor temp
const float& targetTemp = vars.master.heating.targetTemp;
// Converted target indoor temp // Converted target indoor temp
float convertedTemp = convertTemp(vars.master.heating.targetTemp, settings.system.unitSystem, settings.opentherm.unitSystem); const float convertedTemp = convertTemp(
targetTemp,
settings.system.unitSystem,
settings.opentherm.unitSystem
);
// Set target indoor temp // Set target indoor temp
if (this->needSetHeatingTemp(convertedTemp)) { if (this->needSetHeatingTemp(convertedTemp)) {
@@ -1267,7 +1282,7 @@ protected:
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set target indoor temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_HEATING), F("Set target indoor temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.targetTemp, convertedTemp, vars.slave.heating.targetTemp targetTemp, convertedTemp, vars.slave.heating.targetTemp
); );
} else { } else {
@@ -1282,7 +1297,7 @@ protected:
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set target CH2 indoor temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_HEATING), F("Set target CH2 indoor temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.targetTemp, convertedTemp, vars.slave.ch2.targetTemp targetTemp, convertedTemp, vars.slave.ch2.targetTemp
); );
} else { } else {
@@ -1291,10 +1306,22 @@ protected:
} }
} }
// Normal heating control // Set heating temp
if (!settings.opentherm.options.nativeOTC && vars.master.heating.enabled) { {
// Target heating temp
float targetTemp = 0.0f;
if (vars.master.heating.enabled) {
targetTemp = !settings.opentherm.options.nativeOTC
? vars.master.heating.setpointTemp
: vars.master.heating.targetTemp;
}
// Converted target heating temp // Converted target heating temp
float convertedTemp = convertTemp(vars.master.heating.setpointTemp, settings.system.unitSystem, settings.opentherm.unitSystem); const float convertedTemp = convertTemp(
targetTemp,
settings.system.unitSystem,
settings.opentherm.unitSystem
);
if (this->needSetHeatingTemp(convertedTemp)) { if (this->needSetHeatingTemp(convertedTemp)) {
// Set max heating temp // Set max heating temp
@@ -1302,13 +1329,13 @@ protected:
if (this->setMaxHeatingTemp(convertedTemp)) { if (this->setMaxHeatingTemp(convertedTemp)) {
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set max heating temp: %.2f (converted: %.2f)"), FPSTR(L_OT_HEATING), F("Set max heating temp: %.2f (converted: %.2f)"),
vars.master.heating.setpointTemp, convertedTemp targetTemp, convertedTemp
); );
} else { } else {
Log.swarningln( Log.swarningln(
FPSTR(L_OT_HEATING), F("Failed set max heating temp: %.2f (converted: %.2f)"), FPSTR(L_OT_HEATING), F("Failed set max heating temp: %.2f (converted: %.2f)"),
vars.master.heating.setpointTemp, convertedTemp targetTemp, convertedTemp
); );
} }
} }
@@ -1319,7 +1346,7 @@ protected:
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set target temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_HEATING), F("Set target temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.setpointTemp, convertedTemp, vars.slave.heating.targetTemp targetTemp, convertedTemp, vars.slave.heating.targetTemp
); );
} else { } else {
@@ -1329,11 +1356,15 @@ protected:
} }
// Set CH2 temp // Set CH2 temp
if (!settings.opentherm.options.nativeOTC && vars.master.ch2.enabled) {
if (settings.opentherm.options.heatingToCh2 || settings.opentherm.options.dhwToCh2) { if (settings.opentherm.options.heatingToCh2 || settings.opentherm.options.dhwToCh2) {
// Target CH2 heating temp
const float targetTemp = vars.master.ch2.enabled
? vars.master.ch2.targetTemp
: 0.0f;
// Converted target CH2 temp // Converted target CH2 temp
float convertedTemp = convertTemp( const float convertedTemp = convertTemp(
vars.master.ch2.targetTemp, targetTemp,
settings.system.unitSystem, settings.system.unitSystem,
settings.opentherm.unitSystem settings.opentherm.unitSystem
); );
@@ -1344,7 +1375,7 @@ protected:
Log.sinfoln( Log.sinfoln(
FPSTR(L_OT_CH2), F("Set temp: %.2f (converted: %.2f, response: %.2f)"), FPSTR(L_OT_CH2), F("Set temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.ch2.targetTemp, convertedTemp, vars.slave.ch2.targetTemp targetTemp, convertedTemp, vars.slave.ch2.targetTemp
); );
} else { } else {
@@ -1352,7 +1383,6 @@ protected:
} }
} }
} }
}
// Heating overheat control // Heating overheat control

View File

@@ -57,23 +57,12 @@ protected:
this->turbo(); this->turbo();
this->hysteresis(); this->hysteresis();
if (vars.master.heating.blocking && settings.heating.hysteresis.action == HysteresisAction::SET_ZERO_TARGET) {
vars.master.heating.targetTemp = 0.0f;
vars.master.heating.setpointTemp = 0.0f;
// tick if PID enabled
if (settings.pid.enabled) {
this->getHeatingSetpointTemp();
}
} else {
vars.master.heating.targetTemp = settings.heating.target; vars.master.heating.targetTemp = settings.heating.target;
vars.master.heating.setpointTemp = roundf(constrain( vars.master.heating.setpointTemp = roundf(constrain(
this->getHeatingSetpointTemp(), this->getHeatingSetpointTemp(),
this->getHeatingMinSetpointTemp(), this->getHeatingMinSetpointTemp(),
this->getHeatingMaxSetpointTemp() this->getHeatingMaxSetpointTemp()
), 0); ), 0);
}
Sensors::setValueByType( Sensors::setValueByType(
Sensors::Type::HEATING_SETPOINT_TEMP, vars.master.heating.setpointTemp, Sensors::Type::HEATING_SETPOINT_TEMP, vars.master.heating.setpointTemp,