refactor: some fixes

This commit is contained in:
Yurii
2024-11-12 10:48:29 +03:00
parent c6df74f06e
commit 636872f72d
9 changed files with 49 additions and 17 deletions

View File

@@ -81,7 +81,7 @@ protected:
Log.sinfoln(FPSTR(L_OT), F("Started. GPIO IN: %hhu, GPIO OUT: %hhu"), settings.opentherm.inGpio, settings.opentherm.outGpio);
this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) {
Log.straceln(
Log.sverboseln(
FPSTR(L_OT),
F("ID: %4d Request: %8lx Response: %8lx Attempt: %2d Status: %s"),
CustomOpenTherm::getDataID(request), request, response, attempt, CustomOpenTherm::statusToString(status)
@@ -158,7 +158,7 @@ protected:
|| (settings.opentherm.dhwToCh2 && settings.opentherm.dhwPresent && settings.dhw.enabled);
if (settings.opentherm.heatingCh1ToCh2) {
vars.master.ch2.targetTemp = vars.master.heating.targetTemp;
vars.master.ch2.targetTemp = vars.master.heating.setpointTemp;
} else if (settings.opentherm.dhwToCh2) {
vars.master.ch2.targetTemp = vars.master.dhw.targetTemp;
@@ -474,6 +474,9 @@ protected:
} else {
Log.swarningln(FPSTR(L_OT), F("Failed receive modulation level"));
}
} else if (vars.slave.modulation.current > 0) {
vars.slave.modulation.current = 0;
}
// Modulation level sensors
@@ -897,14 +900,14 @@ protected:
// Normal heating control
if (!settings.opentherm.nativeHeatingControl && vars.master.heating.enabled) {
// Converted target heating temp
float convertedTemp = convertTemp(vars.master.heating.targetTemp, settings.system.unitSystem, settings.opentherm.unitSystem);
float convertedTemp = convertTemp(vars.master.heating.setpointTemp, settings.system.unitSystem, settings.opentherm.unitSystem);
if (this->needSetHeatingTemp(convertedTemp)) {
// Set max heating temp
if (this->setMaxHeatingTemp(convertedTemp)) {
Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set max heating temp: %.2f (converted: %.2f)"),
vars.master.heating.targetTemp, convertedTemp
vars.master.heating.setpointTemp, convertedTemp
);
} else {
@@ -917,7 +920,7 @@ protected:
Log.sinfoln(
FPSTR(L_OT_HEATING), F("Set target temp: %.2f (converted: %.2f, response: %.2f)"),
vars.master.heating.targetTemp, convertedTemp, vars.slave.heating.targetTemp
vars.master.heating.setpointTemp, convertedTemp, vars.slave.heating.targetTemp
);
} else {

View File

@@ -55,14 +55,15 @@ protected:
this->turbo();
this->hysteresis();
vars.master.heating.targetTemp = constrain(
this->getHeatingSetpoint(),
vars.master.heating.minTemp,
vars.master.heating.maxTemp
vars.master.heating.targetTemp = settings.heating.target;
vars.master.heating.setpointTemp = constrain(
this->getHeatingSetpointTemp(),
this->getHeatingMinSetpointTemp(),
this->getHeatingMaxSetpointTemp()
);
Sensors::setValueByType(
Sensors::Type::HEATING_SETPOINT_TEMP, vars.master.heating.targetTemp,
Sensors::Type::HEATING_SETPOINT_TEMP, vars.master.heating.setpointTemp,
Sensors::ValueType::PRIMARY, true, true
);
}
@@ -104,8 +105,25 @@ protected:
}
}
inline float getHeatingMinSetpointTemp() {
if (settings.opentherm.nativeHeatingControl) {
return vars.master.heating.minTemp;
float getHeatingSetpoint() {
} else {
return settings.heating.minTemp;
}
}
inline float getHeatingMaxSetpointTemp() {
if (settings.opentherm.nativeHeatingControl) {
return vars.master.heating.maxTemp;
} else {
return settings.heating.maxTemp;
}
}
float getHeatingSetpointTemp() {
float newTemp = 0;
if (fabsf(prevHeatingTarget - settings.heating.target) > 0.0001f) {

View File

@@ -255,6 +255,7 @@ struct Variables {
bool blocking = false;
bool enabled = false;
bool indoorTempControl = false;
float setpointTemp = 0.0f;
float targetTemp = 0.0f;
float currentTemp = 0.0f;
float returnTemp = 0.0f;

View File

@@ -170,6 +170,7 @@ const char S_STA[] PROGMEM = "sta";
const char S_STATE[] PROGMEM = "state";
const char S_STATIC_CONFIG[] PROGMEM = "staticConfig";
const char S_STATUS_LED_GPIO[] PROGMEM = "statusLedGpio";
const char S_SETPOINT_TEMP[] PROGMEM = "setpointTemp";
const char S_SUBNET[] PROGMEM = "subnet";
const char S_SUMMER_WINTER_MODE[] PROGMEM = "summerWinterMode";
const char S_SYSTEM[] PROGMEM = "system";

View File

@@ -1735,6 +1735,7 @@ void varsToJson(const Variables& src, JsonVariant dst) {
mHeating[FPSTR(S_ENABLED)] = src.master.heating.enabled;
mHeating[FPSTR(S_BLOCKING)] = src.master.heating.blocking;
mHeating[FPSTR(S_INDOOR_TEMP_CONTROL)] = src.master.heating.indoorTempControl;
mHeating[FPSTR(S_SETPOINT_TEMP)] = roundf(src.master.heating.setpointTemp, 2);
mHeating[FPSTR(S_TARGET_TEMP)] = roundf(src.master.heating.targetTemp, 2);
mHeating[FPSTR(S_CURRENT_TEMP)] = roundf(src.master.heating.currentTemp, 2);
mHeating[FPSTR(S_RETURN_TEMP)] = roundf(src.master.heating.returnTemp, 2);