Merge pull request #17 from mennodegraaf/ot-improvements

Improve opentherm handling
This commit is contained in:
Laxilef
2023-12-16 00:43:20 +03:00
committed by GitHub

View File

@@ -23,6 +23,7 @@ protected:
unsigned short heatingSetTempInterval = 60000; unsigned short heatingSetTempInterval = 60000;
bool pump = true; bool pump = true;
bool prevOtStatus = false;
unsigned long prevUpdateNonEssentialVars = 0; unsigned long prevUpdateNonEssentialVars = 0;
unsigned long startupTime = millis(); unsigned long startupTime = millis();
unsigned long dhwSetTempTime = 0; unsigned long dhwSetTempTime = 0;
@@ -57,11 +58,8 @@ protected:
#endif #endif
} }
void loop() { void initBoiler() {
static byte currentHeatingTemp, currentDhwTemp = 0; // Not all boilers support these, only try once when the boiler becomes connected
unsigned long localResponse;
if (millis() - prevUpdateNonEssentialVars > 60000) {
if (updateSlaveVersion()) { if (updateSlaveVersion()) {
Log.straceln(FPSTR(S_OT), F("Slave version: %u, type: %u"), vars.parameters.slaveVersion, vars.parameters.slaveType); Log.straceln(FPSTR(S_OT), F("Slave version: %u, type: %u"), vars.parameters.slaveVersion, vars.parameters.slaveType);
@@ -91,9 +89,12 @@ protected:
Log.swarningln(FPSTR(S_OT), F("Set master config failed")); Log.swarningln(FPSTR(S_OT), F("Set master config failed"));
} }
//yield();
} }
void loop() {
static byte currentHeatingTemp, currentDhwTemp = 0;
unsigned long localResponse;
bool heatingEnabled = (vars.states.emergency || settings.heating.enable) && pump && isReady(); bool heatingEnabled = (vars.states.emergency || settings.heating.enable) && pump && isReady();
bool heatingCh2Enabled = settings.opentherm.heatingCh2Enabled; bool heatingCh2Enabled = settings.opentherm.heatingCh2Enabled;
if (settings.opentherm.heatingCh1ToCh2) { if (settings.opentherm.heatingCh1ToCh2) {
@@ -115,6 +116,21 @@ protected:
if (!ot->isValidResponse(localResponse)) { if (!ot->isValidResponse(localResponse)) {
Log.swarningln(FPSTR(S_OT), F("Invalid response after setBoilerStatus: %s"), ot->statusToString(ot->getLastResponseStatus())); Log.swarningln(FPSTR(S_OT), F("Invalid response after setBoilerStatus: %s"), ot->statusToString(ot->getLastResponseStatus()));
}
if (vars.states.otStatus && !this->prevOtStatus) {
this->prevOtStatus = vars.states.otStatus;
Log.sinfoln(FPSTR(S_OT), F("Connected. Initializing"));
this->initBoiler();
} else if (!vars.states.otStatus && this->prevOtStatus) {
this->prevOtStatus = vars.states.otStatus;
Log.swarningln(FPSTR(S_OT), F("Disconnected"));
}
if (!vars.states.otStatus) {
// Boiler is disconnected, no need try setting other OT stuff
return; return;
} }
@@ -130,8 +146,6 @@ protected:
vars.states.fault = ot->isFault(localResponse); vars.states.fault = ot->isFault(localResponse);
vars.states.diagnostic = ot->isDiagnostic(localResponse); vars.states.diagnostic = ot->isDiagnostic(localResponse);
//
// These parameters will be updated every minute // These parameters will be updated every minute
if (millis() - prevUpdateNonEssentialVars > 60000) { if (millis() - prevUpdateNonEssentialVars > 60000) {
if (!heatingEnabled && settings.opentherm.modulationSyncWithHeating) { if (!heatingEnabled && settings.opentherm.modulationSyncWithHeating) {