many changes

* migrate from jandrassy/TelnetStream to lennarthennigs/ESP Telnet
* ability to turn on/off output logs to telnet and serial
* memory optimization
* added OT parameter DHW blocking
* changed algorithm for setting OpenThermMessageID::MConfigMMemberIDcode
* refactoring
This commit is contained in:
Yurii
2023-11-26 00:17:47 +03:00
parent 0dee4c20ce
commit 8a4b598161
11 changed files with 188 additions and 118 deletions

View File

@@ -6,6 +6,7 @@ Equitherm etRegulator;
GyverPID pidRegulator(0, 0, 0);
PIDtuner pidTuner;
class RegulatorTask : public LeanTask {
public:
RegulatorTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
@@ -33,7 +34,7 @@ protected:
if (settings.heating.turbo) {
settings.heating.turbo = false;
Log.sinfoln("REGULATOR", "Turbo mode auto disabled");
Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled"));
}
newTemp = getEmergencyModeTemp();
@@ -43,7 +44,7 @@ protected:
if (settings.heating.turbo) {
settings.heating.turbo = false;
Log.sinfoln("REGULATOR", "Turbo mode auto disabled");
Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled"));
}
newTemp = getTuningModeTemp();
@@ -57,7 +58,7 @@ protected:
if (settings.heating.turbo && (fabs(settings.heating.target - vars.temperatures.indoor) < 1 || (settings.equitherm.enable && settings.pid.enable))) {
settings.heating.turbo = false;
Log.sinfoln("REGULATOR", "Turbo mode auto disabled");
Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled"));
}
newTemp = getNormalModeTemp();
@@ -86,7 +87,7 @@ protected:
prevEtResult = etResult;
newTemp += etResult;
Log.sinfoln("REGULATOR.EQUITHERM", "New emergency result: %u (%f)", (int)round(etResult), etResult);
Log.sinfoln("REGULATOR.EQUITHERM", PSTR("New emergency result: %u (%f)"), (int) round(etResult), etResult);
} else {
newTemp += prevEtResult;
@@ -105,11 +106,11 @@ protected:
if (fabs(prevHeatingTarget - settings.heating.target) > 0.0001) {
prevHeatingTarget = settings.heating.target;
Log.sinfoln("REGULATOR", "New target: %f", settings.heating.target);
Log.sinfoln("REGULATOR", PSTR("New target: %f"), settings.heating.target);
if (settings.equitherm.enable && settings.pid.enable) {
pidRegulator.integral = 0;
Log.sinfoln("REGULATOR.PID", "Integral sum has been reset");
Log.sinfoln("REGULATOR.PID", PSTR("Integral sum has been reset"));
}
}
@@ -121,7 +122,7 @@ protected:
prevEtResult = etResult;
newTemp += etResult;
Log.sinfoln("REGULATOR.EQUITHERM", "New result: %u (%f)", (int)round(etResult), etResult);
Log.sinfoln("REGULATOR.EQUITHERM", PSTR("New result: %u (%f)"), (int) round(etResult), etResult);
} else {
newTemp += prevEtResult;
@@ -139,7 +140,7 @@ protected:
prevPidResult = pidResult;
newTemp += pidResult;
Log.sinfoln("REGULATOR.PID", "New result: %d (%f)", (int)round(pidResult), pidResult);
Log.sinfoln("REGULATOR.PID", PSTR("New result: %d (%f)"), (int) round(pidResult), pidResult);
} else {
newTemp += prevPidResult;
@@ -168,7 +169,7 @@ protected:
tunerInit = false;
tunerRegulator = 0;
tunerState = 0;
Log.sinfoln("REGULATOR.TUNING", "Stopped");
Log.sinfoln("REGULATOR.TUNING", PSTR("Stopped"));
}
if (!vars.tuning.enable) {
@@ -178,7 +179,7 @@ protected:
if (vars.tuning.regulator == 0) {
// @TODO дописать
Log.sinfoln("REGULATOR.TUNING.EQUITHERM", "Not implemented");
Log.sinfoln("REGULATOR.TUNING.EQUITHERM", PSTR("Not implemented"));
return 0;
} else if (vars.tuning.regulator == 1) {
@@ -188,7 +189,7 @@ protected:
: settings.heating.target;
if (tunerInit && pidTuner.getState() == 3) {
Log.sinfoln("REGULATOR.TUNING.PID", "Finished");
Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Finished"));
for (Stream* stream : Log.getStreams()) {
pidTuner.debugText(stream);
}
@@ -199,7 +200,7 @@ protected:
tunerState = 0;
if (pidTuner.getAccuracy() < 90) {
Log.swarningln("REGULATOR.TUNING.PID", "Bad result, try again...");
Log.swarningln("REGULATOR.TUNING.PID", PSTR("Bad result, try again..."));
} else {
settings.pid.p_factor = pidTuner.getPID_p();
@@ -211,7 +212,7 @@ protected:
}
if (!tunerInit) {
Log.sinfoln("REGULATOR.TUNING.PID", "Start...");
Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Start..."));
float step;
if (vars.temperatures.indoor - vars.temperatures.outdoor > 10) {
@@ -221,7 +222,7 @@ protected:
}
float startTemp = step;
Log.sinfoln("REGULATOR.TUNING.PID", "Started. Start value: %f, step: %f", startTemp, step);
Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Started. Start value: %f, step: %f"), startTemp, step);
pidTuner.setParameters(NORMAL, startTemp, step, 20 * 60 * 1000, 0.15, 60 * 1000, 10000);
tunerInit = true;
tunerRegulator = 1;
@@ -231,7 +232,7 @@ protected:
pidTuner.compute();
if (tunerState > 0 && pidTuner.getState() != tunerState) {
Log.sinfoln("REGULATOR.TUNING.PID", "Log:");
Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Log:"));
for (Stream* stream : Log.getStreams()) {
pidTuner.debugText(stream);
}