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">
|
<input id="bmsAddressTypeInput" placeholder="Address type: public or random">
|
||||||
<div class="btnrow">
|
<div class="btnrow">
|
||||||
<button class="save" onclick="saveBmsFullConfig()">Save BMS</button>
|
<button class="save" onclick="saveBmsFullConfig()">Save BMS</button>
|
||||||
|
<button onclick="scanBmsDevices()">Scan BMS</button>
|
||||||
<button class="off" onclick="setBmsEnabled(false)">Disable BMS</button>
|
<button class="off" onclick="setBmsEnabled(false)">Disable BMS</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnrow">
|
<div class="btnrow">
|
||||||
<button onclick="setBmsEnabled(true)">Enable BMS</button>
|
<button onclick="setBmsEnabled(true)">Enable BMS</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="row"><span class="muted">BMS Polling</span><span class="v" id="bmsEnabledText">--</span></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>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@@ -1070,6 +1073,46 @@ async function saveDeviceConfig(){
|
|||||||
clearConfigTouched(["deviceNameInput"]);
|
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(){
|
async function saveBmsFullConfig(){
|
||||||
const name=$("bmsNameInput")?.value.trim()||"BMS";
|
const name=$("bmsNameInput")?.value.trim()||"BMS";
|
||||||
const address=$("bmsAddressInput")?.value.trim()||"";
|
const address=$("bmsAddressInput")?.value.trim()||"";
|
||||||
|
|||||||
Reference in New Issue
Block a user