LV04-天猫蓝牙Mesh项目-02-初级开发-04-管-蓝牙Mesh基础知识

本文主要是天猫蓝牙Mesh项目——初级开发 管-蓝牙Mesh基础知识 的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

这一LV的笔记起始跟前面有所重叠,互相补充吧算是。天猫精灵语音控制生态架构如下,其实前面已经了解过了:

天猫精灵网络框架

一、蓝牙Mesh网络拓扑

1. 无线网络分类

无线个域网(微微网)、无线局域网、无线城域网、无线广域网等。

2. 常见网络拓扑

2.1 总线型

总线型结构是将网络中的所有设备通过相应的硬件接口直接连接到公共总线上,结点之间按广播方式通信,一个结点发出的信息,总线上的其它结点均可“收听”到。 总线型结构就像一张树叶,有一条主干线,主干线上面由很多分支。总线型拓扑结构图如下:

网络拓扑 - 总线型

总线型拓扑结构的网络特点如下

  • 结构简单,可扩充性好;
  • 当需要增加节点时,只需要在总线上增加一个分支接口便可与分支节点相连,当总线负载不允许时还可以扩充总线;
  • 使用的电缆少,且安装容易;
  • 使用的设备相对简单,可靠性高;
  • 维护难,分支节点故障查找难。

总线型拓扑结构的结构特点如下

  • 组网费用低:从示意图可以这样的结构根本不需要另外的互联设备,是直接通过一条总线进行连接,所以组网费用较低;
  • 这种网络因为各节点是共用总线带宽的,所以在传输速度上会随着接入网络的用户的增多而下降;
  • 网络用户扩展较灵活:需要扩展用户时只需要添加一个接线器即可,但所能连接的用户数量有限;
  • 维护较容易:单个节点失效不影响整个网络的正常通信。但是如果总线一断,则整个网络或者相应主干网段就断了。
  • 这种网络拓扑结构的缺点是一次仅能一个端用户发送数据,其它端用户必须等待到获得发送权。

2.2 星型

星型结构是一种以中央节点为中心,把若干外围节点连接起来的辐射式互联结构。这种结构适用于局域网,特别是近年来连接的局域网大都采用这种连接方式。这种连接方式以双绞线或同轴电缆作连接线路。星型拓扑结构图如下:

网络拓扑 - 星型

星型拓扑结构的结构特点如下

  • 控制简单。任何一站点只和中央节点相连接,因而介质访问控制方法简单,致使访问协议也十分简单。易于网络监控和管理。
  • 故障诊断和隔离容易。中央节点对连接线路可以逐一隔离进行故障检测和定位,单个连接点的故障只影响一个设备,不会影响全网。
  • 方便服务。中央节点可以方便地对各个站点提供服务和网络重新配置。

总的来说星型拓扑结构相对简单,便于管理,建网容易,是目前局域网普采用的一种拓扑结构。采用星型拓扑结构的局域网,一般使用双绞线或光纤作为传输介质,符合综合布线标准,能够满足多种宽带需求。

尽管物理星型拓扑的实施费用高于物理总线拓扑,然而星型拓扑的优势却使其物超所值。每台设备通过各自的线缆连接到中心设备,因此某根电缆出现问题时只会影响到那一台设备,而网络的其他组件依然可正常运行。这个优点极其重要,这也正是所有新设计的以太网都采用的物理星型拓扑的原因所在。

2.3 环形

环形结构各结点通过通信线路组成闭合回路,环中数据只能单向传输,信息在每台设备上的延时时间是固定的,特别适合实时控制的局域网系统。环形结构就如一串珍珠项链,环形结构上的每台计算机就是项链上的一个个珠子。环形拓扑结构图如下:

网络拓扑 - 环形

实际上大多数情况下这种拓扑结构的网络不会是所有计算机真的要连接成物理上的环型,一般情况下,环的两端是通过一个阻抗匹配器来实现环的封闭的,因为在实际组网过程中因地理位置的限制不方便真的做到环的两端物理连接。

环型拓扑结构的网络特点如下

  • 信息流在网中是沿着固定方向流动的,两个节点仅有一条道路,故简化了路径选择的控制;
  • 环路上各节点都是自举控制,故控制软件简单;
  • 由于信息源在环路中是串行地穿过各个节点,当环中节点过多时,势必影响信息传输速率,使网络的响应时间延长;
  • 环路是封闭的,不便于扩充;
  • 可靠性低,一个节点故障,将会造成全网瘫痪;
  • 维护难,对分支节点故障定位较难。

环型拓扑结构的结构特点如下

  • 一般仅适用于IEEE 802.5的令牌网(Token ring network),在这种网络中,”令牌”是在环型连接中依次传递。所用的传输介质一般是同轴电缆。
  • 网络实现也非常简单,投资最小。可以从其网络结构示意图中看出,组成这个网络除了各工作站就是传输介质–同轴电缆,以及一些连接器材,没有价格昂贵的节点集中设备,如集线器和交换机。但也正因为这样,所以这种网络所能实现的功能最为简单,仅能当作一般的文件服务模式;
  • 传输速度较快:在令牌网中允许有16Mbps的传输速度,它比普通的10Mbps以太网要快许多。当然随着以太网的广泛应用和以太网技术的发展,以太网的速度也得到了极大提高,目前普遍都能提供100Mbps的网速,远比16Mbps要高。
  • 维护困难:从其网络结构可以看到,整个网络各节点间是直接串联,这样任何一个节点出了故障都会造成整个网络的中断、瘫痪,维护起来非常不便。另一方面因为同轴电缆所采用的是插针式的接触方式,所以非常容易造成接触不良,网络中断,而且这样查找起来非常困难,这一点相信维护过这种网络的人都会深有体会。
  • 扩展性能差:也是因为它的环型结构,决定了它的扩展性能远不如星型结构的好,如果要新添加或移动节点,就必须中断整个网络,在环的两端作好连接器才能连接。

2.4 树型

树型拓扑结构是一种层次结构,结点按层次连结,信息交换主要在上下结点之间进行,相邻结点或同层结点之间一般不进行数据交换。树型拓扑结构是就是数据结构中的树。树型拓扑结构图如下:

网络拓扑 - 树型

树形拓扑结构的网络特点如下:

  • 网络结构简单,便于管理;
  • 控制简单,建网容易;
  • 网络延迟时间较短,误码率较低;
  • 网络共享能力较差;
  • 通信线路利用率不高;
  • 中央结点负荷太重。

树型拓扑结构的结构特点如下

  • 易于扩充。树形结构可以延伸出很多分支和子分支,这些新节点和新分支都能容易地加入网内。
  • 故障隔离较容易。如果某一分支的节点或线路发生故障,很容易将故障分支与整个系统隔离开来。
  • 各个节点对根节点的依赖性太大。如果根发生故障,则全网不能正常工作。

2.5 网状

网络拓扑结构又称作无规则结构,结点之间的联结是任意的,没有规律。网状拓扑结构图如下:

网络拓扑 - 网状

网状网络拓扑结构的结构特点如下:

  • 网络可靠性高,一般通信子网中任意两个节点交换机之间,存在着两条或两条以上的通信路径,这样,当一条路径发生故障时,还可以通过另一条路径把信息送至节点交换机。
  • 网络可组建成各种形状,采用多种通信信道,多种传输速率。
  • 网内节点共享资源容易。
  • 可改善线路的信息流量分配。
  • 可选择最佳路径,传输延迟小。

网状形网是广域网中最常采用的一种网络形式,是典型的点到点结构。在网状拓扑结构中,网络的每台设备之间均有点到点的链路连接,这种连接不经济,只有每个站点都要频繁发送信息时才使用这种方法。它的安装也复杂,但系统可靠性高,容错能力强。有时也称为分布式结构。

2.6 混合网络型拓扑结构

混合型网络拓扑结构就是指同时使用上面的5种网络拓扑结构种两种或两种以上的网络拓扑结构。

这种网络拓扑结构是由星型结构和总线型结构的网络结合在一起的网络结构,这样的拓扑结构更能满足较大网络的拓展,解决星型网络在传输距离上的局限,而同时又解决了总线型网络在连接用户数量的限制。这种网络拓扑结构同时兼顾了星型网与总线型网络的优点,在缺点方面得到了一定的弥补。

混合型网络拓扑结构的结构特点如下:

  • 应用广泛

这主要是因它解决了星型和总线型拓扑结构的不足,满足了大公司组网的实际需求。目前在一些智能化的信息大厦中的应用非常普遍。在一幢大厦中,各楼层间采用光纤作为总线传输介质,一方面可以保证网络传输距离,另一方面,光纤的传输性能要远好于同轴电缆, 所以,在传输性能上也给予了充分保证。当然投资成本会有较大增加,在一些较小建筑物中 也可以采用同轴电缆作为总线传输介质。各楼层内部仍普遍采用使用双绞线星型以太网。

  • 扩展灵活

这主要是继承了星型拓扑结构的优点。但由于仍采用广播式的消息传送方式,所以在总 线长度和节点数量上也会受到限制,不过在局域网中的影响并不是很大。

  • 性能差

因为其骨干网段(总线段)采用总线网络连接方式,所以各楼层和各建筑物之间的网络 互联性能较差,仍局限于最高16Mbps的速率。另外,这种结构网络具有总线型网络结构的 弱点,网络速率会随着用户的增多而下降。当然在采用光纤作为传输介质的混合型网络中, 这些影响还是比较小的。

  • 较难维护

这主要受到总线型网络拓扑结构的制约,如果总线断,则整个网络也就瘫痪了,但是如果是分支网段出了故障,则不影响整个网络的正常运作。再一个就是整个网络非常复杂,维 护起来不容易。

3. 蓝牙网络拓扑

蓝牙通信模式

3.1 蓝牙个域网

BLE蓝牙网络拓扑

3.2 蓝牙Mesh网状拓扑

蓝牙Mesh网络拓扑

3.3 防止广播洪泛

蓝牙Mesh通过消息队列缓存信息寿命(TTL)字段来避免网络洪泛。TTL的值,每转发一次就会减1,减1的过程是在网络层完成的。

二、蓝牙Mesh协议栈结构

1. 什么是协议栈?

先来看一下C语言学习过程中的栈的概念:

数据结构 - 栈

协议栈与上面的概念吧,我自己感觉有点没啥关系的感觉,还是直接百度吧:协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程,由上层协议到底层协议,再由底层协议到上层协议。

协议栈就是协议的实现,可以理解为代码、函数库、供上层应用调用。商业化的协议栈就是给我们写好了底层的代码,符合协议标准,提供给我们一个功能模块调用。我们需要关心的就是我们的应用逻辑,数据从哪里到哪里,怎么存储,处理还有系统里的设备之间的通信顺序什么的。所以当我们做具体应用时,起始不需要关心协议栈是怎么写的,里面的每条代码是什么意思。

蓝牙 Mesh 协议栈调用顺序

2. 蓝牙Mesh协议栈各层行为

蓝牙Mesh

三、蓝牙Mesh基本概念

1. Mesh中的角色

蓝牙Mesh角色

2. 地址的类型

地址是两个字节表示:

image-20231230145458225

3. 元素、模型与单播地址

元素、模型和单播地址

4. 消息、状态、模型

每个元素模型里都会有很多状态,都是通过客户端与服务器访问进行设置或读取。模型分三类:服务端模型、客户端模型、控制模型。

消息、状态与设备 三类模型

5. 发布和订阅

节点可以向单播地址、组播地址、虚拟地址发布消息,其它节点也可以订阅某些组播地址或虚拟地址。

6. Mesh网络安全

网络密钥、应用密钥、设备密钥

应用密钥绑定实例

四、蓝牙Mesh模型层介绍

1. 配置模型

基础模型有以下几个,它们是由蓝牙联盟定义的:

蓝牙 Mesh 基础模型

配置模型的一些状态如下:

蓝牙 Mesh 配置模型状态

健康模型的一些状态如下:

蓝牙 Mesh 健康模型状态

2. 通用模型

2.1 SIG model ID

模型ID

2.2 SIG Model 操作码

模型操作码opcode

3. 厂商模型

以阿里巴巴厂商为例,厂商ID为0x01A8

蓝牙Mesh厂商模型 - 厂商模型ID

3.1 消息结构(读取)

蓝牙Mesh厂商模型 - 消息结构(读取)

3.2 消息结构(设置)

蓝牙Mesh厂商模型 - 消息结构(设置)

3.3 属性类型规范

官网文档说明:AliGenie - IoT开放平台

风扇产品软件规范

实测:

1
2
3
风扇风速:大一点或小一点 0xF00B 0x010A,大一点为0x01 小一点为0xFF。
风扇方向:0x0521,正转为0x00 反转为0x01。
风扇挡位:0x010A,一档0x01 二档0x02 ... 以此类推。

3.4 天猫精灵厂商操作码

操作码可以在这里看:AliGenie - IoT开放平台——三. 扩展消息

天猫精灵厂商操作码