谈谈Bluetooth Mesh【市场及协议框架】

2020-02-19

  终于开启了BLE MESH组网这个话题,本文作为MESH系列的第一篇,介绍Bluetooth mesh 1.0协议的体系结构和功能,Bluetooth Mesh协议作为蓝牙低功耗协议的补充协议,独立于蓝牙5.0,该协议首次将开放标准的网状网络引入低功耗蓝牙设备。

  MESH网络是针对面向智能家居和楼宇自动化应用应用而生的低功耗无线技术, 但是由于蓝牙联盟之前缺乏对MESH网络支持,使得使用低功耗蓝牙的工程师不得不选择其他技术(Zigbee和Thread)用于智能家居应用的开发,直到2017年中蓝牙MESH的规范公之于众。现在蓝牙SIG通过引入蓝牙5.0补充规范-蓝牙网状网络1.0解决了MESH组网这一欠缺。该规范不需要其他硬件支持,可以通过刷新固件在目前已有蓝牙低功耗芯片(v4.0、4.1、4.2和5)上运行。一些芯片厂家已经可以支持Bluetooth Mesh 1.0协议。

1. BLE MESH市场现状:


  到目前为止,全球已经在SIG联盟认证的BLE MESH的企业共有73家,认证的产品数量高达461个,该数据包括终端产品和芯片的认证总数,下表罗列出认证企业和其产品认证的数量,其中国的互联网巨头认证的终端产品不少。

BLE1.jpg


2. MESH网络的优势


  低功耗蓝牙最初旨在通过将无线技术扩展到电池供电的设备,补充“经典”蓝牙低功耗的不足。比如低功耗蓝牙在心率带或无线控制的玩具应用,这些设备都通过低功耗蓝牙与主机设备(例如手机)进行通信,,甚至一个主机设备控制多个从机设备,形成星形网络拓扑。

  低功耗蓝牙由于其与手机的互操作性在一定程度上帮助其迅速扩展到其他领域应用,包括照明控制,智能家居等。在这些类型的应用中,星形网络的缺点就变得很明显。例如,蓝牙低功耗解决方案只能应付有限数量的同时连接(通常为八个),灯泡数量超过该数量的照明设备无法通过单个命令进行控制,从而导致控制延迟。其次,在大房子,远处的灯泡可能不在中央控制器的范围内,需要有路由功能的节点转接。

  在网状网络中,不是通过Gateway与各个外围设备进行通信,而是通过跨连接多个节点的双向通道进行转发,将消息从网络中的一个点中继到其他任何点。这样,网状网络带来了显着的优势,因为它允许同时控制多个连接设备,克服了范围限制。

BLE2.jpg

3. BLE MESH核心协议


  自从推出Bluetooth LE以来,低功耗蓝牙已推出版本4.1、4.2、5.0,和5.1版本,协议中增加了比如传输范围、吞吐量、广播数据载核、AoA、AoD定位,以及共存方面的改进(当然,这些新特性有些属于可选,可选的意思是不支持这些新功能的芯片也可以是蓝牙5.0的芯片)。

Bluetooth Mesh 1.0不是简单的Bluetooth 5的升级,他是独立与蓝牙协议之外的一套协议,任何旧版(4.0、4.1、4.2、5)低功耗蓝牙芯片产品都可以进行修改升级,仅需进行固件升级即可运行蓝牙网格,前提是flash和ram资源足够。

  BLE MESH核心协议向蓝牙协议兼容的特点在于,蓝牙MESH网络并不是蓝牙BLE协议栈中不可或缺的一部分,而是一个由七个层组成的单独的新实体,其中的某些节点可以和蓝牙协议进行数据交互。

BLE3.jpg


4. 蓝牙网状节点


  蓝牙网格使用四种类型的网络节点:

  中继节点(Relay Nodes )中继节点通过网络层接收和转发数据包。中继节点的缺点是它们必须始终保持警报状态,这会大大增加功耗。这对于诸如智能照明之类的主电源供电的应用程序不是不利的,但是对于诸如被并入网络中的交换机之类的非主电源供电的节点则是一个问题。

低功耗节点(LPN)低功耗节点采用蓝牙低功耗的标准节电特性(即:长时间处于睡眠状态),因此可以通过电池或能量收集来长期运行。每个LPN都连接到由市电供电的Friend Node,该Friend Node保持唤醒状态并缓存指向LPN的所有消息。当LPN进入接收模式(按照预定的时间表)时,它接受缓存的消息,按照指示进行操作,然后返回节能睡眠模式。

  友邻节点(Friend Nodes)友邻特性收听网络中转发的任何消息,友邻节点会存储这些消息,当低功耗节点唤醒并Polling友邻节点时,将这些消息传送给相关的低功耗节点。由于友邻节点需要为一个或多个低功耗节点存储消息,因此友邻节点会比其他类型的节点多占用存储器。所需的存储器大小取决于需要存放在友邻节点、并在轮询操作中传送给低功耗节点的数据/命令数量。

  代理节点(Proxy Nodes)代理节点是非BLE MESH设备(手机)连接到BLE MESH网络的唯一入口。对于不直接支持蓝牙的Mesh设备,具备代理特性的节点是它们登入Mesh网络的入口。代理特性支持节点在GATT(通用属性)层和广播承载层之间转发消息,而在蓝牙Mesh网络中,消息是通过广播承载层转发。例如,当用户希望使用传统智能手机来控制智能照明网络时,此功能很有用。交互是通过节点和设备的通用属性配置文件(GATT)数据传输实现。

BLE4.jpg


  举个例子,如图所示的温度传感器是电池供电的LPN,设备定期从灯泡友邻节点(最左端长供电的灯泡)接收发送温度消息,温度消息通过灯泡间的传递,最后智能手机通过BLE的GATT层和代理节点的灯泡进行数据传递(左上)。
  另外,在新节点加入MESH网络前,必须进行入网配置,用于保证该新设备可访问网络中所有节点,是一个受信任的设备。进入网络后,MESH网络为新节点分配地址,以及设备类型和设备密钥。设置后,设备密钥用于建立安全通道以配置新节点使用,理论上蓝牙MESH网络可以支持多达32,000个节点。


5. 蓝牙MESH架构


  蓝牙网状网使用“泛洪”技术在网络上发送消息(说人话:病毒传播方式)。每个数据包都转发广播到网络中的其他节点,直到消息送达目标节点为止。消息广播可以针对单个节点,一组节点或所有节点。举个例子,我们可以把单个房间所有的灯定义为一个组地址。蓝牙mesh规范定义了四个固定组地址:“所有代理节点”,“所有好友节点”,“所有中继节点”和“所有节点”以专门针对节点类型。(LPN不具备转发消息功能,因为他要保持低功耗,就是这么高冷)。
  泛洪网状mesh架构和组地址的选择增强了蓝牙MESH网络对于智能家居应用支持。例如,MESH网络中的Gateway设备收到“ ON” 命令,可以通过MESH网络快速把该指令广播到整个网络,每个网络中的节点设备都接收该命令并据此采取行动,目标组中的灯可以几乎立即点亮。
相比于星型网络而言,MESH网络节点平均接收数据的最小等待时间比星形网络的最小等待时间低得多,因为在星形网络中,要求中央设备向每个连接的灯传输单独的命令,中央处理器需要分时下达指令到所以子设备。
  蓝牙MESH有一个和传统蓝牙不一致的地方,所有的mesh数据只会在37,38,39三广播信道传输,这种数据传输策略有好有坏,好的地方是效率高,信道传输策略简单;缺点是减少了网络带宽,增加了拥塞风险。
  MESH网络处理拥塞的机制有两种:第一个是“生存时间”(TTL)计数器,它定义特定数据包可以中继多少次(典型值为三个步骤)。第二个是广播数据包缓存,设备捕获一帧转发的数据包后只会广播一次,下次接收到其他设备广播的相同信息数据包时,该设备不需要进一步转发。
  开发人员还可以采用可选的组传递路线,以及保留中继功能,这样设置后,节点可以接收数据包,但不能将其传递,节点的灵活性会变差。


6. BLE MESH模型


  MESH MODE的概念类似蓝牙的profile概念,该模型规定一个公共信息结构体,内部可以包含一个或者多个服务(MODE的概念是用于定义终端设备)。
  模型包含节点特定的行为或服务,并定义了一组状态以及对这些状态起作用的消息。标准模型涵盖了典型的使用场景,例如设备配置,传感器读数和照明控制。 开发者还可以创建自定义模型。
  节点中的模型按元素排列;每个元素都充当具有唯一地址的网格中的虚拟实体。每个传入消息都由元素中的模型处理。

BLE6.jpg

  不同的模型间通过 “发布和订阅”方式相互交谈。发布节点发送一条消息,配置为订阅的节点接收到消息后会进行处理。
  在下图中,最左边的灯开关(开关1)指令发布到Kitchen组地址,假设节点Light 1,Light 2和Light 3(灯的顺序从左往右)订阅了Kitchen地址,因此它们会接收处理并根据发布到该地址的消息(例如“ on”和“ off”命令)进行操作。Light 3也预订了饭厅地址,因此可以从Switch 2以及Switch 1进行操作。

BLE6-2.jpg


7. 蓝牙MESH设备入网流程


  下图是一个完整的配网订阅的例子,该流程是蓝牙MESH配网注册设备的标准流程,灯泡首先向MESH网络发送信号,告知其正在寻找要加入的网络。配置节点会验证灯泡的信标,并邀请其加入网络。如果身份验证成功,则会为设备提供必要的密钥和地址,以加入网络并为配置做准备。接下来,为灯泡提供“家庭自动化”应用程序密钥。设置“ OnOff服务器”(控制灯泡)的发布状态,最后添加对“灯组”的订阅。

BLE7.jpg


8. 蓝牙MESH产品形态


  对2020年之前所有SIG认证的MESH产品进行初略统计发现,BLE MESH的应用主要集中在智能家居和灯控场合,灯控占6成,智能家具设备占3成,还有一成属于原厂的芯片认证以及玩具应用认证,BLE MESH势头很猛烈,在国内和几大互联网厂商有较为深入合作,MESH系列文章后续慢慢展开BLE MESH和Zigbee的分析,欢迎各位拍砖。

BLE8.jpg

分享