5 Commits

5 changed files with 41 additions and 15 deletions

View File

@@ -112,6 +112,27 @@ 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,8 +93,13 @@ 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 Attempt: %2d Status: %s"), F("ID: %4d Request: %8lx Response: %8lx Msg type: %s Attempt: %2d Status: %s"),
CustomOpenTherm::getDataID(request), request, response, attempt, CustomOpenTherm::statusToString(status) CustomOpenTherm::getDataID(request),
request,
response,
CustomOpenTherm::getResponseMessageTypeString(response),
attempt,
CustomOpenTherm::statusToString(status)
); );
if (status == OpenThermResponseStatus::SUCCESS) { if (status == OpenThermResponseStatus::SUCCESS) {
@@ -1185,17 +1190,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.001f; || fabsf(target - vars.slave.dhw.targetTemp) > 0.05f;
} }
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.001f; || fabsf(target - vars.slave.heating.targetTemp) > 0.05f;
} }
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.001f; || fabsf(target - vars.slave.ch2.targetTemp) > 0.05f;
} }
bool updateSlaveConfig() { bool updateSlaveConfig() {
@@ -1356,7 +1361,7 @@ protected:
return CustomOpenTherm::getUInt(response) == request; return CustomOpenTherm::getUInt(response) == request;
} }
bool setMaxHeatingTemp(const uint8_t temperature) { bool setMaxHeatingTemp(const float 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": "" "note": "Heat loss compensation. Main tuning parameter."
}, },
"exponent": { "exponent": {
"title": "Exponent", "title": "Exponent",
"note": "" "note": "Radiator efficiency. Typical values: 1.1 - Floor heating, 1.2 - Cast iron, 1.3 - Panel radiators, 1.4 - Convectors."
}, },
"shift": { "shift": {
"title": "Shift", "title": "Shift",
"note": "" "note": "Compensates for additional heat losses (e.g., in pipes) or extra heat sources."
}, },
"targetDiffFactor": { "targetDiffFactor": {
"title": "T factor", "title": "T factor",

View File

@@ -342,15 +342,15 @@
"equitherm": { "equitherm": {
"slope": { "slope": {
"title": "Pendenza", "title": "Pendenza",
"note": "" "note": "Compensazione delle perdite di calore. Principale parametro di regolazione."
}, },
"exponent": { "exponent": {
"title": "Esponente", "title": "Esponente",
"note": "" "note": "Efficienza del radiatore. Valori tipici: 1.1 - Riscaldamento a pavimento, 1.2 - Radiatori in ghisa, 1.3 - Radiatori a pannelli, 1.4 - Convetttori."
}, },
"shift": { "shift": {
"title": "Spostare", "title": "Spostare",
"note": "" "note": "Compensa le perdite di calore aggiuntive (ad esempio, nelle tubature) o fonti di calore extra."
}, },
"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": "" "note": "Эффективность радиатора. Типичные значения: 1.1 - Тёплый пол, 1.2 - Чугунные радиаторы, 1.3 - Панельные радиаторы, 1.4 - Конвекторы."
}, },
"shift": { "shift": {
"title": "Смещение", "title": "Смещение",
"note": "" "note": "Компенсирует дополнительные теплопотери (например, в трубах) или дополнительные источники тепла."
}, },
"targetDiffFactor": { "targetDiffFactor": {
"title": "Коэффициент T", "title": "Коэффициент T",