ui: add BMS scan button
This commit is contained in:
@@ -639,12 +639,15 @@ button[onclick^="scan"]{
|
||||
<input id="bmsAddressTypeInput" placeholder="Address type: public or random">
|
||||
<div class="btnrow">
|
||||
<button class="save" onclick="saveBmsFullConfig()">Save BMS</button>
|
||||
<button onclick="scanBmsDevices()">Scan BMS</button>
|
||||
<button class="off" onclick="setBmsEnabled(false)">Disable BMS</button>
|
||||
</div>
|
||||
<div class="btnrow">
|
||||
<button onclick="setBmsEnabled(true)">Enable BMS</button>
|
||||
</div>
|
||||
<div class="row"><span class="muted">BMS Polling</span><span class="v" id="bmsEnabledText">--</span></div>
|
||||
<div id="bmsScanStatus" class="muted"></div>
|
||||
<div id="bmsScanResults"></div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -1070,6 +1073,46 @@ async function saveDeviceConfig(){
|
||||
clearConfigTouched(["deviceNameInput"]);
|
||||
}
|
||||
|
||||
|
||||
async function scanBmsDevices(){
|
||||
const status=$("bmsScanStatus");
|
||||
const box=$("bmsScanResults");
|
||||
if(status) status.textContent="Scanning for BLE BMS devices...";
|
||||
if(box) box.innerHTML="";
|
||||
|
||||
try{
|
||||
const res=await fetch(api("/bms/scan"),{method:"POST"});
|
||||
const data=await res.json();
|
||||
const devices=data.devices||[];
|
||||
|
||||
if(status) status.textContent=devices.length ? `Found ${devices.length} device(s).` : "No BLE devices found.";
|
||||
|
||||
if(box){
|
||||
box.innerHTML=devices.map(d=>`
|
||||
<div class="configrow">
|
||||
<div>
|
||||
<div><b>${d.name||"Unnamed BLE device"}</b></div>
|
||||
<div class="muted">${d.address||""} RSSI ${d.rssi??"--"}</div>
|
||||
</div>
|
||||
<button onclick="selectScannedBms('${d.address||""}','${(d.name||"BMS").replace(/'/g,"\\'")}')">Select</button>
|
||||
</div>
|
||||
`).join("");
|
||||
}
|
||||
}catch(e){
|
||||
if(status) status.textContent="BMS scan failed.";
|
||||
}
|
||||
}
|
||||
|
||||
function selectScannedBms(address,name){
|
||||
setConfigValue("bmsNameInput",name||"BMS",true);
|
||||
setConfigValue("bmsAddressInput",address||"",true);
|
||||
setConfigValue("bmsAddressTypeInput","public",true);
|
||||
markConfigFieldTouched("bmsNameInput");
|
||||
markConfigFieldTouched("bmsAddressInput");
|
||||
markConfigFieldTouched("bmsAddressTypeInput");
|
||||
}
|
||||
|
||||
|
||||
async function saveBmsFullConfig(){
|
||||
const name=$("bmsNameInput")?.value.trim()||"BMS";
|
||||
const address=$("bmsAddressInput")?.value.trim()||"";
|
||||
|
||||
Reference in New Issue
Block a user