feat: added slave parameters to index page on portal; added poll ID125 (opentherm protocol version)

This commit is contained in:
Yurii
2024-04-07 22:59:43 +03:00
parent 44b6620431
commit 92ca257d32
5 changed files with 72 additions and 1 deletions

View File

@@ -206,6 +206,21 @@
<th scope="row">Exhaust temp:</th>
<td><b class="exhaust-temp"></b> <span class="temp-unit"></span></td>
</tr>
<!-- Diag -->
<tr>
<th scope="row">Slave parameters:</th>
<td>
<pre><b>Vendor:</b> <span class="slave-vendor"></span>
<b>Member ID:</b> <span class="slave-member-id"></span>
<b>Flags:</b> <span class="slave-flags"></span>
<b>Type:</b> <span class="slave-type"></span>
<b>Version:</b> <span class="slave-version"></span>
<b>OT version:</b> <span class="slave-ot-version"></span>
<b>Heating limits:</b> <span class="heating-min-temp"></span>...<span class="heating-max-temp"></span> <span class="temp-unit"></span>
<b>DHW limits:</b> <span class="dhw-min-temp"></span>...<span class="dhw-max-temp"></span> <span class="temp-unit"></span></pre>
</td>
</tr>
</tbody>
</table>
</div>

Binary file not shown.

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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('[');