Add BMS polling controls to embedded dashboard
This commit is contained in:
@@ -66,6 +66,11 @@ const char INDEX_HTML[] PROGMEM = R"rawliteral(
|
|||||||
<div class="row"><span class="muted">Battery temp</span><span class="v" id="battTemp">--</span></div>
|
<div class="row"><span class="muted">Battery temp</span><span class="v" id="battTemp">--</span></div>
|
||||||
<div class="row"><span class="muted">Cell delta</span><span class="v" id="delta">--</span></div>
|
<div class="row"><span class="muted">Cell delta</span><span class="v" id="delta">--</span></div>
|
||||||
<div class="row"><span class="muted">Cycles</span><span class="v" id="cycles">--</span></div>
|
<div class="row"><span class="muted">Cycles</span><span class="v" id="cycles">--</span></div>
|
||||||
|
<div class="row"><span class="muted">BMS Polling</span><span class="v" id="bmsEnabledText">--</span></div>
|
||||||
|
<div class="relayBtns">
|
||||||
|
<button onclick="setBmsEnabled(true)">Enable BMS</button>
|
||||||
|
<button class="off" onclick="setBmsEnabled(false)">Disable BMS</button>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="card span6">
|
<section class="card span6">
|
||||||
@@ -112,6 +117,18 @@ const $=id=>document.getElementById(id);
|
|||||||
function fmt(n,d=1){return typeof n==="number"?n.toFixed(d):"--"}
|
function fmt(n,d=1){return typeof n==="number"?n.toFixed(d):"--"}
|
||||||
function temp(v){return typeof v==="number"?fmt(v,1)+"°F":"Offline"}
|
function temp(v){return typeof v==="number"?fmt(v,1)+"°F":"Offline"}
|
||||||
function clsAlarm(v){return v?"bad":"good"}
|
function clsAlarm(v){return v?"bad":"good"}
|
||||||
|
async function setBmsEnabled(enabled){
|
||||||
|
try{
|
||||||
|
await fetch("/config/bms",{
|
||||||
|
method:"POST",
|
||||||
|
headers:{"Content-Type":"application/json"},
|
||||||
|
body:JSON.stringify({enabled:enabled})
|
||||||
|
});
|
||||||
|
await fetch("/config/save",{method:"POST"});
|
||||||
|
await load();
|
||||||
|
}catch(e){}
|
||||||
|
}
|
||||||
|
|
||||||
async function relay(id,on){
|
async function relay(id,on){
|
||||||
try{
|
try{
|
||||||
await fetch("/relay/set",{
|
await fetch("/relay/set",{
|
||||||
@@ -137,6 +154,8 @@ function render(data){
|
|||||||
$("battTemp").textContent=temp(b.temperature_f);
|
$("battTemp").textContent=temp(b.temperature_f);
|
||||||
$("delta").textContent=(typeof b.cell_delta_mv==="number"?b.cell_delta_mv:"--")+" mV";
|
$("delta").textContent=(typeof b.cell_delta_mv==="number"?b.cell_delta_mv:"--")+" mV";
|
||||||
$("cycles").textContent=b.cycle_count??"--";
|
$("cycles").textContent=b.cycle_count??"--";
|
||||||
|
const bmsCfg=data.config?.bms||{};
|
||||||
|
$("bmsEnabledText").textContent=bmsCfg.enabled ? "Enabled" : "Disabled";
|
||||||
|
|
||||||
$("temps").innerHTML=(data.temps||[]).map(t=>`
|
$("temps").innerHTML=(data.temps||[]).map(t=>`
|
||||||
<div class="item">
|
<div class="item">
|
||||||
|
|||||||
Reference in New Issue
Block a user