BLE-MESH 组播订阅丢包

lpvanish
Posts: 2
Joined: Mon Aug 01, 2022 12:32 pm

BLE-MESH 组播订阅丢包

Postby lpvanish » Tue Aug 02, 2022 5:40 pm

参考例程;我测试BLE-mesh的通用on.off模型;在单播控制的时候,一切正常,但是当我将多个srv模型订阅到一个组播地址的时候;客户端发送控制命令,经常会出现部分服务端元素没有成功控制,出现没有项目的元素随机出现在不同的NODE上面;但是客户端和服务端都没有任何报错;我的测试NODE有11个元素,其中2-9是onoff服务端模型;设备之间距离很近;麻烦大神给个思路
//以下是客户端
esp_ble_mesh_generic_client_set_state_t set = {0};
esp_ble_mesh_client_common_param_t common = {0};
esp_err_t err = ESP_OK;

common.opcode = ESP_BLE_MESH_MODEL_OP_GEN_ONOFF_SET_UNACK;
common.model = onoff_client_pub.model;
common.ctx.net_idx = store.net_idx;
common.ctx.app_idx = store.app_idx;
common.ctx.addr = msg_addr; /* 接收地址 */
common.ctx.send_ttl = 3;
common.ctx.send_rel = false;
common.msg_timeout = 0; /* 0 indicates that timeout value from menuconfig will be used */
common.msg_role = ROLE_NODE;

set.onoff_set.op_en = false; /* 设定服务器不用回复信息*/
set.onoff_set.onoff = msg_onoff;
set.onoff_set.tid = store.tid++;

err = esp_ble_mesh_generic_client_set_state(&common, &set);
if (err)
{
ESP_LOGE(TAG, "Send Generic OnOff Set Unack failed");
return;
}

另外我如果一个设备上面多个按键,可不可以建立多个元素的onoff客户端;用来响应不同按键;该如何在发送信息的时候区分用哪个元素发出?

LYU4662
Posts: 5
Joined: Sun Oct 09, 2022 1:46 pm

Re: BLE-MESH 组播订阅丢包

Postby LYU4662 » Mon Oct 10, 2022 1:58 pm

是用的模组吗,还是自己做的板子,建议查下天线部分,一般丢包都是天线没有进行匹配导致的

loop233
Posts: 2
Joined: Sat Feb 25, 2023 4:46 am

Re: BLE-MESH 组播订阅丢包

Postby loop233 » Wed Sep 06, 2023 2:34 am

由于发送时使用的是组播地址,没有ack和重传,所以只发一遍接收成功率会下降,一种解决方法是接收的地址开启relay功能,让接收到控制包的设备对消息进行转发:

Code: Select all

static esp_ble_mesh_cfg_srv_t config_server = {
...
    .relay = ESP_BLE_MESH_RELAY_ENABLED,
...
};
提到的另外一个问题是可以实现的,/ble_mesh_node/onoff_server例程展示了如何使用一个节点,包含多个element,每个element包含各自medel的代码实现方法。
client端指定设备发送使用的model在发送时配置:

Code: Select all

void example_ble_mesh_send_gen_onoff_set(void){
...
    common.model = onoff_client.model; // 用于指定具体使用哪个model发送
...
}
[

ESP_@In逍遥子
Posts: 132
Joined: Thu Nov 15, 2018 2:06 am

Re: BLE-MESH 组播订阅丢包

Postby ESP_@In逍遥子 » Thu Sep 14, 2023 8:04 am

请问问题是否已经解决?

你可以打开设备的 Info/Debug 等级日志,看看设备是否收到 发送端的 广播数据,并逐层检查。

Who is online

Users browsing this forum: Baidu [Spider], Google [Bot] and 39 guests