跳转到正文

V2 设备绑定、解绑与换绑 ​

V2 的设备绑定关系操作通过开放平台接口完成。蓝牙链路只负责获取设备 ID 和完成设备侧状态准备,绑定关系由云端接口维护。

统一说明

  • 云端接口统一使用开放平台 API Key:Authorization: Bearer <your_api_key>。
  • device_id 需要通过蓝牙命令获取,设备返回格式为 AT+ID=<device_id>。
  • 微信蓝牙 API 返回的 deviceId 是手机侧蓝牙连接标识,不能代替云端业务 device_id。
  • channel_id 使用开放平台上架信息中的硬件渠道 ID。

操作总览 ​

操作设备 ID 来源开放平台接口说明
获取设备 IDBLE:AT+GETID → AT+ID=<device_id>无获取公开业务 ID;不要求 APP_AUTH,不受绑定状态限制
绑定上一步获取的 device_id先解绑(有旧关系时),再调用绑定设备到渠道统一按换绑思想处理
解绑已保存的 device_id;没有时重新通过 BLE 获取解绑设备解除设备与外部用户的关系
换绑同一个 device_id先解绑,再绑定与绑定统一使用同一套关系变更思路

1. 获取设备 ID ​

完成 BLE 连接、通知订阅和 AT+BLE_READY 握手后,小程序通过 BLUFI Custom Data 发送:

text
小程序 → 设备:AT+GETID
设备 → 小程序:AT+ID=<device_id>

小程序应保存并校验返回的 device_id,后续绑定、解绑和换绑都使用这个值。不要把微信蓝牙 deviceId 传给开放平台接口。

设备已经绑定时也可以执行 AT+GETID,设备仍会返回公开 device_id。因此,涉及实际物理设备的绑定或换绑流程应优先通过当前 BLE 连接重新获取并校验;纯云端解绑页面则可以使用开放平台设备列表中已经保存的 device_id。

2. 绑定设备 ​

拿到并校验 device_id 后,统一按“先解绑、再绑定”的换绑思想处理:

  1. 如果设备当前存在旧的外部用户绑定关系,先调用解绑设备解除旧关系;如果设备没有旧关系,则跳过这一步。
  2. 再调用开放平台绑定接口,将设备绑定到新的外部用户。

接口详情请查看开放平台:绑定设备到渠道。

http
POST https://lg.jimitu.top/api/open/channels/{channel_id}/bind-device
Authorization: Bearer <your_api_key>
Content-Type: application/json
json
{
  "device_id": "<device_id>",
  "external_user_id": "<external_user_id>",
  "external_user_nickname": "<用户昵称>"
}

示例:

bash
curl -X POST "https://lg.jimitu.top/api/open/channels/{channel_id}/bind-device" \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "<device_id>",
    "external_user_id": "<external_user_id>",
    "external_user_nickname": "<用户昵称>"
  }'

开放平台接口返回成功后,按照设备当前状态完成后续状态同步。只有设备处于 BIND_PENDING 且要求本地确认时,才发送 AT+BIND_FINISH,等待 AT+BIND_ACK,设备随后重启;AUTH_REQUIRED、BOUND_OFFLINE 不发送该命令,而是重新 GETID 并按需 APP_AUTH。

3. 解绑设备 ​

解绑只修改云端绑定关系,不需要发送设备侧的 AT+BIND_FINISH。使用已获取或已保存的 device_id,调用开放平台解绑接口:

接口详情请查看开放平台:解绑设备。

http
DELETE https://lg.jimitu.top/api/open/channels/{channel_id}/bind-device
Authorization: Bearer <your_api_key>
Content-Type: application/json
json
{
  "device_id": "<device_id>",
  "external_user_id": "<当前绑定用户 ID>"
}

其中 external_user_id 必须与设备当前绑定关系一致,用于避免误解绑。完整字段说明见开放平台:解绑设备。

4. 换绑设备 ​

换绑没有特殊的 BLE 命令,和普通绑定统一遵循“先解绑、再绑定”的关系变更思路。小程序可以使用一个 rebind 封装完成这两个开放平台接口调用;如果没有封装,也可以按下面顺序直接调用开放平台的解绑接口和绑定接口:

  1. 连接目标设备,发送 AT+GETID 获取并校验目标 device_id;也可以使用已经通过开放平台校验的设备 ID。
  2. 使用当前绑定用户的 external_user_id 调用 DELETE /api/open/channels/{channel_id}/bind-device。
  3. 使用新用户的 external_user_id 调用 POST /api/open/channels/{channel_id}/bind-device。
  4. 绑定接口返回成功后,按设备当前状态完成本地确认或状态刷新。
  5. 如果流程保持当前 BLE 连接,重新获取一次 AT+ID 并等待设备状态刷新为 AUTH_REQUIRED,再发送 AT+APP_AUTH;不要在状态刷新前直接发送鉴权或业务命令。
  6. 刷新小程序本地的设备绑定关系和设备列表。
text
获取 device_id
    ↓
使用旧用户 external_user_id 解绑
    ↓
使用新用户 external_user_id 绑定
    ↓
重新确认设备 ID 和状态
    ↓
刷新设备列表

解绑接口要求传入当前绑定用户 ID;如果没有这个 ID,不能直接用新用户 ID 进行解绑。

与蓝牙接入流程的关系 ​

蓝牙连接、状态握手和 AT+GETID 的时机,参见业务流程。本页的绑定、解绑和换绑只负责云端设备关系,不替代 BLE 连接流程。

文档中心 · docs.jimitu.top