Add BMS polling controls to embedded dashboard

This commit is contained in:
2026-06-04 18:06:01 -06:00
parent 34606fb27a
commit 26e8cd01f4
@@ -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">