BLE-Mesh是低功耗蓝牙基础上建立的多对多通信协议,蓝牙5.0开始全面支持Mesh网状网络。全新的Mesh功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化、无线传感器网络等需要让数以万计个设备在可靠安全的环境下传输数据。蓝牙技术是享誉全球的品牌之一,也是全世界应用最为普遍的无线通信技术之一。'''从2000年到现在,蓝牙技术已经广泛应用于数十亿台设备。就2016年而言,制造商的蓝牙设备出货量更是超过30亿台'''。
== 蓝牙Mesh规范 ==与蓝牙核心规范一样,蓝牙Mesh也有自己的规范文档,其作用和蓝牙核心规范类似,详细定义了蓝牙Mesh相关的技术细节。蓝牙的创新步伐从未停止。自面世以来,每一次改进都系统严谨,紧跟市场需求,一直支持和鼓励创新。
== 与低功耗蓝牙的关系 ==蓝牙MESH基于低功耗蓝牙,并与该协议共享最低层。蓝牙MESH物理层与现有的低功耗蓝牙设备兼容,因为MESH消息包含在BLE广播包的有效负载中。但是蓝牙MESH指定了一个全新的主机层,尽管一些概念是共享的(例如主机层),但蓝牙MESH与低功耗主机层是不兼容的。[[文件:蓝牙mesh与低功耗蓝牙的关系.png|边框|居中|无框|868x868像素]]蓝牙技术令人惊叹的故事还在继续着,蓝牙mesh网络翻开了最新篇章,'''150家蓝牙技术联盟会员公司都参与了mesh的创建'''。
== 应用领域 第一章节:Mesh介绍 ==蓝牙MESH主要针对简单的控制和监视应用,比如光控或传感器数据采集。数据包格式针对小数据进行了优化,仅发出单一的命令或报告。蓝牙Mesh并不适合用于数据流或其他高带宽的应用。这是系列文章中的第一篇,将向您介绍蓝牙mesh网络。我们从两篇概述开始, 后续篇章中将更详细地探讨技术的各个方面。
使用蓝牙MESH比传统的低功耗蓝牙技术相比,会消耗更多的电能。这主要是由于需要保持射频收发的持续运行。'''风格 OR 特性'''
在一个MESH中,蓝牙MESH最多支持32767个设备,最大的MESH直径为126跳。对蓝牙技术感兴趣的朋友一定有这样的习惯:定期查看蓝牙技术联盟采用的新版本。
== 网络拓扑和中继 ==蓝牙MESH是一个基于广播的网络协议,在这个网络协议中,网络中的每一个设备都发送和接收来自无线电范围内所有设备的所有消息。在网状网络中没有连接的概念。网络中的任何设备都可以从其他设备中传输消息,这使得一个网络设备可以通过让一个或多个其他设备将消息传递到目的地,从而将消息发送到无线电范围之外的设备上。这一特性还允许设备在任何时候移动和退出网络。通常,新版本为蓝牙提供附加特性,或者以某种方式改进现有功能。不管怎么说,蓝牙全新的“风格”已经面世;一款风格出众的蓝牙技术变体,将以完全不同的方式利用无线电,并针对一系列广泛的用例设计和应用进行了优化。
== MESH传输 =='''蓝牙基础速率/ 增强资料速率(BR / EDR)是蓝牙发布的第一款风格''',旨在替代缆线连接,很快就成为无线音频市场的主宰,并推动了新型计算机外设(如无线鼠标和键盘)的发展。蓝牙MESH利用BLE的广播和扫描仪角色,通过BLE的广播包进行通信。广播包被附近的MESH设备接收,并像其他BLE的低能量广播包一样处理。MESH数据包以唯一的广播类型表示,并添加到广播层的有效负载中。[[文件:BleMesh-蓝牙耳机.jpg|居中|无框|600x600像素]]'''随后登场的是低功耗蓝牙(Bluetooth Low Energy)'''。它经过优化,极大程度地减少了设备功耗,仅使用硬币大小的电池就能实现无线操作和通信,运行数年不在话下。
BLE在定期的广播间隔发送广播包,而MESH数据包也不例外。然而,与传统的广播者不同的是,MESH设备将会在每次传输中改变广播层的有效负载,在堆栈中按照队列的方式排列新的MESH包。每个蓝牙MESH广播包只在每台设备上传输一次,如果在MESH中没有流量,设备就会保持沉默。'''低功耗蓝牙现已被广泛采用'''。如今很难找到不支持低功耗蓝牙的智能手机或平板电脑。健康、运动和健身器材,如运动追踪设备、以及智能手表等可穿戴设备,都有赖于低功耗蓝牙技术。这一款蓝牙风格可谓影响深远。 == 中继器 ==蓝牙mesh通过转播消息来扩展网络的范围。任何网络设备都可以配置为一个中继器,并且不需要专门的中继设备来建立一个网络。作为中继的每一个设备都将减少接收消息的时间(TTL)值,如果TTL是2或更高,则转发它们。这种无定向的中继被称为消息泛滥,并确保消息传递的高概率,而不需要任何关于网络拓扑的信息。网格配置文件规范不提供任何路由机制,所有的消息都由所有的中继转发,直到TTL值达到0。为了避免被相同的中继转发的消息,所有的网格设备都维护一个消息缓存。这个缓存用于过滤设备已经处理过的数据包。基于洪水的消息传递方法可能会导致大量的空中冗余流量,这可能会影响网络的吞吐量和可靠性。因此,强烈建议限制网络中继电器的数量来限制这种效果。在网络中,启用了中继的设备的速率是消息的冗余和可靠性之间的一种权衡。它应该根据网络密度、流量、网络布局和可靠性和响应性需求进行调整。 == GATT代理 ==为了支持不支持接收网格数据包的传统蓝牙低功耗设备,蓝牙MESH定义了一个单独的协议,用于通过蓝牙低功耗的GATT协议来实现隧道网消息。为此,MESH配置文件规范定义了一个GATT的持有者和相应的GATT代理协议。该协议允许传统的蓝牙低功耗设备通过建立一个GATT连接到一个具有代理特性的网格设备来参与MESH。 遗留设备被分配一个地址和必要的密钥,成为网络的正式成员。该设备通过常规的配置过程或通过一些带外的机制接收安全凭据。 == 电能消耗 ==为了支持基于广播的通信,设备必须连续不断地将无线电保持在收听模式中,这比典型的低功耗蓝牙低功耗设备的功耗要高得多。为了使低功耗设备能够参与到MESH网络中,蓝牙MESH包含了一个低功耗的友好功能。该协议允许低功耗设备与常规的mesh设备建立一种关系,然后定期将消息缓存和转发给低功耗设备。 这样就可以节省低功率设备,让它不必再继续听传入的消息了。 == 寻址 ==蓝牙MESH寻址方案与低功耗蓝牙寻址方案不同。它有三种类型的地址:* 单一地址:每个设备的唯一* 组地址[[文件:允许形成一组设备,并一次性处理它们* 虚拟地址:未跟踪的基于uuid的地址,地址空间很大当一个设备被添加到一个网络时,它被分配一个代表它的单一地址的地址。设备的单位地址不能更改,而且总是顺序的。单一的地址空间支持在单一的网格网络中拥有32767个单位地址。任何应用程序都可以使用单播地址直接向设备发送消息。组地址分配和分配作为网络配置过程的一部分。组地址可以表示任意数量的设备,并且设备可能是任意数量的组的一部分。在一个网状网络中最多可以有16127个通用目标组地址。虚拟地址可以看作是组地址的一种特殊形式,可以用来表示任意数量的设备。每个虚拟地址都是由一个文本标签生成的128位UUID。虚拟地址不需要通过网络配置设备来跟踪,这样,用户可以在部署之前生成虚拟地址,也可以在网络中的设备之间生成特定的地址。 == 供应 ==在一个设备能够参与正常的网格操作之前,必须先提供它。在供应过程中,一个设备被添加到网络中,并被分配到一个单一的地址、一个网络密钥和一个设备密钥。供应是由一个供应者完成的,这是一个受信任的设备,可以访问网络中的所有设备和它们的地址。在配置了新设备之后,预计将使用新设备的设备密钥来建立一个安全通道来配置它。 == 模型和元素 ==模型和元素为了规范来自不同供应商的设备之间的通信,网格配置文件规范定义了一个访问层,它在设备的不同模型之间路由网格消息。模型表示特定的行为或服务,并定义一组状态和消息,这些状态和消息在这些状态下执行。网格配置文件规范和网格模型规范分别定义了一组模型来覆盖典型的使用场景,比如设备配置、传感器读数和光控制。除了这些,供应商还可以自由地定义自己的模型,并提供相应的消息和状态。 设备中的模型属于元素。每个设备都有一个或多个元素,每个元素都在网格中作为一个虚拟实体,并具有自己唯一的单一地址。每个传入消息都由一个元素中的模型实例处理。为了能够唯一地解决如何处理消息的方式,每个元素只有一个模型实例可以为特定的消息操作码实现一个处理程序。如果一个设备具有相同模型的多个实例,那么每个实例必须被分配给一个单独的元素。类似地,如果两个模型为相同的消息实现处理程序,那么这些模型必须在单独的元素中。 为了用最少的消息和状态重复来表示复杂的行为,模型可以由其他模型组成,可能跨越多个元素。这些模型被称为扩展模型。纯自包含的模型称为根模型。 模型通过发布和订阅系统相互通信。每个模型都可以订阅一组组和虚拟地址,并且模型只处理发布到其订阅地址或包含元素的单播地址的消息。任何模型都可以维护发布消息的发布地址。这个发布地址可以是任何类型的。BleMesh-小米手环.png|居中|缩略图|600x600像素|蓝牙基础速率/ 增强资料速率(BR / EDR) 引发无线个人音频变革]]
== Mesh系列文章 ==