1 Commits

Author SHA1 Message Date
Yurii
eb943dc447 Merge 587678f184 into d50b70c211 2025-03-16 13:31:48 +00:00
5 changed files with 15 additions and 41 deletions

View File

@@ -112,27 +112,6 @@ public:
return (byte)id == responseId; return (byte)id == responseId;
} }
static uint8_t getResponseMessageTypeId(unsigned long response) {
return (response << 1) >> 29;
}
static const char* getResponseMessageTypeString(unsigned long response) {
uint8_t msgType = getResponseMessageTypeId(response);
switch (msgType) {
case (uint8_t) OpenThermMessageType::READ_ACK:
case (uint8_t) OpenThermMessageType::WRITE_ACK:
case (uint8_t) OpenThermMessageType::DATA_INVALID:
case (uint8_t) OpenThermMessageType::UNKNOWN_DATA_ID:
return CustomOpenTherm::messageTypeToString(
static_cast<OpenThermMessageType>(msgType)
);
default:
return "UNKNOWN";
}
}
// converters // converters
template <class T> template <class T>
static unsigned int toFloat(const T val) { static unsigned int toFloat(const T val) {

View File

@@ -93,13 +93,8 @@ protected:
this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) { this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) {
Log.sverboseln( Log.sverboseln(
FPSTR(L_OT), FPSTR(L_OT),
F("ID: %4d Request: %8lx Response: %8lx Msg type: %s Attempt: %2d Status: %s"), F("ID: %4d Request: %8lx Response: %8lx Attempt: %2d Status: %s"),
CustomOpenTherm::getDataID(request), CustomOpenTherm::getDataID(request), request, response, attempt, CustomOpenTherm::statusToString(status)
request,
response,
CustomOpenTherm::getResponseMessageTypeString(response),
attempt,
CustomOpenTherm::statusToString(status)
); );
if (status == OpenThermResponseStatus::SUCCESS) { if (status == OpenThermResponseStatus::SUCCESS) {
@@ -1190,17 +1185,17 @@ protected:
bool needSetDhwTemp(const float target) { bool needSetDhwTemp(const float target) {
return millis() - this->dhwSetTempTime > this->dhwSetTempInterval return millis() - this->dhwSetTempTime > this->dhwSetTempInterval
|| fabsf(target - vars.slave.dhw.targetTemp) > 0.05f; || fabsf(target - vars.slave.dhw.targetTemp) > 0.001f;
} }
bool needSetHeatingTemp(const float target) { bool needSetHeatingTemp(const float target) {
return millis() - this->heatingSetTempTime > this->heatingSetTempInterval return millis() - this->heatingSetTempTime > this->heatingSetTempInterval
|| fabsf(target - vars.slave.heating.targetTemp) > 0.05f; || fabsf(target - vars.slave.heating.targetTemp) > 0.001f;
} }
bool needSetCh2Temp(const float target) { bool needSetCh2Temp(const float target) {
return millis() - this->ch2SetTempTime > this->ch2SetTempInterval return millis() - this->ch2SetTempTime > this->ch2SetTempInterval
|| fabsf(target - vars.slave.ch2.targetTemp) > 0.05f; || fabsf(target - vars.slave.ch2.targetTemp) > 0.001f;
} }
bool updateSlaveConfig() { bool updateSlaveConfig() {
@@ -1361,7 +1356,7 @@ protected:
return CustomOpenTherm::getUInt(response) == request; return CustomOpenTherm::getUInt(response) == request;
} }
bool setMaxHeatingTemp(const float temperature) { bool setMaxHeatingTemp(const uint8_t temperature) {
const unsigned int request = CustomOpenTherm::temperatureToData(temperature); const unsigned int request = CustomOpenTherm::temperatureToData(temperature);
const unsigned long response = this->instance->sendRequest(CustomOpenTherm::buildRequest( const unsigned long response = this->instance->sendRequest(CustomOpenTherm::buildRequest(
OpenThermMessageType::WRITE_DATA, OpenThermMessageType::WRITE_DATA,

View File

@@ -342,15 +342,15 @@
"equitherm": { "equitherm": {
"slope": { "slope": {
"title": "Slope", "title": "Slope",
"note": "Heat loss compensation. Main tuning parameter." "note": ""
}, },
"exponent": { "exponent": {
"title": "Exponent", "title": "Exponent",
"note": "Radiator efficiency. Typical values: 1.1 - Floor heating, 1.2 - Cast iron, 1.3 - Panel radiators, 1.4 - Convectors." "note": ""
}, },
"shift": { "shift": {
"title": "Shift", "title": "Shift",
"note": "Compensates for additional heat losses (e.g., in pipes) or extra heat sources." "note": ""
}, },
"targetDiffFactor": { "targetDiffFactor": {
"title": "T factor", "title": "T factor",

View File

@@ -342,15 +342,15 @@
"equitherm": { "equitherm": {
"slope": { "slope": {
"title": "Pendenza", "title": "Pendenza",
"note": "Compensazione delle perdite di calore. Principale parametro di regolazione." "note": ""
}, },
"exponent": { "exponent": {
"title": "Esponente", "title": "Esponente",
"note": "Efficienza del radiatore. Valori tipici: 1.1 - Riscaldamento a pavimento, 1.2 - Radiatori in ghisa, 1.3 - Radiatori a pannelli, 1.4 - Convetttori." "note": ""
}, },
"shift": { "shift": {
"title": "Spostare", "title": "Spostare",
"note": "Compensa le perdite di calore aggiuntive (ad esempio, nelle tubature) o fonti di calore extra." "note": ""
}, },
"targetDiffFactor": { "targetDiffFactor": {
"title": "Fattore T", "title": "Fattore T",

View File

@@ -342,15 +342,15 @@
"equitherm": { "equitherm": {
"slope": { "slope": {
"title": "Наклон", "title": "Наклон",
"note": "Компенсация теплопотерь. Основной параметр настройки." "note": ""
}, },
"exponent": { "exponent": {
"title": "Экспонента", "title": "Экспонента",
"note": "Эффективность радиатора. Типичные значения: 1.1 - Тёплый пол, 1.2 - Чугунные радиаторы, 1.3 - Панельные радиаторы, 1.4 - Конвекторы." "note": ""
}, },
"shift": { "shift": {
"title": "Смещение", "title": "Смещение",
"note": "Компенсирует дополнительные теплопотери (например, в трубах) или дополнительные источники тепла." "note": ""
}, },
"targetDiffFactor": { "targetDiffFactor": {
"title": "Коэффициент T", "title": "Коэффициент T",