1. BLE Mesh组控制流程解析
在物联网设备组网控制场景中,BLE Mesh的组播控制是最核心的功能之一。通过分析串口日志,我们可以清晰地看到Provisioner(配置者)如何通过组地址控制多个设备。整个过程分为三个典型阶段:状态查询、组播指令下发、设备状态反馈。
1.1 广播查询开关状态
日志首条记录显示Provisioner(源地址0x0001)向全网广播地址0xFFFF发送了G_ONOFF_GET指令:
code复制[15:43:30.764]收←◆[LIB]:(sdk)rcv access layer,retransaction:0,ttl:10,src:0x0001,dst:0xffff sno:0x000300 op:0x0182(G_ONOFF_GET),par_len:0,par:
这里有几个关键点需要注意:
- 操作码0x0182对应Generic OnOff Get,这是蓝牙SIG定义的标准化操作码
- 目标地址0xFFFF是Mesh网络中的全设备广播地址
- 参数长度为0表示这是纯查询指令
设备收到广播查询后,会单独回复当前状态。例如地址0x000a的设备回复:
code复制[LIB]:(sdk)mesh tx NoAck,op:0x0482(G_ONOFF_STATUS),src:0x000a,dst:0x0001,sno:0x000020 par_len:1 par:01
回复中的参数"01"表示设备当前处于开启(ON)状态。这种查询-响应机制是Mesh网络状态同步的基础。
实际开发中发现,广播查询会显著增加网络流量。在设备数量较多时,建议采用单播轮询或心跳上报机制替代全广播查询。
1.2 组播控制指令下发
日志中第二个关键操作是向组地址0xC000发送的关闭指令:
code复制[15:43:42.641]收←◆[LIB]:(sdk)rcv access layer,retransaction:0,ttl:10,src:0x0001,dst:0xc000 sno:0x000301 op:0x0282(G_ONOFF_SET),par_len:2,par:00 60
这个指令包含两个重要参数:
- 00:目标状态(OFF)
- 60:事务ID(Transaction ID)
