ble mesh中provisioner如何对未配网设备发送 attention 标识设备
Posted: Thu Sep 18, 2025 7:24 am
我想在搜索到未配网设备后,加入到一个自定义列表中,由应用层判断是否对其进行配网(有多个provisioner存在,每个provisioner有多个私有节点),用户可以逐个选择未配网设备发送命令让它闪烁LED进行标识,但是在SDK中没有找到相关接口,我用nRF Mesh手机app测试发现是通过Proxy server, PB-GATT发送的attention命令,日志如下:
然后我用BLE调试APP连接未配网节点后,发送16进制 030005 同样触发了attention事件,达到了我想要的效果。但是我尝试在provisioner代码中通过gatt client连接节点发送同样的命令,遇到了点问题,一个是连接时间比较长(发现服务),另外就是对Data in特征写入030006后,节点那边BLE_MESH层log显示不识别这个命令。
ble mesh中有其它相关api吗,比如通过PB-ADV,PB-GATT的方式,
我测试过esp_err_t esp_ble_mesh_proxy_client_connect(esp_ble_mesh_bd_addr_t addr, esp_ble_mesh_addr_type_t addr_type, uint16_t net_idx)这个接口可以建立Proxy 连接,但是没有发送数据的接口。
int bt_mesh_provision_adv(const uint8_t uuid[16], uint16_t net_idx, uint16_t addr, uint8_t attention_duration) 这个接口看起来是我想要的,但它是内部接口,不对外开放
Code: Select all
I (7597532) RELAY_SENSOR_MESH: === Proxy server connected ===
I (7598542) RELAY_SENSOR_MESH: ESP_BLE_MESH_NODE_PROV_LINK_OPEN_EVT, bearer PB-GATT
I (7598902) RELAY_SENSOR_MESH: 收到健康服务器事件: 0x03
I (7598902) RELAY_SENSOR_MESH: 注意力计时器启动,持续时间: 5 秒
I (7603902) RELAY_SENSOR_MESH: 收到健康服务器事件: 0x04
I (7603902) RELAY_SENSOR_MESH: 注意力计时器关闭
W (7624042) BT_HCI: hcif disc complete: hdl 0x3, rsn 0x13 dev_find 1
I (7624052) RELAY_SENSOR_MESH: === Proxy server disconnected === I (7624052) RELAY_SENSOR_MESH: ESP_BLE_MESH_NODE_PROV_LINK_CLOSE_EVT, bearer PB-GATT
ble mesh中有其它相关api吗,比如通过PB-ADV,PB-GATT的方式,
我测试过esp_err_t esp_ble_mesh_proxy_client_connect(esp_ble_mesh_bd_addr_t addr, esp_ble_mesh_addr_type_t addr_type, uint16_t net_idx)这个接口可以建立Proxy 连接,但是没有发送数据的接口。
int bt_mesh_provision_adv(const uint8_t uuid[16], uint16_t net_idx, uint16_t addr, uint8_t attention_duration) 这个接口看起来是我想要的,但它是内部接口,不对外开放