低功耗蓝牙(BLE)是当今每一部智能手机都可以使用的无线通信技术。与其他现有通信技术相比,它具有功耗低、安全性好、通用性强等优点,是连接智能设备的理想选择。将一个到一个或一个到多个蓝牙功能扩展到多个到多个BLE网格技术正在给物联网生态系统带来一场巨大的革命。通过BLE网状网络连接的智能设备可以被控制,开发智能家居、智能办公室或智能产业。
为了使智能设备成为网状网络的一部分,需要向智能设备提供安全凭据和配置信息。一般来说,智能手机是用来安全地将这些信息传输到设备上的。开发了一种先进的方法来提供一个不使用智能手机的BLE Mesh网络。在网格节点中使用相同的BLE接口来提供节点,以降低成本并消除对智能手机的需要。这有助于老年人和盲人等不熟悉智能手机的人更容易使用mesh网络。
介绍
BLE-Mesh是一个物联网应用,用于在Mesh网络中连接多个BLE (Bluetooth Low Energy)设备。它使蓝牙设备成为一个强大的、集成的、扩展范围的Mesh网络,具有真正的双向通信。使用该技术可以在一个安全的网络中非常有效地控制和监控多个设备。

配置是对设备进行身份验证并提供BLE网状网络基本信息的过程。一个设备必须被供应成一个节点。一旦准备就绪,一个节点就可以在BLE网状网络中发送或接收消息。
供应器是能够将设备添加到网状网络中的节点。它管理地址的分配,以确保没有重复的单播地址被分配。供应器在未供应的设备经过身份验证后邀请其进入网状网络,将未供应的设备转换为网状节点。provision oner通常是智能手机或其他智能计算设备。将配置功能引入嵌入式板使整个系统自治,需要用户最少的输入,并以降低成本提高安全性。

配置程序
配置是将设备安装到网络中的过程。这是一个强制性的步骤,以建立一个低能耗蓝牙Mesh网络。
在配置过程中,提供方为每个设备安全地分配一个网络密钥和一个唯一的地址空间。预置协议使用P-256椭圆曲线Diffie-Hellman密钥交换创建临时密钥,对网络密钥和其他信息进行加密。这提供了来自被动窃听者的安全性。
配置使用分层架构,使用图3所示的配置协议发送配置pdu(协议数据单元)。

答:供应不记名
要供应设备,必须在供应器和设备之间建立供应承载器。供应方通过其设备UUID或也可能提供的任何其他补充信息来标识设备。供应承载层用于在供应器和未供应设备之间传输供应pdu (Protocol Data Unit)。在BLE Mesh标准中定义了两个供应承载者:
- PB-ADV是一个供应承载器,用于使用通用供应pdu在广告通道上提供设备。万博就是皇冠供应机制是基于会话的。会话使用链路建立过程建立。
- PB-GATT是一个供应承载器,用于在Mesh供应服务中使用代理pdu来封装供应pdu来提供设备。它使用数据通道在两个设备之万博就是皇冠间交换信息。
B.通用配置层
通用配置层负责在不可靠的无连接配置承载层上传输通用配置pdu。该层使用定义的通用配置pdu确保配置协议报文的可靠传递。通用配置PDU格式由通用配置控制(GPC)字段和可变长度的通用配置有效载荷组成。
c .代理协议
提供GATT承载是为了使不能支持广告承载的设备能够参与像移动电话这样的网状网络。GATT承载使用Proxy协议,通过GATT连接在两台设备之间发送和接收Proxy pdu。
d .供应协议
发放pdu用于发放人员在发放过程中与未发放设备通信。配置PDU的第一个八位是Type字段,定义了配置PDU参数的格式,如图4所示。

建立provisioning bearing后,provisioning通过向设备发送provisioning invite PDU启动provisioning procedure。设备通过将其支持的供应功能发送给供应器来确认它。
Provisioning在设备支持的能力中进行选择,并发送Provisioning Start PDU。供应方发送供应公钥PDU以发送用于ECDH计算的公钥。
当用户完成输入操作时,可选设备发送Provisioning Input complete PDU。
供应端或设备向对等端发送配置确认PDU,以确认到目前为止交换的值,包括Authentication值和尚未交换的随机数。发放方或设备发送随机分配PDU,使对端设备验证确认信息。发放人员发送发放数据PDU,将加密的发放数据发送给设备。最后,设备发送配置完成的PDU,表示它已成功接收并处理了配置数据。
供应协议中使用的各种供应PDU类型如表1所示。
表1 .分配PDU类型
供应PDU类型 | |||
类型 | 的名字 | 描述 | |
1 | 0 x00 | 准备邀请 | 邀请设备加入网状网络 |
2 | 0 x01 | 供应能力 | 显示设备的能力 |
3. | 0 x02 | 准备开始 | 表示用户选择的发放方式 的供应者 根据设备的能力 |
4 | 0 x03 | 提供公钥 | 包含设备的公钥或 的供应者 |
5 | 0 x04 | 配置输入完整 | 指示用户已完成值的输入 |
6 | 0 x05 | 配置确认 | 包含设备或设备的配置确认值 的供应者 |
7 | 0 x06 | 提供随机 | 的配置随机值 设备或 的供应者 |
8 | 0 x07 | 配置数据 | 包括分配的单播地址,一个网络密钥,NetKey索引,标志和IV索引 |
9 | ( | 配置完成 | 表示配置完成 |
嵌入式实现粮食供应者
嵌入式供应器基于意法半导体的BLE Mesh解决方案STSW-BNRG-Mesh。它的发展是为了在网状网络中添加设备,在这一点上它们成为节点。
发放过程分为五个步骤:
- 报警
- 邀请
- 交换公钥
- 身份验证
- 配置数据的分布如图5所示。

一个支持PB-ADV的设备,尚未被供应,也没有在被供应的过程中,将发布未供应的设备信标。嵌入式供应器连续扫描BLE信标,搜索范围内任何未供应的设备。
在获得所有未供应设备的设备uuid后,嵌入式供应器使用PB-ADV供应承载器使用通用供应器层建立链接。
建立发放承载后,通过发放协议发起设备的发放。发放人员通过发放pdu与设备通信。
供应者邀请所选设备开始供应过程。在从设备获得供应能力之后,provisioning确定它可以供应设备。它发送选择的支持安全算法,使用一个OOB公钥技术的可用性,这个设备的能力向用户输出值,这个设备能够允许用户输入一个值,如果设备有一块OOB数据可用于身份验证。
由于不能使用OOB技术使用公钥,因此在两个设备之间交换公钥。
一旦知道了对端设备的公钥,供应器和设备都使用计算出的Diffie-Hellman共享密钥ECDHSecret,并从该共享密钥生成会话密钥。
ECDHSecret = P-256(私钥,对等公钥)
此会话密钥已用于加密和验证供应数据。然后,它使用特定于该设备的信息来验证该设备。两个设备都用一个随机数交换了确认信息。确认值是迄今为止交换的所有值和随机数的加密散列。一旦设备通过了身份验证,配置数据就会被发送到设备,并使用来自共享秘密的密钥进行加密。
设备从发放器接收到发放数据PDU后,对发放数据进行解密和认证。在成功完成地址分配过程后,设备响应一个配置完成PDU以确认它已经被配置。当从设备接收到Provisioning Complete PDU时,Provisioning假定Provisioning process已经成功完成,并且设备正在使用单播地址的值。
供应器不会重用已分配给设备并在供应数据PDU中发送的单播地址,直到供应器从同一设备接收到未供应的设备信标或Mesh供应服务的服务数据(使用设备的设备UUID标识)。
嵌入式供应者应用程序与BLE Mesh应用程序一起运行在BLE堆栈的顶部。为了使嵌入式供应器应用程序与设备内存有限的节点工作在同一芯片上,采用了优化编码方法。
在嵌入式供应程序应用程序中,使用状态机来处理不同的供应过程状态。它首先扫描BLE信标状态,在该状态中供应器扫描未供应的设备信标,与选择的设备建立链接,执行供应过程,为设备分配地址并将设备信息保存在闪存中。该状态机以循环方式工作,在图6所示的范围内供应多个未供应的设备。

结果和嵌入式供应器的使用
嵌入式provider节点第一次上电后,创建mesh network中收发数据包所需的网络凭据,包括网络密钥、应用密钥、IV Index等。
可以使用串行UART接口与供应器节点进行交互。在成功创建网络凭据之后,串行接口上出现一条信息消息,将该节点显示为供应节点,如图7所示。

在BLE Mesh中,未供应设备信标被未供应的设备使用,以允许供应器发现它们。设备广播它们自己唯一的设备UUID来进行标识。
要检查任何未供应设备的存在,供应节点需要扫描可用信标。扫描过程可以通过使用定义为ATEP scan的串行终端发送扫描命令来启动。嵌入式供应程序开始扫描BLE广告通道以获取可用的未供应设备信标。万博就是皇冠
作为对该命令的回应,供应节点提供串行终端上所有可用的未供应设备的设备uuid列表。图8显示了在使用设备uuid标识的供应器范围内可用的两个未供应设备的扫描命令响应。

此信息可用于选择任何可用的未供应设备进行供应。要开始配置所选节点,可以使用另一个定义为ATEP PRVN-XX的命令并通过串行终端发送。这里XX表示扫描阶段未供应设备接收列表中的设备位置。XX是一个基于零的偏移量,因此对于第一个设备,XX变为00。
发放命令下发后,发放节点通过PB-ADV发放承载与设备UUID标识的设备建立连接。通过此链接,所有必需的配置协议消息都已使用配置pdu发送。
通用配置层通过不可靠的无连接配置承载器使用通用配置pdu确保可靠地传递配置消息。
设备配置成功后,配置程序将打印一个配置成功消息以及计算出的节点设备密钥。对于网状网络中的每个节点来说,设备的关键信息和分配的节点单播地址都作为网络信息保存在闪存中,用于以后的网络或节点配置。
最后,从设备供应器获得成功的配置完成消息后,关闭已建立的链接,如图9所示。

嵌入式供应程序应用程序的开发方式使其工作在与用于节点的同一芯片上。这需要一种优化的编码方法,以便将完整的Embedded provider应用程序装入有限的设备内存中。使用优化的编码方法,除了BLE Mesh应用程序的Embedded provisioning特性,只需要3Kbytes的闪存。
结论
随着物联网设备市场的不断增长,越来越多的设备成为远程控制和监控网络的一部分。随着网状网络中智能设备的增多,嵌入式供应器是一种很好的替代方案,有助于节省时间和成本。
在一个包含数百个设备的网状网络中,对所有设备进行配置确实是一个巨大的挑战。通过在一个小型自动化脚本的帮助下配置节点,嵌入式供应器可以轻松地处理这个问题。
它还可以包括在嵌入式系统,如智能扬声器,智能电视,以帮助他们创建网状网络,供应和控制网状节点。因此,随着新的发展,越来越多的不同类型的设备可以简单地添加到网状网络中。
引用:
[1] Mesh Profile Bluetooth Specification, Revision: v1.0, Revision Date: 2017-7-13, pp. 227-259
[2] Mesh Model Bluetooth Specification, Revision: v1.0, Revision Date: 2017-7-13
[3]蓝牙核心规范,4.2版,发布日期:2014-12-02
[4]网站
[5]网站
[6]维基百科