目录

使用配网器配网方式:

在之前的文章中介绍了CH582单片机在蓝牙mesh组网中的两种配网方式,有介绍到:未配网设备不能选择被哪个配网器配网,配网器可以选择给哪个未配网设备配网。接下来介绍在哪里可以有选择配网。

BLE中有相对完善的黑白名单机制,可惜蓝牙mesh并没有沿用或是发展黑白名单,只能在收到配网信标时,由用户来判断是否给设备配网,也就意味着用户需要知道配网信标广播中的UUID的含义,或者说用户需要自定义UUID。

可以看看阿里的可以与天猫精灵交互的智能灯UUID是如何规定的。该UUID设置可以在天猫精灵相关的例程中见到。可以发现天猫精灵规定的UUID中的每个字节都有特定的信息。如下图↓

开启了FLASH存储功能的设备在上电后,先会检查一下FLASH中是否存储有已配网信息,若有,会恢复网络信息,无需再配网即可通信;若无配网信息,则会广播配网信标。配网器在与未配网设备直连的距离内会收到配网信标并进入配网流程。收到配网信标后进入如下函数↓

进入unprov_recv函数后就可以对UUID进行分析,在调用协议栈配网函数之前return即可。举个例子,我只想要对UUID[7]为0x01的设备进行配网,那么可以在配网之前加两行代码↓

判断为需要进行配网的设备后,由协议栈管理进行配网的代码为下图中的函数,执行到这一步是实际进行配网↓

使用自配网方式:

自配网方式需要用户对网络节点有一定的管理能力。582最新EVT中的代码中有手机配网例程,手机传递配网参数是走的BLE,芯片收到配网数据后,还是执行自配网流程,不会与配网手机进行mesh协议中的配网连接。配网器代码中也用到了自配网。配网器配网前,需要先有一个网,之后配网器才好将其他节点纳入自己的网络。配网器“先有一个网”的过程也是自配网过程。详细讲讲各参数的作用。

self_prov_net_key:网络密钥。在不连外设的自配网例程中,该16字节的网络密钥可以划分网络范围。若要组建互不相通的两个网络,需要这里的16字节的NetKey不相同。

self_prov_dev_key:设备密钥。可以加密配网器与节点间的通信,比如说可以给指定设备修改网络配置,对其他设备保密。在自配网方式中没有配网器,可以不管这个参数。

self_prov_app_key:应用密钥,与模型层的模型绑定使用。不同的模型之间应用密钥不同,则无法通信。只使用官方提供的透传模型,该参数可以不用管。数据从模型一层层地打包至成为一则广播消息的过程中需要经过AppKey和NetKey两层加密。

self_prov_net_idx:自配网NetKey的索引,这个变量只在自配网时用到。16位的索引与16字节的完整的NetKey一一对应,在传参的时候可以更简洁方便。若无需划分子网,此值保持默认值即可。需要划分子网时,需要分配更多NetKey,比如说一个节点既在主网中,又在子网中,两者各有一个NetKey,这时候用一个16位索引比如说0x0001就可以指向子网的NetKey。子网NetKey由协议栈在其他地方处理,可以理解为有一个二维数组存放更多的NetKey(实际上协议栈在底层的处理不太一样),在self_prov_net_key这个一维数组中没有体现多个NetKey,只不过self_prov_net_idx为0时指向self_prov_net_key。

self_prov_app_idx:同上,添加更多应用密钥后这个索引值会有指向其他应用密钥的作用。

self_prov_iv_index:IV值在使用自配网方式时需要与现有网络中的IV值保持一致。最好现有网络中能留个反馈途径,比如说过按下按键通过串口打印一下IV值,反馈一下当前网络中的IV值,接下来的节点按该值配网。

self_prov_addr:节点主元素的地址。仅使用例程的话,每个节点只有一个元素即主元素。若用户自行配置,在一个节点上配置多个元素比如说1个主元素和3个其他元素,那么需要预留主元素的地址之后的依次3个地址,供其他元素使用。

self_prov_flags:表示网络中的IV值正在更新。置位该标志的节点意味着其收到了IV值更新的信号,待更新,会用当前与即将更新即+1的IV值尝试解析消息。

vendor_sub_addr:订阅地址,可使用范围为0xC000~0xFEFF。添加了订阅地址后,可以理解为节点会接收某个用于组播的地址。订阅地址可以不使用,在app.c中注释掉cfg_local_net_info函数中的添加订阅地址相关代码块即可。0xFF00到0xFFFF的组播地址保留给固定用途。另有四个mesh协议中规定的组播地址:0xFFFC-所有proxy代理节点、0xFFFD-所有朋友节点、0xFFFE-所有使能转发中继功能的节点、0xFFFF-所有节点。

蓝牙mesh组网实践(选择性配网与自配网参数分析)的更多相关文章

  1. SIG蓝牙mesh笔记2_mesh组成

    目录 SIG 蓝牙 mesh 组成 mesh网络概述 网络和子网 设备和节点 devices & nodes 入网 mesh中的几个概念 智能插座例子 SIG 蓝牙 mesh 组成 mesh网 ...

  2. [蓝牙前沿应用] 照明即平台 —— 通过蓝牙增强服务提高照明投资回报率(蓝牙MESH、定位AoA、AoD)

      1.照明即平台(LAAP) 随着照明设施向LED转型,他们也在利用类似于蓝牙MESH的技术,创建一个可连接的照明平台,作为他们建筑的中枢神经系统.这些系统除了提供先进的照明控制,还建立了一个增强版 ...

  3. 常见无线组网分析(NB-IOT组网和Mesh组网)

      NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 基于现有蜂窝组网 基于LoRa网关 基于Zigbee网关 基于无线路由器 居于蓝牙Mesh的网关 网络部署方式 节点 节点 + 网关 ...

  4. 蓝牙mesh网络技术的亮点

    蓝牙mesh网络技术的亮点 The highlights of Bluetooth mesh networking technology 导言 蓝牙是当今最主要的低功耗无线技术之一,对无线设备用户和开 ...

  5. 蓝牙mesh介绍

    了解一下关于蓝牙Mesh的知识. 蓝牙mesh网络使用,并且依赖于低功耗蓝牙(BLE).低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈. 蓝牙BR / EDR能够实现一台设备到另一台设备的连接和通信 ...

  6. 解密蓝牙mesh系列

    解密蓝牙mesh系列 https://mp.weixin.qq.com/s/KdVhkgcmHIboA0xPFqFCgQ 1.NRF52832 & NRF52840 BLE mesh 协议栈 ...

  7. 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<三>弱网优化>,感谢原作者的无私分享. 一.前言 网络优化解决的核心问题有三个 ...

  8. 关于蓝牙Mesh您必须知道的七件事

    蓝牙技术联盟于7月19日正式宣布,蓝牙(Bluetooth)技术开始全面支持Mesh网状网络.全新的Mesh功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化.无线传感 ...

  9. [转]用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  10. 通过外网IP访问内网

    外网服务器:外网IP1,内网IP192.168.2.156 内网服务器:内网IP192.168.2.206 通过访问外网服务器8083端口,转发到内网服务器的8083端口. 在外网服务器设置映射规则: ...

随机推荐

  1. flutter_swiper:Another exception was thrown: ScrollController attached to multiple scroll views.

    Another exception was thrown: ScrollController attached to multiple scroll views. 翻译一下:引发了另一个异常:Scro ...

  2. 异步async await 相关知识点总结以及代码练习

    <script> const setTimeoutToPromise = duration => new Promise(resolve => { setTimeout(res ...

  3. 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了. 刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就访问不了了 ,看控 ...

  4. immutable.js学习笔记(二)----- List

    一.List list与数组是兼容的,大多数的api与数组是类似的 注意 List.of(),不需要写中括号 二.List的API (一)size:取得 List 的长度 (二)set:设定指定下标的 ...

  5. python正则分组匹配

    import re s = ''' {"type":"buy","order_no":"202006161314138669164 ...

  6. Markdown箭头总汇

    Markdown箭头的汇总 普通箭头 \[\uparrow \] $$\uparrow$$ \[\Uparrow \] $$\Uparrow$$ \[\downarrow \] $$\downarro ...

  7. Djanngo-bbs项目

    1.项目开发基本流程 1.需求分析 2.架构设计 3.分组开发 4.提交测试 5.交付上线 2.项目流程 仿造博客园项目(核心:文章的增删改查) 1.表分析: 1.1用户表 1.2个人站点表 1.3文 ...

  8. Vue28 Web Storage

    https://www.jianshu.com/p/513f6949fc25 1 简介 Web Storage 包括 localStorage 和 sessionStorage ,是浏览器本地数据存储 ...

  9. 项目与自身毕设对比整理规划6 330 done

    3.30 没用呢- - 功夫不负有心人啊啊啊啊啊啊啊啊啊啊啊啊啊啊 成功了- - 但是很可恶 需要把数据返回然后放在那个文件里面才可以 现在就是问题就是返回数据的时候需要把这个文件存成数据接口 fin ...

  10. UOJ NOI Round #6

    总结 \(\text{Day1}\) 只打了 \(T1\),想正解无果以致于没时间打暴力 \(\text{T1}\) 考虑到最后一个面基者要么落在点上,要么落在边上 所以可以枚举点和边,统计最久的落在 ...