蓝牙mesh组网实践(常见调试问题整理)

目录

配网及发包失败:

 

发送方成功,接收方收包异常:

建议两蓝牙mesh节点的布置距离在100m以内,如果距离太远且没有中继,或者TTL数值不够没有中继到,或者干扰太大,真的没收到包,那没办法在代码层面处理。如果收发双方距离适当,检查接收方是否真的“丢包”,就需要查看一些底层参数。蓝牙mesh不走连接,所有通信数据最终都走广播发出,需要一套机制来过滤消息,故存在有底层能够解析消息包,但被判断无需上报的情况。

①检查发送方的seq num是否正常,发消息时的seq num是否在前一则消息的seq num上+1。接收方会记录发送方的历史消息的seq num,若接收方判断此刻收到的消息的seq num不比缓存的历史消息的seq num大,则判断其为过往消息,不再处理,也就不会上报。最新EVT中包含有查询seq num和设置seq num的接口函数。设置目标seq num时,除了要小于0xb0e500外,还要比当前seq num数值大。

 

②检查接收方的tid,与seq num类似,每则消息都需要tid值自+1。如果收到消息时的tid一直解析为同一个数值,该消息会被判断为重复消息而不上报。可以在app_vendor_model_srv.c 中打印tid值。如果一直重复,需要检查一下发送方发消息时的发送参数是否设置有误。

 

IV值不同步也会造成接收方不再上报消息,消息包直接被底层过滤掉。待配网节点,需要配网器为其配网时,设置IV值为正在工作的网络中的IV值;待自配网节点,需要第三方介入,获取一下当前网络中的IV值,传递给自配网节点后进行自配网。最新EVT中包含了获取IV值的接口函数。若发现某一方的IV值与网络中的不一致,需要重新配网以设置IV值。

posted @   JayWell  阅读(2435)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示