jr551/ChinaBLEVoltageMonitor

GitHub: jr551/ChinaBLEVoltageMonitor

该项目是一个基于 Web Bluetooth 的本地优先仪表板,通过逆向 BKmonitor 蓝牙协议实现对兼容电压监测设备的实时数据读取、图表绘制与电压骤降健康分析。

Stars: 0 | Forks: 1

# BLE 电压实验室 一款 local-first 的 Web Bluetooth 仪表板,适用于 **KONNWEI BK300** 及其他兼容 BKmonitor 的电池电压监视器。它直接从支持的浏览器进行连接,显示实时端电压,绘制读数图表,读取设备标识符,并提供解码后的数据包日志。 对于 30 V 至 42.5 V 之间的读数,仪表板会将其视为普通的 10S 锂离子电池组:满电为 42.0 V(10 × 4.2 V)。它显示的是基于电压的电量估算,而不是 BMS 的荷电状态读数。诸如 `4P` 之类的并联数量无法通过端电压推断。 在持续监控期间,应用会检测电压骤降和恢复事件。它最多可在浏览器本地存储中保存 50 个事件,并在发生三次事件后,根据该电池组记录的最佳状态报告相对的骤降健康趋势。在检测到骤降期间,电量估算会使用骤降前的电压。由于电流未知,只有在对比的负载大致相似时,健康趋势才有意义;它并不是 BMS 的 SOH 测量值。 它也是一款可安装的 Progressive Web App。加载后,界面可离线使用;访问 Bluetooth 仍需要兼容的浏览器和附近的设备。

BLE Voltage Lab connected to a 10S lithium-ion battery, showing 40.88 volts, a 94 out of 100 fuel estimate, relative sag health, and the voltage trace.

本项目将原始的 [BKmonitor 协议逆向工程 gist](https://gist.github.com/jr551/21f1e88d8efa7113deb9c139310b23b9) 转化为一个经过测试、易于维护的代码库。 ## 硬件 逆向工程已通过广播为 `bikebattery` 的 KONNWEI 品牌设备验证。相同的 BK300 硬件和协议也可能以其他品牌名称出售。 - [AliExpress BK300 商品示例](https://s.click.aliexpress.com/e/_c3i1uXXr) (商品 `1005007797314538`) - 观察到的价格:2026 年 7 月约为 **£6.49**;市场价格、税费、运费和产品变体可能会有所变动。 链接的商品将该设备描述为适用于 12 V 和 24 V 系统的“BK300 铅酸启动汽车电池检测器”。匹配的外壳或产品名称并不能保证固件也匹配,因此在实验前请验证 service UUID `FFF0`。 ## 试用 Web Bluetooth 需要安全上下文。请使用已发布的 GitHub Pages 站点,或运行本地开发服务器: ``` npm install npm run dev ``` 在桌面端或 Android 端的 Chrome 或 Edge 中打开显示的 `localhost` URL,选择监视器(测试名称:`bikebattery`),然后使用 **立即读取** 或 **开始监控**。 Safari 和 Firefox 目前不支持 Web Bluetooth。iOS 浏览器无法使用此应用,因为它们都使用 WebKit。 ## 安全性 只有经过验证的只读命令 `02 01` 和 `0B 0B` 具有一键控制。具有不完整 payload 语义的命令和会改变状态的命令显示为锁定的文档。原始控制台仅用于对自己拥有且可恢复的硬件进行协议研究。 ## 开发 ``` npm test npm run build ``` 协议实现无需任何依赖,位于 [`src/protocol.js`](src/protocol.js) 中。它包含 CRC-16/X-25 组帧、响应验证和通知片段重组。 ## 协议 经过测试的设备公开了 service `FFF0`、通知 characteristic `FFF1`,以及无响应写入 characteristic `FFF2`。参见 [`protocol/BKMONITOR_BLE_PROTOCOL.md`](protocol/BKMONITOR_BLE_PROTOCOL.md)。 ## 贡献 欢迎提供抓包数据和解码后的 payload。在提交 issue 之前,请对设备标识符、制造商数据和其他唯一值进行脱敏处理。 这是独立的互操作性研究,而非供应商文档。 ## ESP32 屏幕演示 [`esp32demo/`](esp32demo/) 包含适用于 Waveshare ESP32-C6-LCD-1.47 开发板的、经过编译测试的 PlatformIO 固件。它直接连接到监视器,并在板载的 320×172 横向显示屏上渲染电压、10S 电量估算、标志、RSSI 以及简短轨迹。
标签:PWA, Web Bluetooth, 数据可视化, 物联网, 电池监控, 硬件接口, 蓝牙低功耗