查看: 1063|回复: 0

[技术交流] 【蓝牙Mesh】精品系列之二十二——Mesh简介(四)

[复制链接]

93

主题

99

帖子

381

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
381
发表于 2019-11-1 17:08:51 | 显示全部楼层 |阅读模式
第一部分“1.Bluetooth演进”,我们分享了蓝牙的历史演进,和经典蓝牙、单模蓝牙、双模蓝牙等概率;
第二部分“2、BR/EDR VS BLE/mesh”,我们简单分享了BR/EDR、BLE、BLE&Mesh的特点和基本工作模式;
第三部分“3、mesh 架构”,我们一起了解了BLE Mesh的架构;
各位读者看到这里已经超越了80%的人们,了解了蓝牙及mesh的一些框架;后面几个部分“mesh 基础之xxxx”,我们再了解些专业名词概念。
4、mesh 基础之一
4.1 蓝牙Mesh术语表
https://www.bluetooth.com/zh-cn/bluetooth-technology/topology-options/le-mesh/mesh-glossary/
4.2 蓝牙Mesh规范Spec
它定义了蓝牙Mesh相关的技术细节。
https://www.bluetooth.com/zh-cn/specifications/mesh-specifications/
4.3 设备(Device)&节点(Node)
设备(Device)指的是“未经配网”的蓝牙设备,它能够被配网成为节点和网络的成员。比如刚买回来的蓝牙mesh灯。
节点(Node)指的是已经被配网的蓝牙设备,所以节点是mesh网络的成员。 节点可以属于多个不同的网络。
将未配网的设备转换为节点的过程称为“配网”。比如,买了某猫的TM精灵及其智能灯,语音控制TM精灵“找队友”操作,TM精灵会自动发现设备(Device),然后将其“配网”为mesh网络的节点(Node)。这时候就可以通过TM精灵或者手机APP直接控制智能灯的开关/亮度/颜色等。
“配网”是一个安全的过程,原本未经“配网”的设备经过配网后会拥有一系列加密密钥,并被启动配网的设备(比如前面提高的TM精灵或智能手机)识别。其中一个密钥称为网络密钥或简称为NetKey。后面我们再介绍相关安全性。
mesh网络中的所有节点都具有至少一个NetKey,设备必须拥有该密钥才能成为加入相应的网络,并成为节点。在节点投入使用之前,还有其他一些要求,但通过配网过程安全地获取NetKey是基本的第一步。后面我们再详细介绍配网过程。
4.4 元素(Element)
一些节点具有多个组成部分,每个都能独立进行控制。在蓝牙mesh术语中,这些部分被称为“元素”(Element)。
元素是设备中的可寻址实体。这意味着它是设备的某个部分,它具有至少一个独立的状态(State)值,表示元素(Element)的某些条件。 所有节点必须至少有一个元素(Element)。 一些节点将具有多个元素。 例如,包含多个开关的复合灯开关可以是具有多个元素(Element)的节点。
4.5 消息(Message)
   当某一节点需要查询其他节点状态,或需要以某种方式控制其他节点时,会发送合适类型的消息(Message)。如节点需要向其他节点报告自身状态,则会发送消息(Message)。
Mesh网络中的所有通信均“以消息为中心”,且定义了多种消息类型,每种均有自己独特的操作码。
消息分为两类:有应答消息、无须应答的消息。
有应答消息需要收到节点的响应。该响应有两个目的:确认与其相关的消息已被接收,并将与消息接收方有关的数据返回给消息发送方。
如果有应答的消息的发送方没有收到预期响应,则有应答的消息的发送方可以重新发送消息,因此有应答的消息必须是幂等的。这意味着给定的有应答的消息多次到达某个节点的结果将与其仅被接收一次相同。
无须应答消息则无需响应。
Mesh网络中节点之间的通信是通过发送消息来完成的。 消息与模型相关联并在状态下操作。 某些消息需要响应并称为已确认消息。 其他人则不称之为未经承认的消息。 常见消息类型包括请求特定元素中给定状态的当前值的消息类型,请求更改特定元素中给定状态值的消息类型以及报告状态当前值的消息类型(可能是响应) 到另一个节点通过确认消息请求的状态值。
蓝牙mesh网络通过消息进行通信。消息可以分为控制消息和接入消息。
控制消息(Control Message)与蓝牙mesh网络操作有关的消息,例如心跳(heartbeat)和friend的请求消息。
接入消息(Access Message) 该类消息允许客户端模型检索或设置服务器模型中的状态值,或被服务器用于报告状态值。
4.6 地址(Address)
消息必须从一个地址发送到另一地址。地址有四种类型,其中的三类用于消息的传送:单播(unicast)、虚拟(virtual)和群组(group)地址。第四种被称为未分配(unassigned)地址。地址长度为16位,并按下述定义进行编码:

未分配地址:未经配置的元素或未被指定地址的元素拥有的。鉴于这些元素没有唯一的地址,它们不会用于消息的传送。
单播地址仅可识别单一元素。在配置过程中,单播地址被分配给设备。
群组地址是表示一个或多个元素的多播地址。群组地址由蓝牙技术联盟定义,称为蓝牙技术联盟固定群组地址(SIG Fixed Group Addresses),也可以动态分配。 目前已经定义了4组蓝牙技术联盟固定群组地址,分别为All-proxy、All-friends、All-relay和All-nodes。后面我们再介绍这几个。
虚拟地址是可以分配给跨越一个或多个节点的一个或多个元素的地址。它采用128位UUID值的形式,任何元素都可以与之相关联,基本上相当于一个标签。虚拟地址可在制造过程中进行预先配置,用于类似轻松定位出自该制造商的所有会议室投影机等场景。
后记:若有语误或者不恰当的地方,欢迎各位读者指出哈(^_^)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表