V2 业务流程
本页说明蓝牙连接后的实际分流、附近设备发现和 Wi-Fi 配网流程。命令格式请查看业务命令。
1. 实际接入流程
下面的流程以小程序绑定页和设备控制页的实际实现为准。连接后先完成 AT+BLE_READY 握手,再通过 AT+GETID 获取并校验公开 device_id;GETID 不要求先 APP_AUTH,也不受设备当前绑定状态限制。BLE_MODE 和 NETSTATE 用于随后决定业务分支。
1扫描目标设备确认 BLUFI Service
0xFFFF,保存微信蓝牙 deviceId;广播名只作辅助识别2建立 BLE 连接发现
0xFFFF,找到写特征 0xFF01 和通知特征 0xFF023完成状态握手订阅通知 → 发送
AT+BLE_READY → 等待 READY_ACK,接收 BLE_MODE、NETSTATE4获取并核验公开设备身份发送
AT+GETID,等待 AT+ID=<device_id>,与目标设备 ID 匹配根据
BLE_MODE + NETSTATE 分流需要建立绑定关系且设备已联网
设备返回:BLE_MODE=BIND_PENDINGNETSTATE=4G 或 WIFI_CONNECTED
1. 使用已核验设备码
AT+ID=<device_id> 作为开放平台接口的 device_id2. 云端绑定查询预设 → 用户确认 → 调用绑定接口
3. 完成绑定关系先解除旧绑定(无旧关系时跳过)→ 调用绑定接口 → 刷新设备状态
设备未联网或处于配网状态
设备返回:BLE_MODE=WIFI_PROVISION_ONLY 或 BOUND_OFFLINE
或 BLE_MODE=BIND_PENDING 且网络不可用
1. 先配置 Wi-Fi发送
set_wifi,收到 connecting2. 等待联网同一
request_id 收到 connected,等待状态更新3. 再进入后续流程状态变为联网且
BIND_PENDING 后,使用已获取或重新获取的设备码进入绑定已绑定设备控制
设备返回:BLE_MODE=AUTH_REQUIREDNETSTATE=4G 或 WIFI_CONNECTED
1. 先校验身份每次新连接先通过
AT+GETID 确认目标设备2. 需要鉴权时仅
AUTH_REQUIRED 发送 AT+APP_AUTH3. 允许业务操作完成鉴权后执行
set_wifi、音量、亮度等业务命令BOUND_OFFLINE 不发送 APP_AUTH 或业务控制命令;联网后等待设备进入 AUTH_REQUIRED,再完成鉴权。BLE_MODE 和 NETSTATE 都是设备状态通知:小程序发送 AT+BLE_READY 后,设备通过 BLE 通知返回类似 AT+BLE_MODE=AUTH_REQUIRED、AT+NETSTATE=WIFI_CONNECTED 的文本。小程序只负责读取并判断,不需要自行拼接或修改这两个字段。
关键判断
AT+GETID 是公开设备身份查询。小程序控制页通常在每次新连接时查询,绑定或换绑流程在需要确认物理设备时查询;Wi-Fi 配网是否提前,取决于初始 BLE_MODE 和 NETSTATE。
状态分支速查
完成 AT+BLE_READY、AT+GETID 后,先看 BLE_MODE,再结合 NETSTATE 判断下一步:
| 状态组合 | 进入分支 | 下一步 |
|---|---|---|
WIFI_PROVISION_ONLY | 配网 | 直接发送 set_wifi,不需要 APP_AUTH |
BIND_PENDING + 4G/WIFI_CONNECTED | 绑定/换绑 | 使用已核验的 device_id 调用开放平台接口 |
BIND_PENDING + 网络不可用 | 配网 → 绑定/换绑 | 先发送 set_wifi,联网后刷新状态,再调用绑定接口 |
BOUND_OFFLINE | 配网 | 先发送 set_wifi,联网后重新读取状态;不要发送 APP_AUTH 或普通控制命令 |
AUTH_REQUIRED + 4G/WIFI_CONNECTED | 鉴权/控制 | 先发送 AT+APP_AUTH,成功后再发送业务 JSON |
因此,NETSTATE 不是单独的一条业务流程,而是用来判断设备是否已经具备继续绑定或执行云端业务的网络条件。
2. 附近设备发现流程
- 完成连接、通知订阅、
BLE_READY和公开device_id校验。 - 收到
peer_radar_start后,设备才开启带专用雷达标记的不可连接信标和扫描;仅手机 BLE 连接不会自动开启。 - 两台设备都要由各自小程序主动开启雷达,未开启的一方不会被发现。
peer_found逐条返回,整次发现窗口关联启动时的request_id。- 窗口结束返回
peer_discovery_done;超时不是失败,停止使用reason="stopped"。 - 结果只返回业务
device_id和rssi,不返回 Wi-Fi MAC、BLE MAC 或seen_count;设备只在硬件内部按device_id去重。
发现结果字段
| 字段 | 含义 |
|---|---|
device_id | 云端业务设备 ID |
rssi | 发现该设备时的信号强度 |
request_id | 对应本次发现窗口;ACK、发现事件和最终结果按此归属 |
peer_found 的字段位于 data 对象中;peer_discovery_done.devices 使用同样的 device_id、rssi 字段。雷达结果中的 device_id 来自专用雷达 Service Data,不是手机蓝牙 deviceId。
3. Wi-Fi 配网流程
- 主入口是 BLE JSON
set_wifi,不是裸 GATT 字符串。 BIND_PENDING、WIFI_PROVISION_ONLY、BOUND_OFFLINE三种状态下可直接执行set_wifi,无需发送AT+APP_AUTH;只有AUTH_REQUIRED状态需要先完成APP_AUTH,之后才能执行set_wifi。- 先返回
connecting,再用同一request_id返回connected或最终失败。 - 4G 作为控制链路时仍可通过 BLE 配置 Wi-Fi;不关闭 4G、不手动切路由。
peer_radar_stop 是一次新的业务操作,应生成新的 request_id。停止 ACK 使用停止操作的 ID;最终 peer_discovery_done 仍使用对应 peer_radar_start 的 ID。
4. 接入完成标准
完成以下场景后,可以认为小程序侧接入闭环:
- 能完成连接、订阅通知和
BLE_READY。 - 能根据
BLE_MODE正确处理鉴权门控。 - 能完成至少一个业务命令,并正确关联 ACK 和最终结果。
- 能完成一次 Wi-Fi 配网和一次附近设备发现流程。
- 能处理超时、停止、设备重启和通用错误码。