Added - Dynamically add attributes if defined in alias - cardThermo (ioBroker)

If the attributes (error, maintain, humidity, power, ...) are filled in the alias thermostat, then this is also visualized in the NSPanel cardThermo
This commit is contained in:
Armilar
2022-04-26 18:57:58 +02:00
committed by GitHub
parent a44879cb60
commit d8ff0c63ff

View File

@@ -527,18 +527,147 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
let destTemp = 0; let destTemp = 0;
if (existsState(id + ".SET")) { if (existsState(id + ".SET")) {
destTemp = getState(id + ".SET").val.toFixed(2) * 10; destTemp = getState(id + ".SET").val.toFixed(2) * 10;
log(id + ".SET " + destTemp)
} }
let status = "" let status = ""
if (existsState(id + ".MODE")) if (existsState(id + ".MODE"))
status = getState(id + ".MODE").val; status = getState(id + ".MODE").val;
let minTemp = 180 let minTemp = 180 //Min Temp 5°C
let maxTemp = 300 let maxTemp = 300 //Max Temp 30°C
let stepTemp = 5 let stepTemp = 5
//Dynamically add attributes if defined in alias
var thermButton = 0;
let i_list = Array.prototype.slice.apply($('[state.id="' + id + '.*"]'));
if ((i_list.length - 3) != 0) {
console.log(i_list.length -3)
if ((i_list.length -3)%2 == 0) {
if ((i_list.length - 3) == 2) {
thermButton = 6;
} else {
thermButton = 5;
}
} else {
if ((i_list.length - 3) == 1) {
thermButton = 2;
} else if ((i_list.length - 3) == 3) {
thermButton = 1;
} else {
thermButton = 0;
}
}
var i = 0;
var bt = ["","","","","","","","",""];
for (i = 0; i < thermButton; i++) {
bt[i] = "~~~~";
}
for (let i_index in i_list) {
let thermostatState = i_list[i_index].split('.');
if (thermostatState[thermostatState.length-1] != "SET" && thermostatState[thermostatState.length-1] != "ACTUAL" && thermostatState[thermostatState.length-1] != "MODE") {
i++;
switch (thermostatState[thermostatState.length-1]) {
case "HUMIDITY":
if (existsState(id + ".HUMIDITY") && getState(id + ".HUMIDITY").val != null) {
if (parseInt(getState(id + ".HUMIDITY").val) < 40) {
bt[i-1] = Icons.GetIcon("water-percent") + "~65504~1~bt" + (i-1) + "~";
} else if (parseInt(getState(id + ".HUMIDITY").val) < 30) {
bt[i-1] = Icons.GetIcon("water-percent") + "~63488~1~bt" + (i-1) + "~";
} else if (parseInt(getState(id + ".HUMIDITY").val) > 65) {
bt[i-1] = Icons.GetIcon("water-percent") + "~65504~1~bt" + (i-1) + "~";
} else if (parseInt(getState(id + ".HUMIDITY").val) > 75) {
bt[i-1] = Icons.GetIcon("water-percent") + "~63488~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "LOWBAT":
if (existsState(id + ".LOWBAT") && getState(id + ".LOWBAT").val != null) {
if (getState(id + ".LOWBAT").val) {
bt[i-1] = Icons.GetIcon("battery-low") + "~63488~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("battery-high") + "~2016~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "MAINTAIN":
if (existsState(id + ".MAINTAIN") && getState(id + ".MAINTAIN").val != null) {
if (getState(id + ".MAINTAIN").val >> .1) {
bt[i-1] = Icons.GetIcon("fire") + "~60897~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("fire") + "~33840~0~bt" + (i-1) + "~";
}
} else i--;
break;
case "UNREACH":
if (existsState(id + ".UNREACH") && getState(id + ".UNREACH").val != null) {
if (getState(id + ".UNREACH").val) {
bt[i-1] = Icons.GetIcon("wifi-off") + "~63488~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("wifi") + "~2016~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "POWER":
if (existsState(id + ".POWER") && getState(id + ".POWER").val != null) {
if (getState(id + ".POWER").val) {
bt[i-1] = Icons.GetIcon("power-standby") + "~2016~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("power-standby") + "~33840~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "ERROR":
if (existsState(id + ".ERROR") && getState(id + ".ERROR").val != null) {
if (getState(id + ".ERROR").val) {
bt[i-1] = Icons.GetIcon("alert-circle") + "~63488~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("alert-circle") + "~33840~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "WORKING":
if (existsState(id + ".WORKING") && getState(id + ".WORKING").val != null) {
if (getState(id + ".WORKING").val) {
bt[i-1] = Icons.GetIcon("briefcase-check") + "~2016~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("briefcase-check") + "~33840~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "BOOST":
if (existsState(id + ".BOOST") && getState(id + ".BOOST").val != null) {
if (getState(id + ".BOOST").val) {
bt[i-1] = Icons.GetIcon("fast-forward-60") + "~2016~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("fast-forward-60") + "~33840~1~bt" + (i-1) + "~";
}
} else i--;
break;
case "PARTY":
if (existsState(id + ".PARTY") && getState(id + ".PARTY").val != null) {
if (getState(id + ".PARTY").val) {
bt[i-1] = Icons.GetIcon("party-popper") + "~2016~1~bt" + (i-1) + "~";
} else {
bt[i-1] = Icons.GetIcon("party-popper") + "~33840~1~bt" + (i-1) + "~";
}
} else i--;
break;
default:
i--;
break;
}
}
}
for (let j = i; j < 9; j++) {
bt[j] = "~~~~";
}
}
let icon_res = bt[0] + bt[1] + bt[2] + bt[3] + bt[4] + bt[5] + bt[6] + bt[7] + bt[8];
out_msgs.push({ payload: "entityUpd~" + name + "~" + GetNavigationString(pageId) + "~" + id + "~" + currentTemp + "~" + destTemp + "~" + status + "~" + minTemp + "~" + maxTemp + "~" + stepTemp })
out_msgs.push({ payload: "entityUpd~" + name + "~" + GetNavigationString(pageId) + "~" + id + "~" + currentTemp + "~" + destTemp + "~" + status + "~" + minTemp + "~" + maxTemp + "~" + stepTemp + "~" +icon_res})
} }
return out_msgs return out_msgs