web bluetooth api仅支持chrome 89+等chromium内核浏览器,需灯泡符合标准ble服务规范,通过nrf connect逆向uuid与协议后,用requestdevice连接并按私有格式发送指令。

Web Bluetooth API 可以让网页直接与支持蓝牙低功耗(BLE)的智能灯泡通信,但前提是灯泡必须符合标准 BLE 服务规范(如 Philips Hue 的 Bluetooth 版、Nordic nRF52 开发板模拟灯、或部分米家蓝牙版灯泡等),且浏览器支持(目前仅 Chrome 89+ 桌面版及 Edge 基于 Chromium 的版本稳定支持,iOS Safari 和 Firefox 不支持)。
确认灯泡是否兼容 Web Bluetooth
不是所有“蓝牙灯泡”都可用。关键看它是否广播标准 GATT 服务,尤其是:
– Device Information Service(0x180A)用于识别设备
– Generic Access Service(0x1800)提供设备名和外观
– 更重要的是厂商自定义服务(如 0xFFE0)或标准 Lighting Service(若存在,如 Bluetooth SIG 定义的 0x1810)
实际中,多数消费级蓝牙灯泡(如 Yeelight 蓝牙版、部分 Awox 灯)使用私有协议,需逆向其 characteristic UUID 和数据格式。建议先用 nRF Connect App(手机端)扫描并连接灯泡,观察其服务列表、可读写 characteristic,记录 UUID 和典型写入值(例如:0x00,0x55,0xAA,0xFF,0x01,0x00,0x00,0x00 可能代表开灯)。
网页中请求并连接设备
使用 navigator.bluetooth.requestDevice() 触发用户选择流程,需指定过滤条件:
<script><br> navigator.bluetooth.requestDevice({<br> filters: [{ services: ['ffe0'] }], // 替换为你的灯泡服务 UUID<br> optionalServices: ['battery_service', 'device_information']<br> })<br> .then(device => device.gatt.connect())<br> .then(server => server.getPrimaryService('ffe0'))<br> .then(service => {<br> // 获取控制用的 characteristic<br> return Promise.all([<br> service.getCharacteristic('ffe1'), // 假设这是控制写入通道<br> service.getCharacteristic('ffe2') // 假设这是状态读取通道<br> ]);<br> })<br> .then(([ctrlChar, stateChar]) => {<br> // 保存引用,后续用于写颜色/亮度<br> window.ctrlChar = ctrlChar;<br> });<br> </script>
发送颜色与亮度指令(需按灯泡协议编码)
大多数蓝牙灯泡不直接接受 RGB 或 HSL,而是要求特定字节数组。常见模式有:
- RGB 模式:3 字节(R,G,B),如
new Uint8Array([255, 128, 0])表示橙色 - HSV/HSL 模式:可能含 H(0–360)、S(0–100)、V(0–100),需缩放为 1–2 字节
- 亮度单独控制:某些灯泡用另一 characteristic,写入 0–100 的整数或 0x00–0x64
- 命令帧结构:常见带起始字节(0x55)、校验(XOR)、结束(0xAA),例如:
new Uint8Array([0x55, 0x01, 0xFF, 0x80, 0x00, 0x00, (0x55^0x01^0xFF^0x80^0x00^0x00), 0xAA])
务必参考你灯泡的通信文档或逆向结果。写入前确保 characteristic 支持 writeWithoutResponse 或 writeWithResponse(后者可等待确认)。
注意事项与限制
– 页面必须通过 HTTPS(localhost 除外)才能启用 Web Bluetooth
– 用户每次刷新页面都需要重新授权配对(无法后台静默连接)
– Chrome 会阻止非用户手势触发的连接(如 onload 自动连),必须由 button.click 等触发
– 部分灯泡在连接后需先写入“认证密钥”或“进入控制模式”,否则忽略指令
– 移动端 Chrome Android 支持有限,且常因省电策略断连,不推荐生产环境依赖
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











