chore: bump OpenTherm Library to master

This commit is contained in:
Yurii
2024-03-09 00:03:34 +03:00
parent 7cbc52a8b0
commit 07ab121788
5 changed files with 69 additions and 74 deletions

View File

@@ -46,7 +46,7 @@ public:
unsigned long _response; unsigned long _response;
OpenThermResponseStatus _responseStatus = OpenThermResponseStatus::NONE; OpenThermResponseStatus _responseStatus = OpenThermResponseStatus::NONE;
if (!this->sendRequestAync(request)) { if (!this->sendRequestAsync(request)) {
_response = 0; _response = 0;
} else { } else {
@@ -88,7 +88,7 @@ public:
| (dhwBlocking << 6); | (dhwBlocking << 6);
data <<= 8; data <<= 8;
return this->sendRequest(this->buildRequest( return this->sendRequest(buildRequest(
OpenThermMessageType::READ_DATA, OpenThermMessageType::READ_DATA,
OpenThermMessageID::Status, OpenThermMessageID::Status,
data data
@@ -96,30 +96,30 @@ public:
} }
bool setHeatingCh1Temp(float temperature) { bool setHeatingCh1Temp(float temperature) {
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::TSet, OpenThermMessageID::TSet,
this->temperatureToData(temperature) temperatureToData(temperature)
)); ));
return isValidResponse(response); return isValidResponse(response);
} }
bool setHeatingCh2Temp(float temperature) { bool setHeatingCh2Temp(float temperature) {
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::TsetCH2, OpenThermMessageID::TsetCH2,
this->temperatureToData(temperature) temperatureToData(temperature)
)); ));
return isValidResponse(response); return isValidResponse(response);
} }
bool setDhwTemp(float temperature) { bool setDhwTemp(float temperature) {
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::TdhwSet, OpenThermMessageID::TdhwSet,
this->temperatureToData(temperature) temperatureToData(temperature)
)); ));
return isValidResponse(response); return isValidResponse(response);
@@ -128,9 +128,9 @@ public:
bool sendBoilerReset() { bool sendBoilerReset() {
unsigned int data = 1; unsigned int data = 1;
data <<= 8; data <<= 8;
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::Command, OpenThermMessageID::RemoteRequest,
data data
)); ));
@@ -140,9 +140,9 @@ public:
bool sendServiceReset() { bool sendServiceReset() {
unsigned int data = 10; unsigned int data = 10;
data <<= 8; data <<= 8;
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::Command, OpenThermMessageID::RemoteRequest,
data data
)); ));
@@ -152,9 +152,9 @@ public:
bool sendWaterFilling() { bool sendWaterFilling() {
unsigned int data = 2; unsigned int data = 2;
data <<= 8; data <<= 8;
unsigned long response = this->sendRequest(this->buildRequest( unsigned long response = this->sendRequest(buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::Command, OpenThermMessageID::RemoteRequest,
data data
)); ));

View File

@@ -16,8 +16,8 @@ extra_configs = secrets.default.ini
framework = arduino framework = arduino
lib_deps = lib_deps =
bblanchon/ArduinoJson@^7.0.3 bblanchon/ArduinoJson@^7.0.3
;ihormelnyk/OpenTherm Library@^1.1.4 ;ihormelnyk/OpenTherm Library@^1.1.5
https://github.com/Laxilef/opentherm_library/archive/refs/heads/fix_start_bit.zip https://github.com/ihormelnyk/opentherm_library.git?080324
arduino-libraries/ArduinoMqttClient@^0.1.8 arduino-libraries/ArduinoMqttClient@^0.1.8
lennarthennigs/ESP Telnet@^2.2 lennarthennigs/ESP Telnet@^2.2
gyverlibs/FileData@^1.0.2 gyverlibs/FileData@^1.0.2

View File

@@ -69,7 +69,7 @@ protected:
}*/ }*/
int getTaskPriority() { int getTaskPriority() {
return 1; return 2;
} }
bool isReadyForSend() { bool isReadyForSend() {

View File

@@ -9,10 +9,6 @@ public:
ot = new CustomOpenTherm(settings.opentherm.inPin, settings.opentherm.outPin); ot = new CustomOpenTherm(settings.opentherm.inPin, settings.opentherm.outPin);
} }
static void IRAM_ATTR handleInterrupt() {
ot->handleInterrupt();
}
protected: protected:
unsigned short readyTime = 60000; unsigned short readyTime = 60000;
unsigned short dhwSetTempInterval = 60000; unsigned short dhwSetTempInterval = 60000;
@@ -36,7 +32,7 @@ protected:
} }
int getTaskPriority() { int getTaskPriority() {
return 2; return 5;
} }
void setup() { void setup() {
@@ -46,7 +42,7 @@ protected:
Log.straceln( Log.straceln(
FPSTR(L_OT), FPSTR(L_OT),
F("ID: %4d Request: %8lx Response: %8lx Attempt: %2d Status: %s"), F("ID: %4d Request: %8lx Response: %8lx Attempt: %2d Status: %s"),
ot->getDataID(request), request, response, attempt, ot->statusToString(status) CustomOpenTherm::getDataID(request), request, response, attempt, CustomOpenTherm::statusToString(status)
); );
if (status == OpenThermResponseStatus::SUCCESS) { if (status == OpenThermResponseStatus::SUCCESS) {
@@ -66,8 +62,7 @@ protected:
this->delay(25); this->delay(25);
}); });
ot->setMinWaitTimeForStartBit(20000); ot->begin();
ot->begin(OpenThermTask::handleInterrupt);
#ifdef LED_OT_RX_PIN #ifdef LED_OT_RX_PIN
pinMode(LED_OT_RX_PIN, OUTPUT); pinMode(LED_OT_RX_PIN, OUTPUT);
@@ -133,8 +128,8 @@ protected:
settings.opentherm.dhwBlocking settings.opentherm.dhwBlocking
); );
if (!ot->isValidResponse(localResponse)) { if (!CustomOpenTherm::isValidResponse(localResponse)) {
Log.swarningln(FPSTR(L_OT), F("Invalid response after setBoilerStatus: %s"), ot->statusToString(ot->getLastResponseStatus())); Log.swarningln(FPSTR(L_OT), F("Invalid response after setBoilerStatus: %s"), CustomOpenTherm::statusToString(ot->getLastResponseStatus()));
} }
if (!vars.states.otStatus && millis() - this->lastSuccessResponse < 1150) { if (!vars.states.otStatus && millis() - this->lastSuccessResponse < 1150) {
@@ -166,11 +161,11 @@ protected:
Log.sinfoln(FPSTR(L_OT_HEATING), "%s", heatingEnabled ? F("Enabled") : F("Disabled")); Log.sinfoln(FPSTR(L_OT_HEATING), "%s", heatingEnabled ? F("Enabled") : F("Disabled"));
} }
vars.states.heating = ot->isCentralHeatingActive(localResponse); vars.states.heating = CustomOpenTherm::isCentralHeatingActive(localResponse);
vars.states.dhw = settings.opentherm.dhwPresent ? ot->isHotWaterActive(localResponse) : false; vars.states.dhw = settings.opentherm.dhwPresent ? CustomOpenTherm::isHotWaterActive(localResponse) : false;
vars.states.flame = ot->isFlameOn(localResponse); vars.states.flame = CustomOpenTherm::isFlameOn(localResponse);
vars.states.fault = ot->isFault(localResponse); vars.states.fault = CustomOpenTherm::isFault(localResponse);
vars.states.diagnostic = ot->isDiagnostic(localResponse); vars.states.diagnostic = CustomOpenTherm::isDiagnostic(localResponse);
// These parameters will be updated every minute // These parameters will be updated every minute
if (millis() - this->prevUpdateNonEssentialVars > 60000) { if (millis() - this->prevUpdateNonEssentialVars > 60000) {
@@ -391,13 +386,13 @@ protected:
} }
bool updateSlaveConfig() { bool updateSlaveConfig() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::SConfigSMemberIDcode, OpenThermMessageID::SConfigSMemberIDcode,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -452,23 +447,23 @@ protected:
return true; return true;
} }
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::WRITE_DATA, OpenThermRequestType::WRITE_DATA,
OpenThermMessageID::MConfigMMemberIDcode, OpenThermMessageID::MConfigMMemberIDcode,
request request
)); ));
return ot->isValidResponse(response); return CustomOpenTherm::isValidResponse(response);
} }
bool setMaxModulationLevel(byte value) { bool setMaxModulationLevel(byte value) {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::WRITE_DATA, OpenThermRequestType::WRITE_DATA,
OpenThermMessageID::MaxRelModLevelSetting, OpenThermMessageID::MaxRelModLevelSetting,
ot->toF88(value) ot->toF88(value)
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -477,28 +472,28 @@ protected:
} }
bool updateSlaveOtVersion() { bool updateSlaveOtVersion() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::OpenThermVersionSlave, OpenThermMessageID::OpenThermVersionSlave,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
vars.parameters.slaveOtVersion = ot->getFloat(response); vars.parameters.slaveOtVersion = CustomOpenTherm::getFloat(response);
return true; return true;
} }
bool setMasterOtVersion(float version) { bool setMasterOtVersion(float version) {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::WRITE_DATA, OpenThermRequestType::WRITE_DATA,
OpenThermMessageID::OpenThermVersionMaster, OpenThermMessageID::OpenThermVersionMaster,
ot->toF88(version) ot->toF88(version)
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -508,13 +503,13 @@ protected:
} }
bool updateSlaveVersion() { bool updateSlaveVersion() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::SlaveVersion, OpenThermMessageID::SlaveVersion,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -525,13 +520,13 @@ protected:
} }
bool setMasterVersion(uint8_t version, uint8_t type) { bool setMasterVersion(uint8_t version, uint8_t type) {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::WRITE_DATA, OpenThermRequestType::WRITE_DATA,
OpenThermMessageID::MasterVersion, OpenThermMessageID::MasterVersion,
(unsigned int) version | (unsigned int) type << 8 (unsigned int) version | (unsigned int) type << 8
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -542,13 +537,13 @@ protected:
} }
bool updateMinMaxDhwTemp() { bool updateMinMaxDhwTemp() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::TdhwSetUBTdhwSetLB, OpenThermMessageID::TdhwSetUBTdhwSetLB,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -566,13 +561,13 @@ protected:
} }
bool updateMinMaxHeatingTemp() { bool updateMinMaxHeatingTemp() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::MaxTSetUBMaxTSetLB, OpenThermMessageID::MaxTSetUBMaxTSetLB,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -589,42 +584,42 @@ protected:
} }
bool setMaxHeatingTemp(byte value) { bool setMaxHeatingTemp(byte value) {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,
OpenThermMessageID::MaxTSet, OpenThermMessageID::MaxTSet,
ot->temperatureToData(value) CustomOpenTherm::temperatureToData(value)
)); ));
return ot->isValidResponse(response); return CustomOpenTherm::isValidResponse(response);
} }
bool updateOutsideTemp() { bool updateOutsideTemp() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::Toutside, OpenThermMessageID::Toutside,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
vars.temperatures.outdoor = ot->getFloat(response) + settings.sensors.outdoor.offset; vars.temperatures.outdoor = CustomOpenTherm::getFloat(response) + settings.sensors.outdoor.offset;
return true; return true;
} }
bool updateHeatingTemp() { bool updateHeatingTemp() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermMessageType::READ_DATA, OpenThermMessageType::READ_DATA,
OpenThermMessageID::Tboiler, OpenThermMessageID::Tboiler,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
float value = ot->getFloat(response); float value = CustomOpenTherm::getFloat(response);
if (value <= 0) { if (value <= 0) {
return false; return false;
} }
@@ -635,17 +630,17 @@ protected:
bool updateDhwTemp() { bool updateDhwTemp() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermMessageType::READ_DATA, OpenThermMessageType::READ_DATA,
OpenThermMessageID::Tdhw, OpenThermMessageID::Tdhw,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
float value = ot->getFloat(response); float value = CustomOpenTherm::getFloat(response);
if (value <= 0) { if (value <= 0) {
return false; return false;
} }
@@ -655,17 +650,17 @@ protected:
} }
bool updateDhwFlowRate() { bool updateDhwFlowRate() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermMessageType::READ_DATA, OpenThermMessageType::READ_DATA,
OpenThermMessageID::DHWFlowRate, OpenThermMessageID::DHWFlowRate,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
float value = ot->getFloat(response); float value = CustomOpenTherm::getFloat(response);
if (value > 16 && this->dhwFlowRateMultiplier != 10) { if (value > 16 && this->dhwFlowRateMultiplier != 10) {
this->dhwFlowRateMultiplier = 10; this->dhwFlowRateMultiplier = 10;
} }
@@ -675,13 +670,13 @@ protected:
} }
bool updateFaultCode() { bool updateFaultCode() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::ASFflags, OpenThermMessageID::ASFflags,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -690,13 +685,13 @@ protected:
} }
bool updateModulationLevel() { bool updateModulationLevel() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::RelModLevel, OpenThermMessageID::RelModLevel,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
@@ -711,17 +706,17 @@ protected:
} }
bool updatePressure() { bool updatePressure() {
unsigned long response = ot->sendRequest(ot->buildRequest( unsigned long response = ot->sendRequest(CustomOpenTherm::buildRequest(
OpenThermRequestType::READ_DATA, OpenThermRequestType::READ_DATA,
OpenThermMessageID::CHPressure, OpenThermMessageID::CHPressure,
0 0
)); ));
if (!ot->isValidResponse(response)) { if (!CustomOpenTherm::isValidResponse(response)) {
return false; return false;
} }
float value = ot->getFloat(response); float value = CustomOpenTherm::getFloat(response);
if (value > 5 && this->pressureMultiplier != 10) { if (value > 5 && this->pressureMultiplier != 10) {
this->pressureMultiplier = 10; this->pressureMultiplier = 10;
} }

View File

@@ -62,7 +62,7 @@ protected:
}*/ }*/
int getTaskPriority() { int getTaskPriority() {
return 0; return 1;
} }
void setup() { void setup() {