跳转到正文

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 和通知特征 0xFF02
3完成状态握手订阅通知 → 发送 AT+BLE_READY → 等待 READY_ACK,接收 BLE_MODE、NETSTATE
4获取并核验公开设备身份发送 AT+GETID,等待 AT+ID=<device_id>,与目标设备 ID 匹配
根据 BLE_MODE + NETSTATE 分流

需要建立绑定关系且设备已联网

设备返回:
BLE_MODE=BIND_PENDING
NETSTATE=4G 或 WIFI_CONNECTED

1. 使用已核验设备码AT+ID=<device_id> 作为开放平台接口的 device_id
2. 云端绑定查询预设 → 用户确认 → 调用绑定接口
3. 完成绑定关系先解除旧绑定(无旧关系时跳过)→ 调用绑定接口 → 刷新设备状态

设备未联网或处于配网状态

设备返回:
BLE_MODE=WIFI_PROVISION_ONLY 或 BOUND_OFFLINE
或 BLE_MODE=BIND_PENDING 且网络不可用

1. 先配置 Wi-Fi发送 set_wifi,收到 connecting
2. 等待联网同一 request_id 收到 connected,等待状态更新
3. 再进入后续流程状态变为联网且 BIND_PENDING 后,使用已获取或重新获取的设备码进入绑定

已绑定设备控制

设备返回:
BLE_MODE=AUTH_REQUIRED
NETSTATE=4G 或 WIFI_CONNECTED

1. 先校验身份每次新连接先通过 AT+GETID 确认目标设备
2. 需要鉴权时仅 AUTH_REQUIRED 发送 AT+APP_AUTH
3. 允许业务操作完成鉴权后执行 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. 附近设备发现流程 ​

  1. 完成连接、通知订阅、BLE_READY 和公开 device_id 校验。
  2. 收到 peer_radar_start 后,设备才开启带专用雷达标记的不可连接信标和扫描;仅手机 BLE 连接不会自动开启。
  3. 两台设备都要由各自小程序主动开启雷达,未开启的一方不会被发现。
  4. peer_found 逐条返回,整次发现窗口关联启动时的 request_id。
  5. 窗口结束返回 peer_discovery_done;超时不是失败,停止使用 reason="stopped"。
  6. 结果只返回业务 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 配网流程 ​

  1. 主入口是 BLE JSON set_wifi,不是裸 GATT 字符串。
  2. BIND_PENDING、WIFI_PROVISION_ONLY、BOUND_OFFLINE 三种状态下可直接执行 set_wifi,无需发送 AT+APP_AUTH;只有 AUTH_REQUIRED 状态需要先完成 APP_AUTH,之后才能执行 set_wifi。
  3. 先返回 connecting,再用同一 request_id 返回 connected 或最终失败。
  4. 4G 作为控制链路时仍可通过 BLE 配置 Wi-Fi;不关闭 4G、不手动切路由。

peer_radar_stop 是一次新的业务操作,应生成新的 request_id。停止 ACK 使用停止操作的 ID;最终 peer_discovery_done 仍使用对应 peer_radar_start 的 ID。

4. 接入完成标准 ​

完成以下场景后,可以认为小程序侧接入闭环:

  1. 能完成连接、订阅通知和 BLE_READY。
  2. 能根据 BLE_MODE 正确处理鉴权门控。
  3. 能完成至少一个业务命令,并正确关联 ACK 和最终结果。
  4. 能完成一次 Wi-Fi 配网和一次附近设备发现流程。
  5. 能处理超时、停止、设备重启和通用错误码。

文档中心 · docs.jimitu.top