dashboard.section.diag
Vendor:
@@ -335,6 +355,8 @@
});
setTimeout(async function onLoadPage() {
+ let unitSystem = null;
+
if (modifiedTime) {
if ((Date.now() - modifiedTime) < 5000) {
setTimeout(onLoadPage, 1000);
@@ -372,6 +394,7 @@
const result = await response.json();
noRegulators = !result.opentherm.nativeHeatingControl && !result.equitherm.enabled && !result.pid.enabled;
prevSettings = result;
+ unitSystem = result.system.unitSystem;
newSettings.heating.enabled = result.heating.enabled;
newSettings.heating.turbo = result.heating.turbo;
newSettings.heating.target = result.heating.target;
@@ -391,9 +414,9 @@
setCheckboxValue('#tDhwEnabled', result.dhw.enabled);
setValue('#tDhwTargetTemp', result.dhw.target);
- setValue('.tempUnit', temperatureUnit(result.system.unitSystem));
- setValue('.pressureUnit', pressureUnit(result.system.unitSystem));
- setValue('.volumeUnit', volumeUnit(result.system.unitSystem));
+ setValue('.tempUnit', temperatureUnit(unitSystem));
+ setValue('.pressureUnit', pressureUnit(unitSystem));
+ setValue('.volumeUnit', volumeUnit(unitSystem));
} catch (error) {
console.log(error);
@@ -424,7 +447,11 @@
setValue('.sAppVersion', result.slave.appVersion);
setValue('.sProtocolVersion', result.slave.protocolVersion);
- setState('.sConnected', result.slave.connected);
+ setStatus(
+ '.sConnected',
+ result.slave.connected ? "success" : "error",
+ result.slave.connected ? "green" : "red"
+ );
setState('.sFlame', result.slave.flame);
setValue('.sModMin', result.slave.modulation.min);
@@ -441,26 +468,38 @@
setValue('.sDhwMinTemp', result.slave.dhw.minTemp);
setValue('.sDhwMaxTemp', result.slave.dhw.maxTemp);
- setState('.sFaultActive', result.slave.fault.active);
+ setStatus(
+ '.sFaultActive',
+ result.slave.fault.active ? "success" : "error",
+ result.slave.fault.active ? "red" : "green"
+ );
setValue(
'.sFaultCode',
result.slave.fault.active
- ? (result.slave.fault.code + " (0x" + dec2hex(result.slave.fault.code) + ")")
+ ? `${result.slave.fault.code} (0x${dec2hex(result.slave.fault.code)})`
: "-"
);
- setState('.sDiagActive', result.slave.diag.active);
+ setStatus(
+ '.sDiagActive',
+ result.slave.diag.active ? "success" : "error",
+ result.slave.diag.active ? "red" : "green"
+ );
setValue(
'.sDiagCode',
result.slave.diag.active
- ? (result.slave.diag.code + " (0x" + dec2hex(result.slave.diag.code) + ")")
+ ? `${result.slave.diag.code} (0x${dec2hex(result.slave.diag.code)})`
: "-"
);
// MASTER
setState('.mHeatEnabled', result.master.heating.enabled);
- setState('.mHeatBlocking', result.master.heating.blocking);
+ setStatus(
+ '.mHeatBlocking',
+ result.master.heating.blocking ? "success" : "error",
+ result.master.heating.blocking ? "red" : "green"
+ );
setState('.mHeatIndoorTempControl', result.master.heating.indoorTempControl);
setValue('.mHeatSetpointTemp', result.master.heating.setpointTemp);
setValue('.mHeatTargetTemp', result.master.heating.targetTemp);
@@ -478,9 +517,17 @@
setValue('.mDhwMinTemp', result.master.dhw.minTemp);
setValue('.mDhwMaxTemp', result.master.dhw.maxTemp);
- setState('.mNetworkConnected', result.master.network.connected);
+ setStatus(
+ '.mNetworkConnected',
+ result.master.network.connected ? "success" : "error",
+ result.master.network.connected ? "green" : "red"
+ );
setState('.mMqttConnected', result.master.mqtt.connected);
- setState('.mEmergencyState', result.master.emergency.state);
+ setStatus(
+ '.mEmergencyState',
+ result.master.emergency.state ? "success" : "error",
+ result.master.emergency.state ? "red" : "green"
+ );
setState('.mExtPumpState', result.master.externalPump.state);
setState('.mCascadeControlInput', result.master.cascadeControl.input);
setState('.mCascadeControlOutput', result.master.cascadeControl.output);
@@ -491,6 +538,84 @@
console.log(error);
}
+ // sensors
+ try {
+ const response = await fetch("/api/sensors?detailed=1", { cache: "no-cache" });
+ if (!response.ok) {
+ throw new Error("Response not valid");
+ }
+
+ const container = document.querySelector(".sensors");
+ const templateNode = container.querySelector(".template");
+ const result = await response.json();
+
+ for (const sensorId in result) {
+ let sensorNode = container.querySelector(`.sensor[data-id='${sensorId}']`);
+ if (sensorNode) {
+ continue;
+ }
+
+ sensorNode = templateNode.cloneNode(true);
+ sensorNode.dataset.id = sensorId;
+ sensorNode.classList.remove("template");
+ container.appendChild(sensorNode);
+ }
+
+ for (const sensorId in result) {
+ const sensorNode = container.querySelector(`.sensor[data-id='${sensorId}']`);
+ if (!sensorNode) {
+ continue;
+ }
+
+ const sData = result[sensorId];
+ if (sData.purpose == 255) {
+ sensorNode.classList.add("hidden");
+ continue;
+ }
+
+ sensorNode.classList.remove("hidden");
+
+ setStatus(
+ ".sStatus",
+ sData.connected ? "success" : "error",
+ sData.connected ? "green" : "red",
+ sensorNode
+ );
+ setValue(".sName", sData.name, sensorNode);
+ setValue(".sValue", "", sensorNode);
+
+ const statusNode = sensorNode.querySelector(`.sStatusContainer`);
+ if (statusNode) {
+ statusNode.dataset.tooltip = `${sData.signalQuality}%`;
+ }
+
+ if (sData.value !== undefined) {
+ const sUnit = purposeUnit(sData.purpose, unitSystem);
+ appendValue(".sValue", `${sData.value.toFixed(2)} ${sUnit !== null ? sUnit : ``}`, `
`, sensorNode);
+ }
+
+ if (sData.temperature !== undefined) {
+ const sUnit = temperatureUnit(unitSystem);
+ appendValue(".sValue", `${i18n('dashboard.sensors.values.temp')}: ${sData.temperature.toFixed(2)} ${sUnit !== null ? sUnit : ``}`, `
`, sensorNode);
+ }
+
+ if (sData.humidity !== undefined) {
+ appendValue(".sValue", `${i18n('dashboard.sensors.values.humidity')}: ${sData.humidity.toFixed(2)} %`, `
`, sensorNode);
+ }
+
+ if (sData.battery !== undefined) {
+ appendValue(".sValue", `${i18n('dashboard.sensors.values.battery')}: ${sData.battery.toFixed(2)} %`, `
`, sensorNode);
+ }
+
+ if (sData.rssi !== undefined) {
+ appendValue(".sValue", `${i18n('dashboard.sensors.values.rssi')}: ${sData.rssi.toFixed(0)} ${i18n('dbm')}`, `
`, sensorNode);
+ }
+ }
+
+ } catch (error) {
+ console.log(error);
+ }
+
setTimeout(onLoadPage, 10000);
}, 1000);
});
diff --git a/src_data/pages/index.html b/src_data/pages/index.html
index 132eaac..88f0585 100644
--- a/src_data/pages/index.html
+++ b/src_data/pages/index.html
@@ -11,12 +11,13 @@