diff --git a/data/index.html b/data/index.html
index ae9b4a8..d431514 100644
--- a/data/index.html
+++ b/data/index.html
@@ -206,6 +206,21 @@
Exhaust temp: |
|
+
+
+
+ | Slave parameters: |
+
+ Vendor:
+Member ID:
+Flags:
+Type:
+Version:
+OT version:
+Heating limits: ...
+DHW limits: ...
+ |
+
diff --git a/data/static/app.js.gz b/data/static/app.js.gz
index c1dc8fe..1b62381 100644
Binary files a/data/static/app.js.gz and b/data/static/app.js.gz differ
diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h
index 304e8fe..4a4922c 100644
--- a/src/OpenThermTask.h
+++ b/src/OpenThermTask.h
@@ -425,6 +425,13 @@ protected:
Log.swarningln(FPSTR(L_OT), F("Set master version failed"));
}
+ if (this->updateSlaveOtVersion()) {
+ Log.straceln(FPSTR(L_OT), F("Slave OT version: %f"), vars.parameters.slaveOtVersion);
+
+ } else {
+ Log.swarningln(FPSTR(L_OT), F("Get slave OT version failed"));
+ }
+
if (this->updateSlaveConfig()) {
Log.straceln(FPSTR(L_OT), F("Slave member id: %u, flags: %u"), vars.parameters.slaveMemberId, vars.parameters.slaveFlags);
diff --git a/src/utils.h b/src/utils.h
index 991b18b..3064355 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -1137,6 +1137,12 @@ void varsToJson(const Variables& src, JsonVariant dst) {
dst["parameters"]["heatingSetpoint"] = src.parameters.heatingSetpoint;
dst["parameters"]["dhwMinTemp"] = src.parameters.dhwMinTemp;
dst["parameters"]["dhwMaxTemp"] = src.parameters.dhwMaxTemp;
+
+ dst["parameters"]["slaveMemberId"] = src.parameters.slaveMemberId;
+ dst["parameters"]["slaveFlags"] = src.parameters.slaveFlags;
+ dst["parameters"]["slaveType"] = src.parameters.slaveType;
+ dst["parameters"]["slaveVersion"] = src.parameters.slaveVersion;
+ dst["parameters"]["slaveOtVersion"] = src.parameters.slaveOtVersion;
}
bool jsonToVars(const JsonVariantConst src, Variables& dst) {
diff --git a/src_data/static/app.js b/src_data/static/app.js
index f7063b8..0af1818 100644
--- a/src_data/static/app.js
+++ b/src_data/static/app.js
@@ -575,11 +575,24 @@ async function loadVars() {
setValue('.indoor-temp', result.temperatures.indoor);
setValue('.outdoor-temp', result.temperatures.outdoor);
setValue('.heating-temp', result.temperatures.heating);
- setValue('.heating-setpoint-temp', result.parameters.heatingSetpoint);
setValue('.heating-return-temp', result.temperatures.heatingReturn);
setValue('.dhw-temp', result.temperatures.dhw);
setValue('.exhaust-temp', result.temperatures.exhaust);
+ setValue('.heating-min-temp', result.parameters.heatingMinTemp);
+ setValue('.heating-max-temp', result.parameters.heatingMaxTemp);
+ setValue('.heating-setpoint-temp', result.parameters.heatingSetpoint);
+ setValue('.dhw-min-temp', result.parameters.dhwMinTemp);
+ setValue('.dhw-max-temp', result.parameters.dhwMaxTemp);
+
+ setValue('.slave-member-id', result.parameters.slaveMemberId);
+ setValue('.slave-vendor', memberIdToVendor(result.parameters.slaveMemberId));
+
+ setValue('.slave-flags', result.parameters.slaveFlags);
+ setValue('.slave-type', result.parameters.slaveType);
+ setValue('.slave-version', result.parameters.slaveVersion);
+ setValue('.slave-ot-version', result.parameters.slaveOtVersion);
+
setBusy('.ot-busy', '.ot-table', false);
setValue('.temp-unit', tempUnitStr);
@@ -670,6 +683,36 @@ function setInputValue(selector, value) {
}
+function memberIdToVendor(memberId) {
+ // https://github.com/Jeroen88/EasyOpenTherm/blob/main/src/EasyOpenTherm.h
+ // https://github.com/Evgen2/SmartTherm/blob/v0.7/src/Web.cpp
+ const vendorList = {
+ 1: "Baxi Fourtech/Luna 3",
+ 2: "AWB/Brink",
+ 4: "ATAG/Brötje/ELCO/GEMINOX",
+ 5: "Itho Daalderop",
+ 6: "IDEAL",
+ 8: "Buderus/Bosch/Hoval",
+ 9: "Ferroli",
+ 11: "Remeha/De Dietrich",
+ 16: "Unical",
+ 24: "Vaillant/Bulex",
+ 27: "Baxi",
+ 29: "Itho Daalderop",
+ 33: "Viessmann",
+ 56: "Baxi Luna Duo-Tec",
+ 131: "Nefit",
+ 148: "Navien",
+ 173: "Intergas",
+ 247: "Baxi Ampera",
+ 248: "Zota Lux-X"
+ };
+
+ return (memberId in vendorList)
+ ? vendorList[memberId]
+ : "unknown vendor";
+}
+
function form2json(data) {
let method = function (object, pair) {
let keys = pair[0].replace(/\]/g, '').split('[');