mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-22 23:44:25 +01:00
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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user