#author("2023-04-17T16:06:34+08:00","default:Admin","Admin")
#author("2023-04-17T16:06:44+08:00","default:Admin","Admin")
[[BlueTooth]]

&color(red){※前提条件:本情報はBlueTooth 4.0を基づいて説明してる};

#contents

* 概要 [#j83f509d]

蓝牙mesh并非无线通信技术,而是一种网络技术。

蓝牙信号传输方式为点对点传输,蓝牙mesh和zigbee相似,都为多对多传输,即传输结构为网络传输

数据包组成:地址+包头+有效信息

** 蓝牙mesh网络模型 [#jf230ee6]

网络协议层次结构均大致相同,分为4层或5层
- 应用层: 数据使用
- 传输层: 封箱,加密 / 拆箱 ,解密
- 网络层 :贴标签
- 物理层 :以二进制形式将数据在个MAC地址之间进行数据传输


** 蓝牙mesh节点 [#t7fb5233]

- 如果一台设备成为了蓝牙mesh网络中的一部分,我们将这台设备称之为:节点(node); 
- 若该设备未成为蓝牙mesh网络的一部分,我们将该设备称之为:未配网设备(unprovisioned device); 
- 而将一台为配网设备变成节点的过程,我们称之为:配网。
- 一个称为Provisioner的设备(通常是手机)被用来管理未配置设备和节点之间的转换。

未配置设备不能发送任何mesh消息,但是它能通过广播告诉Provisioner它的存在。Provisioner在认证未配置设备后,将邀请它加入到一个mesh网络中,这样它就从未配置设备变成了节点。

节点可以发送和接收mesh消息,并且它是通过Configuration Client管理的。~
Configuration Client通常和Provisioner是同一个设备,用来配置这个节点在mesh网络中如何与其他节点通讯。~
Configuration Client也能将节点从mesh网络中移除,让这个节点重新变成未配置设备。

节点的类型
- 代理节点
- 中继节点 / 转发节点
- 边缘节点:
- 朋友节点:为低功耗节点睡眠提供后台服务,一个朋友节点可以对应多个低功耗节点,但是一个低功耗节点只能对应一个朋友节点
- 低功耗节点:例如温湿度传感器,不需要时刻处于打开状态,防止能量过度损耗,此时通常也伴随着消息接收不完全,所以需要从朋友节点中接收需要的信息

每个节点可以不止代表一种功能节点,大部分的节点都具有中继的功能。

** 蓝牙mesh网络中信号传播的方式分为两种 [#n68654d5]

- GATT:点对点传播,一般是代理节点对中继/边缘节点的传播
- ADV:广播发送消息,一般是中继节点对其周围节点的传播,以及其它其它节点的信息传播方式。

* 蓝牙mesh网络地址 [#fd764442]

- 未分配地址(Unassigned Address):0x0000
- 单播地址(Unicast Address):0x0001-0x7FFF 用于唯一标识网络中节点的元素的地址
-- 在“启动配置”(provisioning)期间,启动配置设备(provisioner)会在网络节点的生命周期内为节点中的每个元素分配一个单播地址。
-- 单播地址可能出现在消息的源地址字段或目的地址字段中。发送到单播地址的消息只能由一个元素进行处理。
- 组播地址(Group Address):0xC000-0xFFFF 用于标识网络中的组地址,组地址可以被一个或多个节点所共有。
-- 包含两种类型 动态分配的地址(Dynamically Assigned) -> 0xC000-0xFEFF 
-- 固定地址(Fixed Address) 由蓝牙技术联盟分配,分为五段: 
--- 保留供将来使用 (RFU) –> 0xFF00-0xFFFB 
--- All-proxies -> 0xFFFC 发送到启用代理(proxy)功能的所有节点
--- All-friends -> 0xFFFD 发送到启用friend功能的所有节点
--- All-relays -> 0xFFFE 发送到启用中继(relay)功能的所有节点
--- All-nodes -> 0xFFFF 发送到所有节点 
--- 发送到固定节点的所有消息都由节点的主元素(primary element)进行处理
- 虚拟地址(Virtual Address):为扩展蓝牙地址而出现
-- 虚拟地址是与特定的UUID标签相关联的一组元素;
-- 这些地址可能会被发布或订阅。
-- UUID标签是与多个来自一个或多个节点的元素相关联的128位值。
-- 对于虚拟地址,15和14位分别设置为1和0;13 – 0位被设置为散列值(hash value)(提供16,384个散列值)。
-- 散列(hash)来自于Label UUID。
-- 使用订阅元素(subscribing element)来检查完整的128位UUID是十分低效的,特别当UUID跨越多个消息段时更为低效。散列值提供了一种更为有效的方式来确定哪些消息被发送至哪些元素。 

当一个空间内同时存在多个蓝牙设备,为了蓝牙设备间信息传输不会发生干扰,蓝牙中无线电波的工作方式为:跳频传播

不同蓝牙设备的无线电波跳频都不一致,因此大大减少了信号干扰的可能性。

另外,蓝牙设备厂商在出厂蓝牙设备前给每一台蓝牙设备都分配了蓝牙地址,蓝牙设备间在通信是会判断交流设备的蓝牙地址是否是目标地址,因此也能够防止其它蓝牙设备接收到信息。

* 蓝牙mesh网络基本概念 [#f1d60a4b]

** 节点(node) [#i169a8e0]
** 节点(node) [#i169a8e0]

蓝牙mesh网络中的设备被称为节点 (node) 。每个节点都能发送和接收消息。信息能够在节点之间被中继,从而让消息传输至比无线电波正常传输距离更远的位置

** 特性(Features) [#sab9994b]

节点在mesh网络中承担更为复杂的任务,扮演不同的角色,表现出以下四个节点特征(Features):

+ 低功耗 (Low-Power) 特性:功率受限的节点可能会利用低功耗特性来减少无线电接通时间并节省功耗。同时低功耗节点(LPN)可以与friend节点协同工作。 
+ Friend 特性:功率不受限的节点很适合作为friend节点。Friend 节点能够存储发往低功耗节点(LPN)的消息和安全更新;当低功耗节点需要时再将存储的信息传输至低功耗节点。 
+ 中继 (Relay) 特性:中继节点能够接收和转发消息,通过消息在节点之间的中继,实现更大规模的网络。节点是否能够具备这一特性取决于其电源和计算能力。 
+ 代理 (Proxy) 特性:代理节点能够实现 GATT 和蓝牙mesh节点之间的mesh消息发送与接收。承担这一角色的节点需要固定的电源和计算资源。

** 元素(Elements) [#zeeecf6c]

每个节点至少拥有一个元素,称为主元素(Primary Element),同时还可能包含其他多个元素。一些节点的复杂性高于其他节点,由多个称为元素(Element)的独立部分组成。元素由定义节点功能和元素条件的实体组成。例如,一个灯泡内有一个元素, 并具有两种功能:

#codeprettify{{
节点 = 灯泡 一个元素 = 主元素 节点功能
开/关 亮度
元素条件/状态
“开”或“关” 0-10(亮度等级)
}}

** 模型 (Model) 和状态 (State) [#mbb0bbf3]

节点的基本功能都由模型 (Model) 来定义和实施。模型位于元素内,元素必须具有至少一个模型。模型能够定义并实施节点的功能和行为,而状态 (State) 能够定义元素的条件。

以灯泡为例,该模型的功能是开关和调节亮度。相关的状态分别为“开”/ “关”和0-10:

模型 (节点功能) 开/关 状态 -> “开”或“关” 亮度 (0-10) 状态 -> 0-10


#codeprettify{{
 XXX
}}

#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS