mesh术语

作者: Jeff_9021 | 来源:发表于2023-05-23 21:53 被阅读0次

    * 消息(messages):如果一个节点需要获取或者控制别的节点,或一个节点想要上报状态时,就需要发送对应类型的消息。在蓝牙Mesh里定义了很多种类型的消息,每种消息都有对应的操作码(opcode)。而根据是否需要应答,消息也分为“需要应答(ack)”和“不需要应答(unack)”。需要应答的消息被目标节点接收到后,需要回复“我收到啦”,告诉发送方信息已经被接收到。如果发送方没有收到应答,则发送方会进行重发。而不需要应答的消息,发出去后就不再管了。

    * 地址(address):地址就跟家里的门牌号是一样的。蓝牙mesh里边定义了四种类型的地址,未分配地址(unassigned address)、单播地址(unicast address)、组播地址(group address)和虚拟地址(virtual address)。具体的地址分配范围

    * 发布和订阅(publish / subscribe):在蓝牙Mesh里面发消息的动作叫做发布(publish)。节点发布消息到单播地址、组播地址或者虚拟地址。节点对这些数据感兴趣的话可以订阅这些地址。

    比如上图,开关1发布消息给组播地址“kitchen”,灯1灯2灯3都注册到了"kitchen"这个地址,因此他们都能收到kitchen的消息,就是开关1可以控制灯123。灯3还另外注册到了“Dining room”地址,开关2发布消息到“Dining room”,所以,开关2可以控制灯3。这样做的好出是当需要一些节点添加、删除或者替换的时候,其他节点不用重新配置。比如新买了一个开关,把它配网以后发布到“Kitchen”,那么灯123同样可以被新的开关所控制。

    * 状态(states):指一个元素(element)下的状态,比如上文中的例子,一个三孔插座,每个插孔就是一个元素(element),而每个插孔的开关,就是一个状态(state)。状态是一个特定类型的值,也对应着相关的动作。比如收到ON的状态,则执行打开动作。

            消息与状态之前有一些联系,比如消息有SET、GET和STATUS类型。GET就是获取一个或多个节点的特定状态。当节点收到GET消息后,就发送包含对应状态的STATUS消息。SET消息分为有应答和无应答两种。如果节点收到有应答的SET消息,执行SET的状态后,回复STATUS消息。如果收到无应答的SET,则只执行SET的状态,不回复消息。而STATUS消息除了通过SET和GET获取之外,设备还可以主动上报。比如一个温度传感器,就每隔一段时间自动上报一条STATUS消息。

            不同的状态之间可能会有一些关系,比如说一个状态的变化会造成另外状态的触发,这种关系叫做状态绑定。状态的绑定可以是跨model的,也可以是跨元素的。比如灯光亮度状态和开关状态,当把亮度状态改为0,也就触发了开关的“关”状态。

    * 属性(priperties):mesh中元素的属性与BLE中properties的属性大致相同,不同的是mesh中的属性可以让接收者识别出对应的是哪个元素。

            绝大部分的mesh消息都是对状态进行操作,只有特别的和属性相关的消息,才会对属性进行操作,而且需要制定16位的属性ID。

    * 模式(models):model定义了一个节点的基本功能。一个节点可以包含多个model。model包含节点所需要的的所有状态。消息会对这些状态进行操作,从而产生相应的行为。

    mesh应用使用“发布-订阅(publish-subscribe)”的典型的“服务器-客户端(client-server)”的架构。在mesh里面,并没有沿用传统的端到端的“profile”的概念,而是定义了三种不同的模式,Client,Server和Control。

    Server model定义了states,状态转换state transitions,状态绑定state bindings和包含了哪些消息,当然也同样定义了与这些消息,状态,状态转换相关的行为Behaviors。

    Client model没有定义任何的状态status,但是定义了要收发哪些消息。这些消息是为了GET、SET或者获取在Server models里面定义的状态。比如一个灯元素,Server model中定义和存放灯的状态ON/OFF。而开关定义一个对应的Client model来进行控制。

    有一些设备需要执行比较多的操作,比如一个灯光控制器,它可以根据采集外部的光亮变化来控制某些灯的开关。这种情况下,就需要既获取一些元素的状态,同时也需要控制别的元素。这种model在mesh网络中被称为control model(其实就是一个server和client模式的结合)。如下图

    * 配网(Provisioning)

    心跳心跳消息被周期性地发送,由Configuration Server Model来配置。心跳消息可以被发送有限的次数,或者无限次。(心跳消息的参数包含InitTTL、Features,其中InitTTL指定发送心跳消息的初始化的TTL值Features指定节点类型

    心跳消息可以用于两个功能:第一,确定mesh网络中的某个节点是否还活着;第二,确定节点距离多远。当心跳消息被接收时,它们被计数。接收到的心跳消息的数量可以帮助决定mesh网络的可靠性。

    * 生命周期TTL(time to live):

            Mesh的网络层发送的数据包中,有一个字段TTL,占用7bit。数值从0-127。

            0:尚未转发,也不会转发

            1:可能已经被转发,但不会被转发

            2-126:可能已经被转发,可以被转发

            127:还没有被转发,可以被转发

    当TTL的值大于1时,每次中继转发后该值会减一,其中一个中继收到的TTL是1的时候就不会再转发。所以最多被转发126次。而TTL值为0,即用在LPN和friend节点之间,不会被中继。

    * Unprovisioned Device Beacon(UDB):UDB是未配网的device发出的,可以被provisioner发现。包含device UUID、OOB信息(配网过程中使用)。

    * Secure Network Beacon(SNB):SNB是由已配网的Node发出,用来表明当前的security state。当网络中的任意设备接收到SNB时,需要监听IV index updates和Key Refresh procedures。网络中的SNB interval推荐为10秒左右。

    相关文章

      网友评论

        本文标题:mesh术语

        本文链接:https://www.haomeiwen.com/subject/exffedtx.html