• 大小: 0.62M
    文件类型: .pdf
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


蓝牙mesh基础概念讲解,节点,Model, Provision,元素,单播地址,组播地址等等概念性知识讲解。
阅了"餐厅"这个地址,所以只有灯3能被开关2控制。在这个例子里同样说明了每个节 点可以订阅多个确切的地址。同样的,你一定也注意到了,开关5和开关6同样都可以 发布消息到”花园“。 17状态和属性( States and Properties) 在藍牙mesh中,元素的不同情况叫做状态( States),状态是一个特定类型的值,在 每个元素内部存在。除了本身的值以外,状态还有一些相关的行为。拿灯来说,蓝牙 mesh定义了一个状态叫” Generic0noff.“灯收到了一个0N的状态,理解以后就会 执行相应的动作比方说点亮灯泡的行为 在蓝牙mesh里面的属性它提供一个来解释 Characteristic的上下文。举个例子。 如果有一个 Character istic,叫做 Temperature8,一个8位的温度状态类型,它有着 些相关联的属性,包含现在室内环境温庋和现在室外环境温庋。这两个属性允许 个传感器来发布传感器消息,收到的客户端(关于客户端和服务器端的内容找们后面会 讲)会根据属性得知到底是哪个温度信息。 18消息,状态和属性的关系( Messages, States and Properties) 蓝牙Mesh里面,要进行某种操作,就是调用消息这一基本机制。一个给定的消息 类型代表了一个对状态的操作或者对多个状态的采集。所有的消息都可以分成三种简单 类型:get、set、 status。 GET顾名恳义,就是获取一个节点或者多个节点的给定的状态。当收到GET消息以 后, STATUS消息就发出来了。当然,它里面带着的是相对应的状态内容。 SET消息分为有应答和无应答两种。如果是有应答的,就会有 STATUS消息跟着出 来,如果是无应答的话,那就没有应答包。 STATUS消息,除上面的两种情况会出现之外,乜可以在其他的消息中出现,当然 乜可以独立出现。比方说某个元素用定时器勾隔一段时间发送一次。 在蓝牙mesh里面定义了很多种消息,通过0 ocode来区分,还包含了相关联的参数 和行为。 pcade可以是单字节,双字节(常见)或者三字节(厂商指定)。 绝大部分的mesh消息都是对状态进行操作的,只有特别的和属性相关的消息,才 会对属性进行操作,而且需耍制定16位的属性ID 3/10 19状态转换( State transitions) 1.8说到了状态的设置和获取,那么在进行状态改变的时候,这种改变可以是立刻 发生的,也可以是过一段时间发生的。图4把不同的时间给表示出来了。 Target State Present state Initial state Remaining Time Transition Tim日 Set (new state value) Status(present state value, target state message received value, remaining time)message sent Fiqure 3.26: State transition 图4 初始化状态( initia state)是指刚收到SET新的状态值的时间。从收到SET消息 到状态改变的时间叫做转换时间。从 STATUS消息发出(可以在中间的任何时间点)到 日标状态完成这个叫保持时间( Rema in ing time),所以当你收到 STATUS消息的时候, 状态可能还没有变化,在 STATUS消息里也可以包含离目标状态的变化还有多少间。 1.10状态绑定( Bound states) 不同的状态之间可能会有一些关系。比如说一个状态的变化会造成另外状态的触发, 这种关系叫做状态绑定。状态的绑定是可以跨Mode的,(Mode丨这个重要概念我们马 上会提到),也可以在多个元素中。再举个例子,灯光亮度状态和开光状态。当你把亮 度状态改到0了,乜就触发了开关状态的“关”状态,反之亦然。 1.11模型( Models) 1.11.1 模型( Mode l)定义了一个节点的基本功能。一个节点当然可以包含多个 Mode l。 个Mode丨定义了节点所需要的所有的状态。消息会给基于这些状态进行操作,当然也会 有相应的行为随之产生。 Mesh的应用定义的是使用“发布-订阅( pub l i sh- subscr ibe)”的典型的“服务 器一客户端( client- server)”的架构。在Mesh里面,并没有沿用传统的端到端的 Profile”的概念,而是定义了三种不同的模式, Client, Server和 Contro 4/10 定义了状态 states,状态转换 state tr ons,状态绑 定 state bind ings和包含了哪些消息,当然也同样定义了与这些消息,状态, 状态转换相关的行为 Behaviors 没有定义任何的状态 States,但是它定义了要牧发哪些消息。 定义这些消息是为了GT,SET或者获取在 Server mode s里面定义的状态。 具备 client mode I的功能与其他的 server mode进行交互, 同时也可以有 server mode I功能与其他 client mode l进行交互。内置了逻 辑控制层〔一套规则和行为在各个与之连接的模型中进行协调交互)。 图5展示的是 Device c( server mode)带有状态,支持 RST XYZ消息, Device A ( client mode)支持Ⅹ丫Z消息, Device B( cient mode l)支持RSTz消息。 Client Model Server Model Message Y Element Device A State Client Model Message R Message s Message T MMessage 2 Element Element Device b Device C 图5客户端与服务端糢型交互 图6 Device C( contro mode l)可以作为 client mode与 server mode l( device A与 device B)进行通讯(分别攴持XYZ和RST消息),也可以作为 server mode I与 client model( device D)进行通讯(支持ABC消息)。 5/10 Server Model Control mode Server Model Message X Message R Controller State Message Y Logic(Client) Message State ■■ ■■ Message z Message T Element Controller Message Z State(Server) Device A Element Device B Element Device C 9 Client Model Element Device d 图6控制模型交互 1.11.2通用( Gener ics) 为了满足不同的需求,Mesh中定义了多种不同的mode丨s,实际上SG确实有 个 Mode I specification。现在是1.0的版本,只定义了几个 Model group Gener ics, Sensor s, Time and scenes和 Light ing。你仔细看一下这几个名字就 会发现,其实 Gener ic这个mode就是把很多不同应用的相似的部分例如0NOFF, Leve丨一些状态和行为放在了一个叫做通用的 mode l里面。如果你的产品没有办 法找到对应的 mode I,就可以先用 gener Ic这个mode先用。 112配网( Provisioning 配网的全过程包括大概5个步骤,分别是 Step 1. Beaconing; Step 2. Invitation; Step 3. Exchang ing Pub l ic Keys Step 4. Authent icat ion Step 5. distr ibut ion of the Provisioning data 6/10 其实也很筒单,第一步,告诉你我要配网,这里使用的是新定义的AD广播包 类型, Mesh ad。第二部,配网者 Provisioner听到了这个 Beacon以后,就发一 个邀请,这个邀请就是配网邀请PDU( Protoco Data Unit)。要入网的设备收到 邀请以后,会把自己的一些配网的能力( Provisioning capabilities)发回来。接 下来,既然郎有情妾有意,就公开交换信物-公钥呗。接下来就会有一个互动随机 数的认证流程,这点和原来蓝牙输入0000的密码很像,但是会筒单一点点。最 后一步,认证完成,从公钥和两个设备的私钥浪生出 Session Key。后面的配网的 信息交互的过程会用这个 Session key来加密。配网成功以后,就会根据最后一步 里面包含交换的 NetKey来加密后面的数据交换。跟加密相关的一些参数例如V index,和单播地址,会存在配网者那里。 1.13节点特性( node features) mesh里面还给每个节点有一些额外的四种可选的特性( Features)。分别是中继 Relay代理 Proxy,朋友 Friend和低功耗 Low Power features。节点可以在某个时 间点选择不支持或者支持多个 Feature。 中继(Reay)支持中继的节点,可以帮忙转发收到的消息。因为有了 Relay, Mesh网络就可以实现多跳(Hops)s 低功耗和朋友( Low Power nodes and friend nodes),这是搭配来用的。 我们先说 Low power节点,类似于对功耗有要求的设备,例如温度传感器。这种 类型的设备为了节约功耗,很大的时间都是在休眠的。也就是意味着他们收不到网 络中发过来的消息。 Friend节点能帮LP节点暂存消息。当LP节点需要的时候,可 以发消息给 Friend节点,问问有没有" waiting message"。如果有,就会一条条的 发给LP节点。简而言之,Fend节点就像是门卫的张大爷,你( Low power node) 想起来的时候去门卫拿你要的信就好了。这种方式和 zigbee里面的 enddevice向 父节点拿数据的方式类似。 下面简单的拓扑结构基本上说明了这两种 Feature和其他一般Node的关系和 消息路径。显而易见,如果有消息要发从T发给L,S会帮忙转发,O会帮忙L存 起来。L要消息的时候,O再把T的消息发给L。 …ADV( Not relayed) ADV(Low Power) ADV Beare GATT Bearer Low Power node Relay node Friend nodc I Friend feature( rot used K 图7mesh网络中的拓扑结构 7/10 代理( Proxy)的 feature又是什么呢?这就是Mesh想到的兼容现有的非Mesh 设备的方法。在 Proxy节点,其实是可以通过BLE的GATT来交流的。(这是现在 非 Mesh ble设备最常用的数据交流方式)。 Non mesh Mesh 图8有mesh功能与无mesh功能之间的通讯方式 每个节点当然还有一系列配套的配置集,在 Configuration Server Model和 Configuration Client Mode里的 States都有实现。比如,上面说到的不同的 Feature 都是在 Configuration Server states说明的。在蓝牙Mesh也一样定义了配置消息 (configuration messages) E 2蓝牙mesh协议架构 21mesh协议层架构图 Model Laver Foundation Model Layer Access Layer Upper Transport Layer Lower Transport Layer Network Layer Bearer Layer Bluetooth Low Energy Core Specification 图9mesh系统架构 8/10 22承载层( Bearer layer) Bearer Layer定义了Mesh节点怎么传递网络消息的。定义了两种 Bearer,广 播 advertising bearer和 gatt bearer Advertising Bearer利用的是 BLE GAP广播包的 advertising和 scannIng 的功能来传递接收mesh的报文。 The gatt bearer允许不支持 Advertising Bearer的设备间接的与mesh节点 进行通讯。怎么通讯呢?使用前面讲的代理 Proxy protoco)。 Proxy protocol是封 装在GATT里面,当然会用特别定义的 gatt characteristics。上一讲我们讲到了 Proxy Feature,支持 Proxy Feature的 Proxy node也就是代理节点,因为可以同时 支持两种 Bearer Layer,所以可以作为mesh节点和非mesh节点的中间桥梁。 23网络层( Network Layer) 网络层定义了几件事情,一个是定义了多种网络地址类型,我之前有说过关 于Mesh地址的内容。二是定义了网络层的格式,打通传输层( Transport layer) 和承载层( Bearer laye);三是定义了一些输入输出 Filter,决定哪些消息需要转发, 处理还是拒绝。四是定义了网络消息的加密和认证 24底层传输层[ Lower Transport Layer) 这层做的事情很简单,就是拆拆拼拼。把太长的传输层的包拆成若干个分给网 络层,把短的网终层的包再组成一个长的传输层的PDU( Protocol Data Unit) 25上层传输层( Upper transport Layer) 上层传输层主要是负责加密,揭秘和应用数据授权。一句话,消息的安全性和 机密性就是有这一层负责的。还有就是会定义一些节点间在这一层的一些会话,比 如 Friend功能,心跳包( Heartbeats)。 26访问层( Access Layer 访问层主要负责:1定义更高层的应用如何跟 upper transport layer通讯。2定 义应用数据的格式。3定义和控制 upper transport layer应用数据的加解密。4在把 应用数据扔到上层之前,会检查校验接收过来的应用数据是否合法 27基础Mode层( Foundation Models Layer) 基础mdel层定义访问层( access layer)的尖态,消息,模型配置和mesh网 络管理。 28Mode层( Model Layer) Mode层定义了典型的用户场景标准化操作的相关 models(相关的 models定 9/10 义在 文档中)。更高层次模型规范的例子包括照 明和传感器的模型。 10/10

资源截图

代码片段和文件信息

评论

共有 条评论