From 0cff35ee12c51b3fc3fb8c449d1f1190fa9c5887 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 31 Mar 2024 06:32:23 +0300 Subject: [PATCH] feat: update portal for unit systems --- data/index.html | 18 +++++++++++++----- data/static/app.js.gz | Bin 3924 -> 4030 bytes src/MqttTask.h | 3 ++- src_data/static/app.js | 28 +++++++++++++++++++++++++--- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/data/index.html b/data/index.html index 2fd57f6..488f783 100644 --- a/data/index.html +++ b/data/index.html @@ -180,23 +180,31 @@ Indoor temp: - C + Outdoor temp: - C + Heating temp: - C + Heating setpoint temp: - C + + + + Heating return temp: + DHW temp: - C + + + + Exhaust temp: + diff --git a/data/static/app.js.gz b/data/static/app.js.gz index 306d6ea7181fb10af500b10eaa7a7407317b6155..bcd065fde4516a0cf7911b6437c98b4de8797cdf 100644 GIT binary patch literal 4030 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 diff --git a/src/MqttTask.h b/src/MqttTask.h index 1496aa8..aa3fca4 100644 --- a/src/MqttTask.h +++ b/src/MqttTask.h @@ -387,7 +387,8 @@ protected: bool published = false; bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable; - byte heatingMinTemp, heatingMaxTemp = 0; + byte heatingMinTemp = 0; + byte heatingMaxTemp = 0; bool editableOutdoorTemp = settings.sensors.outdoor.type == SensorType::MANUAL; bool editableIndoorTemp = settings.sensors.indoor.type == SensorType::MANUAL; diff --git a/src_data/static/app.js b/src_data/static/app.js index 97b8807..9e7ba1b 100644 --- a/src_data/static/app.js +++ b/src_data/static/app.js @@ -484,6 +484,7 @@ async function loadSettings() { setCheckboxValue('.system-debug', result.system.debug); setCheckboxValue('.system-use-serial', result.system.useSerial); setCheckboxValue('.system-use-telnet', result.system.useTelnet); + setRadioValue('.system-unit-system', result.system.unitSystem); setBusy('#system-settings-busy', '#system-settings', false); setCheckboxValue('.portal-use-auth', result.portal.useAuth); @@ -491,6 +492,7 @@ async function loadSettings() { setInputValue('.portal-password', result.portal.password); setBusy('#portal-settings-busy', '#portal-settings', false); + setRadioValue('.opentherm-unit-system', result.opentherm.unitSystem); setInputValue('.opentherm-in-gpio', result.opentherm.inGpio < 255 ? result.opentherm.inGpio : ''); setInputValue('.opentherm-out-gpio', result.opentherm.outGpio < 255 ? result.opentherm.outGpio : ''); setInputValue('.opentherm-member-id-code', result.opentherm.memberIdCode); @@ -534,6 +536,21 @@ async function loadVars() { let response = await fetch('/api/vars'); let result = await response.json(); + let unitSystemStr; + switch (result.system.unitSystem) { + case 0: + unitSystemStr = 'C'; + break; + + case 1: + unitSystemStr = 'F'; + break; + + default: + unitSystemStr = '?'; + break; + } + setState('.ot-connected', result.states.otStatus); setState('.ot-emergency', result.states.emergency); setState('.ot-heating', result.states.heating); @@ -552,10 +569,13 @@ async function loadVars() { 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); setBusy('.ot-busy', '.ot-table', false); + setValue('.unit-system', unitSystemStr); setValue('.version', result.system.version); setValue('.build-date', result.system.buildDate); setValue('.uptime', result.system.uptime); @@ -601,12 +621,14 @@ function setState(selector, value) { } function setValue(selector, value) { - let item = document.querySelector(selector); - if (!item) { + let items = document.querySelectorAll(selector); + if (!items.length) { return; } - item.innerHTML = value; + for (let item of items) { + item.innerHTML = value; + } } function setCheckboxValue(selector, value) {