Ble Mesh Model Summary
mesh model简介
Bluetooth Mesh 模型(Mesh Model)是 Bluetooth Mesh 网络中的一种抽象概念,用于定义设备的行为、功能和交互方式。在 Bluetooth Mesh 网络中,模型是节点(Node)上的一个软件组件,每个模型通常代表了某种特定的功能,比如开关、调光、传感器数据采集等。模型通过消息(Messages)进行通信,消息是模型之间相互作用的主要方式。
1. 模型的基本概念
- 模型(Model): 一个模型是设备功能的抽象表示,定义了设备在网络中的行为和特性。每个模型由一组消息、状态和行为组成。
- 状态(State): 状态是模型在给定时间点的具体值,比如灯光的亮度、电源的开/关状态等。状态通常是持久的,并通过消息传递在网络中共享。
- 消息(Messages): 消息是模型之间通信的载体。模型使用消息来发送命令、请求状态或报告状态。
- 操作(Operations): 模型的操作包括发送和接收消息,以及对消息的处理和响应。
- 元素(Element): 元素是一个设备中的逻辑部分,每个元素可以包含多个模型。一个设备可以有多个元素,比如一个智能灯泡可能有两个元素,一个控制灯光的开/关,另一个控制亮度。
2. 模型的分类
Bluetooth Mesh 模型主要分为以下几类:
a. 基本模型(Foundation Models)
基础模型提供了网络的管理功能,通常用于配置和控制网络。例如:
- Configuration Server: 管理节点的配置参数,如订阅组、TTL 值等。
- Health Server: 监控节点的健康状态,如错误检测和报告。
b. 通用模型(Generic Models)
通用模型提供了基本的设备功能,适用于多种应用场景。例如:
- Generic OnOff Server/Client: 控制设备的开关状态。
- Generic Level Server/Client: 控制设备的级别状态,如亮度或音量。
- Generic Power OnOff Server/Client: 控制设备的电源状态及恢复行为。
c. 灯光模型(Lighting Models)
灯光模型专为照明设备设计,支持复杂的灯光控制功能。例如:
- Light Lightness Server: 控制灯光的亮度。
- Light CTL Server: 控制灯光的色温和亮度。
d. 传感器模型(Sensor Models)
传感器模型用于管理和传递传感器数据,例如:
- Sensor Server: 收集并报告环境数据,如温度、湿度、光强度等。
- Sensor Client: 请求传感器数据并接收传感器状态。
e. 场景模型(Scene Models)
场景模型用于预定义设备的一组状态,并允许设备快速切换到这些预定义状态。例如:
- Scene Server: 保存和恢复一组设备状态(场景)。
- Scene Client: 调用和管理场景的保存和恢复。
f. 时间和调度模型(Time and Scheduler Models)
这些模型用于管理时间和基于时间的操作,例如:
- Time Server: 提供和同步网络中的时间信息。
- Scheduler Server: 管理和执行基于时间的任务调度。
3. 模型的作用和意义
- 功能模块化: 模型将设备的功能模块化,使得设备可以通过组合不同的模型来实现多种功能。这种模块化设计增强了系统的灵活性和可扩展性。
- 互操作性: 模型定义了标准的通信方式,使得不同厂商的设备可以互操作。例如,一个品牌的开关可以控制另一个品牌的灯。
- 灵活的配置和控制: 通过使用配置模型,管理员可以远程配置和管理网络中的设备,而不需要物理访问设备。
- 状态管理: 模型通过消息传递和状态管理,确保网络中设备的状态同步。例如,当一个设备的状态发生变化时,它可以通过模型将其新状态广播到网络中的其他设备。
- 场景控制: 通过场景模型,可以一键设置多个设备的状态,非常适合智能家居应用场景。
4. 模型与消息的工作流程
模型通过消息进行通信,消息可以是单播、组播或广播。以下是一个典型的工作流程:
- 发送请求: 客户端模型(如
Generic OnOff Client
)发送一个控制消息(如On
命令)到服务器模型(如Generic OnOff Server
)。 - 接收处理: 服务器模型接收到消息后,处理消息并改变设备的状态(如将灯打开)。
- 状态更新: 服务器模型更新其内部状态,并通过状态消息向客户端报告新的状态。
- 反馈确认: 客户端接收到状态反馈消息,并根据需要执行进一步的操作。
5. 实例应用
- 智能照明系统: 使用
Generic OnOff
、Generic Level
和Lighting Models
来控制灯光的开关、亮度和色温。 - 环境监测系统: 使用
Sensor Models
采集并报告环境数据,结合Time and Scheduler Models
实现基于时间的自动化控制。 - 安全监控系统: 使用
Generic Power OnOff
模型管理摄像头和传感器的电源状态,并通过Scene Models
实现一键布防。
6. 模型的扩展与定制
Bluetooth Mesh 允许开发者创建自定义模型以满足特定需求。这意味着如果现有的标准模型不能完全满足应用需求,开发者可以定义新的模型并通过 Mesh 协议实现特定功能。
通过理解和正确使用 Bluetooth Mesh 模型,开发者可以创建功能丰富、灵活可扩展的无线网络解决方案,适用于从智能家居到工业自动化的各种应用场景。
7.和gatt对比
这张图展示了 Bluetooth Mesh 网络中的三个核心概念:Element(元素)、Model(模型) 和 Node(节点),并将其与经典的 BLE 服务和特性进行了对比。
Element(元素)
- 图示: 左侧部分展示了一个 MCU(微控制器)连接了多个元素(Element A、B、C)。
- 解释: 在 Bluetooth Mesh 网络中,一个节点(Node)可以包含多个元素,每个元素是设备的一部分,可以独立地与网络中的其他设备通信。每个元素通常对应一个物理设备的功能组件,比如一个智能灯泡可能有不同的元素控制亮度、颜色和电源状态。
Model(模型)
- 图示: 中间部分展示了每个元素所包含的模型。例如,Primary Element A 包含了
Configuration Server Model
、Health Server Model
和Generic OnOff Server Model
;而 Secondary Element B 和 C 也包含了类似的模型。 - 解释: 模型是定义设备行为的基本构建块。每个模型处理特定的操作和状态,比如开关状态(Generic OnOff Server Model)或者设备健康状态(Health Server Model)。每个元素可以包含多个模型,通过模型来实现具体的功能。
Node(节点)
- 图示: 右侧蓝色的框中表示整个节点,这个节点由多个元素和模型组成。
- 解释: 一个节点是一个完整的 Bluetooth Mesh 设备。它包含一个或多个元素,而每个元素包含一个或多个模型。节点是网络中的基本单元,可以发送和接收消息,实现各种功能。
BLE Profile、Service、Characteristic 的对比
- 图示: 底部的结构图展示了 BLE 的
Profile
、Service
和Characteristic
。Profile 是 BLE 中高层次的功能抽象,Service 是功能的集合,Characteristic 则是具体的数据项。 - 解释: 图中用 BLE 的
Profile
和Service
对应 Bluetooth Mesh 中的Element
和Model
。这显示了两者的相似性,即 BLE 的服务和特性类似于 Mesh 中的元素和模型,但 Mesh 提供了更高级别的模块化和功能扩展。
总结
- Element 是节点中的功能组件,可以独立控制特定功能。
- Model 是实现特定功能的逻辑模块,通过它们实现设备与网络的交互。
- Node 是一个完整的设备,由一个或多个元素和模型构成。
- BLE 的服务和特性结构与 Mesh 的元素和模型有一定的相似性,但 Mesh 更加灵活和模块化,适用于复杂的设备网络。
这张图帮助我们理解了 Bluetooth Mesh 中如何通过模型和元素构建复杂的网络功能,并将其与经典的 BLE 结构进行了对比。
Configuration Server Model
- 模型是一个根模型,只存在于首要元素中并且每个节点中有且仅有一个
- 该模型主要用于表示设备加入mesh网络之后的mesh网络配置
- 表示mesh网络配置存放了节点的配置内容,如是否支持中继,是否支持朋友特性等等以及配置相对应的内容
- 该模型是SIG的一个标准模型,其SIG Model ID为0x0000
模型状态
Configuration Server States | Bound States | |||
---|---|---|---|---|
State | Instance | Model | State | Instance |
Secure Network Beacon | Primary | - | - | - |
Composition Data | Primary | - | - | - |
Default TTL | Primary | - | - | - |
GATT Proxy | Primary | Configuration Server | Node Identity | Primary |
Friend | Primary | - | - | - |
Relay | Primary | - | - | - |
Model Publication | Primary | - | - | - |
Subscription List | Primary | - | - | - |
NetKey List | Primary | - | - | - |
AppKey List | Primary | - | - | - |
Model to AppKey List | Primary | - | - | - |
Node Identity | Primary | - | - | - |
Key Refresh Phase | Primary | - | - | - |
Heartbeat Publish | Primary | - | - | - |
Heartbeat Subscription | Primary | - | - | - |
Network Transmit | Primary | - | - | - |
Relay Retransmit | Primary | - | - |
-
mesh provisioning server
当设备还没有入网前,mesh gatt server就叫mesh provisioning server;其主要是让provisioning client配置provisioning server,让其加入mesh网络
-
mesh proxy server
当设备已经入网了,则为mesh proxy server;其主要作用是接收或者发送proxy pdus从或者到client
而这个GATT Proxy与Node Identity的关系就是,如果proxy feature被支持且mesh proxy server被公开。在入网完成之后,就会将在广播包中携带有Node Identity这个域值。
既然Configuration Server Model存放的是节点的配置内容,那用户应该如何去获取这个内容呢?具体如下所示:
其他模型状态行为参考:MshPRT_v1.1 -4.4.1 Configuration Server model
模型操作行为
Element | SIG Model ID | States | Messages | Rx | Tx |
---|---|---|---|---|---|
Primary | 0x0000 | Secure Network Beacon | Config Beacon Get | M | |
Config Beacon Set | M | ||||
Config Beacon Status | - | M | |||
Composition Data | Config Composition Data Get | M | |||
Config Composition Data Status | M | ||||
Default TTL | Config Default TTL Get | M | |||
Config Default TTL Set | M | ||||
Config Default TTL Status | - | M | |||
GATT Proxy | Config GATT Proxy Get | M | |||
Config GATT Proxy Set | M | ||||
Config GATT Proxy Status | - | M | |||
Friend | Config Friend Get | M | |||
Config Friend Set | M | ||||
Config Friend Status | - | M | |||
Relay and Relay Retransmit | Config Relay Get | M | |||
Config Relay Set | M | ||||
Config Relay Status | - | M | |||
Model Publication | Config Model Publication Get | M | |||
Config Model Publication Set | M | ||||
Config Model Publication Virtual Address Set | M | ||||
Config Model Publication Status | - | M | |||
Subscription List | Config Model Subscription Add | M | |||
Config Model Subscription Virtual Address Add | M | ||||
Config Model Subscription Delete | M | ||||
Config Model Subscription Virtual Address Delete | M | ||||
Config Model Subscription Virtual Address Overwrite | M | ||||
Config Model Subscription Overwrite | M | ||||
Config Model Subscription Delete All | M | ||||
Config Model Subscription Status | - | M | |||
Config SIG Model Subscription Get | M | ||||
Config SIG Model Subscription List | - | M | |||
Config Vendor Model Subscription Get | M | ||||
Config Vendor Model Subscription List | - | M | |||
NetKey List | Config NetKey Add | M | |||
Config NetKey Update | M | ||||
Config NetKey Delete | M | ||||
Config NetKey Status | - | M | |||
Config NetKey Get | M | ||||
Config NetKey List | - | M | |||
AppKey List | Config AppKey Add | M | |||
Config AppKey Update | M | ||||
Config AppKey Delete | M | ||||
Config AppKey Status | - | M | |||
Config AppKey Get | M | ||||
Config AppKey List | - | M | |||
Model to AppKey List | Config Model App Bind | M | |||
Config Model App Unbind | M | ||||
Config Model App Status | - | M | |||
Config SIG Model App Get | M | ||||
Config SIG Model App List | - | M | |||
Config Vendor Model App Get | M | ||||
Config Vendor Model App List | - | M | |||
Node Identity | Config Node Identity Get | M | |||
Config Node Identity Set | M | ||||
Config Node Identity Status | - | M | |||
N/A | Config Node Reset | M | |||
Config Node Reset Status | - | M | |||
Key Refresh Phase | Config Key Refresh Phase Get | M | |||
Config Key Refresh Phase Set | M | ||||
Config Key Refresh Phase Status | - | M | |||
Heartbeat Publication | Config Heartbeat Publication Get | M | |||
Config Heartbeat Publication Set | M | ||||
Config Heartbeat Publication Status | - | M | |||
Heartbeat Subscription | Config Heartbeat Subscription Get | M | |||
Config Heartbeat Subscription Set | M | ||||
Config Heartbeat Subscription Status | - | M | |||
Network Transmit | Config Network Transmit Get | M | |||
Config Network Transmit Set | M | ||||
Config Network Transmit Status | - | M |
从上表可以看到,一个State对应多个Message;那么,State与Message的关系就类似于 手机现在都支持BLE,那么就有打开BLE、关闭BLE以及查看当前BLE的状态的动作;其中,手机支持BLE就等同于State,而那些动作就是Message。所以,如果你想要获取或者配置相关的内容,就可以通过Message去实现。对于,RX和TX是相对于节点本身为参考体。这里举个例子,就Network Transmit状态而言,Config Network Transmit Get/Set表示该节点可以接收这些Messages;而节点在接收到这些消息之后,就会返回Config Network Transmit Status即发送回给源地址的设备;那么,紧接着我们继续解析每一个State以及其对应的Message的作用。
- 操作码具体数值参考:
Assigned_Numbers-4.2 Mesh Model Message Opcodes
Health Server Model
该模型跟Configuration Server Model是一样的,也是SIG强制要求必须要有的一个模型,也就是说每个节点都会有至少一个Health Server Model;其主要的特性如下所示:
-
同样,该模型也是一个根模型
-
跟其他普通的SIG模型一样,该模型也支持发布与订阅的功能
-
跟Configuration Server Model不同的是,其不但可以存在于首要元素中,也可以存在于次要元素中;同时,还可以在一个节点的不同元素中同时存在
-
与该模型的通讯均采用AppKey加解密
-
其SIG Model ID为0x0002
模型状态
其中Attention Timer用于provisioning入网的时候使用, 就是给予new device一个时间值, 然后做出任何可以引起周边事物注意的动作时长为attention time秒; 其中Spec对该状态作出了如下规定:
- 如果一个设备不支持Attention Timerÿ