- tags
- [IoT, BLE, 蓝牙, 配网]
- created
- 2026-04-12
- updated
- 2026-04-30
- sources
- [raw/snippets/iot-docs/ref-ble.md, raw/snippets/iot-docs/guide-app.md, raw/snippets/iot-docs/guide-device.md, raw/snippets/bk7258-build/iot-architecture-onboarding.md, raw/notes/2026-04-30-claude-desktop-buddy-vs-sentino-iot-sample-architecture.md]
定义¶
用户首次使用 IoT 设备时,通过手机 App 蓝牙(BLE)将绑定信息(和 WiFi 凭证)传递给设备的过程。使用 Rlink BLE V1 协议。
关键要点¶
- 协议分层:应用层(JSON 消息)→ V1 分包传输协议(128 字节包,10 字节协议头,118 字节有效数据)→ GATT 层(Service 0x1910,Write 0x2B11,Notify 0x2B10)→ BLE 物理层
- 广播发现:Service UUID
0xA101用于筛选 Sentino 设备,扫描应答数据包含 UUID/MAC 和配网状态标志 - 两种模式:
- WiFi 模式:BLE 传递 WiFi SSID + 密码 + userId + assetId + MQTT 地址
- 4G 模式:BLE 仅传递 userId + assetId(设备已通过 4G 联网)
- 核心消息:
device.information.get(获取设备信息)→thing.network.set(发送配网数据)→ 设备连接 WiFi → MQTT bind - 分包传输:大于 118 字节的 JSON 自动分包,包间延迟 20ms,CRC 校验
- 配网超时:60 秒内未成功连接 MQTT 则断开 WiFi、清除配网信息、重启设备
- 绑定状态查询:App 轮询
checkBindResult接口(2-10 秒间隔),或监听 MQTT 消息通道接收推送
WiFi 模式蓝牙包的 8 字段(含 MQTT 接入信息)¶
蓝牙配网包不只下发 WiFi,还包含 MQTT 接入信息(实现:rino_ble_app.c:290-302):
| 字段 | 含义 | 写到哪 |
|---|---|---|
sid |
WiFi SSID | Config_Net_info->Wifi_Info.Ssid |
pw |
WiFi password | Config_Net_info->Wifi_Info.Key |
mq |
MQTT host 域名 | Config_Net_info->Mqtt_Info.Mqtt_Host |
iport |
MQTT 端口 | Config_Net_info->Mqtt_Info.Mqtt_Port |
bid |
绑定 ID(用户绑设备的关系凭证) | Config_Net_info->Bind_Id |
userId |
用户 ID | Config_Net_info->User_Id |
country |
国家码(默认 CN) | Config_Net_info->Country_Code |
tz |
时区(默认 Asia/Shanghai) | Config_Net_info->User_Tz_Str |
→ 设计含义:MQTT 接入地址不在固件硬编码,由 APP 在配网时动态下发到 Flash。好处是 APP 端可以根据用户区域/账号/品牌路由到不同 MQTT 集群(国内/海外、生产/测试、多租户),固件出厂后不用换。这是消费 IoT 服务发现问题的"WiFi 解法"——用 APP 当场参与代替引导服务器。详见 iot-device-bootstrap 与其他 4 种 4G 解法对比。
另一种 BLE 协议设计参考:claude-desktop-buddy¶
claude-desktop-buddy(Anthropic 2026-04-20 开源)是"BLE + 设备"参考代码的另一种哲学样本——用业界标准 Nordic UART Service UUID(6e400001-b5a3-f393-e0a9-e50e24dcca9e)+ newline-delimited JSON 而非自定义 V1 帧。两种风格对比:
| 维度 | Sentino BLE V1(本页) | claude-desktop-buddy |
|---|---|---|
| Service UUID | 自定义(广告 0xA101 ≠ GATT 0x1910) |
NUS 业界标准 6e400001-... |
| 数据格式 | V1 帧 HEAD/SN/TOTAL/LEN/CRC + 重组 | UTF-8 JSON,\n 分隔,发送端裸切、接收端按 \n 重组 |
| 分包可靠性 | CRC 错或 SN 不连续整帧丢弃 | 委托 BLE 协议栈 |
| 加密 | BLE 链路不强加密;应用层声称 AES-ECB 但 web 工具走 plaintext | LE Secure Connections + Passkey + Bond,特征 ENCRYPTED 强制 |
| 适用场景 | 平台优先(设备-云-业务一体),4G 时代起源的 Tuya/Rlink 体系 | 协议优先(端到端两点无云),桌面应用 + maker 设备 |
→ 选 NUS + newline JSON 的好处是 maker 能用业界工具(nRF Connect / bluefy / Web Bluetooth Examples)直接 talk,没有协议学习门槛;选 V1 帧 + 自定义 GATT 的好处是更精细的可靠性控制(CRC + 序号 + 重组)+ 平台层身份耦合(与 broker / 三元组 / 云端账号体系协议同源)。两条路对应不同商业模式,详见 claude-desktop-buddy"协议优先 vs 平台优先"段。
相关概念¶
- sentino-iot
- mqtt-device-protocol
- device-lifecycle
- iot-device-bootstrap — 4G 设备没有蓝牙时如何拿到 MQTT 接入点(5 种方案对比)
- iot-platform-fundamentals — 配网在 IoT 体系中是"最特殊的环节",后台没对应概念
- embedded-firmware-layering —
rino_ble/在 SDK 层、配网回调在适配层注入 - claude-desktop-buddy — 另一种 BLE 协议设计哲学:NUS 标准 + newline JSON + 链路层强加密