BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)

目录

一、什么是BLE Mesh Foundation Model Layer基础模型层?

二、模型

2.1 配置模型

2.2 健康模型

三、状态

3.1 Composition Data

四、资料获取


一、什么是BLE Mesh Foundation Model Layer基础模型层?

BLE Mesh Foundation model Layer是蓝牙Mesh协议栈中的一个层,它定义了配置和管理蓝牙Mesh网络所需的状态、消息和模型。它确保从下层接收到的数据是正确的并传输到更高层的应用。

基础模型层(Foundation Model Layer)负责定义了状态, 消息, 模型等, 实现mesh网络的配置。

二、模型

Foundation model Layer包括两种模型:配置模型和健康模型

  • 配置模型(Configuration Model)用于设置和获取节点的各种参数,如发布地址、订阅地址、AppKey、NetKey、Relay、Proxy、Friend、Low Power等。配置模型分为配置服务端模型(Configuration Server Model)和配置客户端模型(Configuration Client Model)。配置服务端模型是每个节点都必须实现的模型,配置客户端模型是用于向配置服务端模型发送配置消息的模型
  • 健康模型(Health Model)用于检测和报告节点的故障状态,如网络拥塞、内存不足、电池低电量等。健康模型也分为健康服务端模型(Health Server Model)和健康客户端模型(Health Client Model)。健康服务端模型是每个节点都必须实现的模型,健康客户端模型是用于向健康服务端模型发送健康消息的模型

2.1 配置模型

基础模型层(Foundation Model Layer)的配置主要是通过配置服务端模型和配置客户端模型来实现的。配置服务端模型是每个节点都必须实现的模型,它包含了一系列与配置相关的状态和消息,用于设置和获取节点的各种参数,如发布地址、订阅地址、AppKey、NetKey、Relay、Proxy、Friend、Low Power等。

配置客户端模型是用于向配置服务端模型发送配置消息的模型,它可以运行在任何支持MESH协议的设备上,如智能手机APP

配置客户端模型和配置服务端模型之间的通信是通过配置消息来进行的,配置消息是一种特殊的上层传输层消息,它使用DevKey来加密和解密,而不是AppKey

配置客户端模型和配置服务端模型之间的通信流程一般是这样的:

  1. 配置客户端模型发送一个配置消息给配置服务端模型,指定目标节点的单播地址和DevKey。
  2. 配置服务端模型收到配置消息后,根据Opcode和Parameters执行相应的操作,如添加AppKey、删除订阅地址等,并更新自己的状态。
  3. 配置服务端模型发送一个配置状态消息给配置客户端模型,指示操作的结果,如成功或失败,以及相关的状态值。
  4. 配置客户端模型收到配置状态消息后,根据状态值判断操作是否成功,并显示给用户。

2.2 健康模型

健康模型(Health Model)是基础模型层(Foundation Model Layer)的一种模型,它用于检测和报告节点的故障状态,如网络拥塞、内存不足、电池低电量等。健康模型也分为健康服务端模型(Health Server Model)和健康客户端模型(Health Client Model)

健康服务端模型是每个节点都必须实现的模型,它包含了以下的状态和消息

  • 健康故障状态(Health Fault State):用于记录节点的当前故障代码,可以有多个故障代码,每个故障代码占用一个字节。
  • 健康测试状态(Health Test State):用于记录节点的当前测试模式,可以有多种测试模式,每种测试模式占用一个字节。
  • 健康期望注意状态(Health Attention State):用于记录节点的当前注意模式,可以有多种注意模式,每种注意模式占用一个字节。
  • 健康期望注意消息(Health Attention Message):用于设置或获取节点的健康期望注意状态。
  • 健康故障消息(Health Fault Message):用于设置或获取节点的健康故障状态和健康测试状态。
  • 健康期望注意状态消息(Health Attention Status Message):用于响应健康期望注意消息,返回节点的健康期望注意状态。
  • 健康故障状态消息(Health Fault Status Message):用于响应健康故障消息,返回节点的健康故障状态和健康测试状态。

健康客户端模型是用于向健康服务端模型发送健康消息的模型,它可以运行在任何支持MESH协议的设备上,如智能手机APP。健康客户端模型可以发送以下的消息

  • 健康期望注意获取消息(Health Attention Get Message):用于获取节点的健康期望注意状态。
  • 健康期望注意设置消息(Health Attention Set Message):用于设置节点的健康期望注意状态。
  • 健康期望注意设置无应答消息(Health Attention Set Unacknowledged Message):用于设置节点的健康期望注意状态,不需要应答。
  • 健康故障清除消息(Health Fault Clear Message):用于清除节点的健康故障状态。
  • 健康故障清除无应答消息(Health Fault Clear Unacknowledged Message):用于清除节点的健康故障状态,不需要应答。
  • 健康故障获取消息(Health Fault Get Message):用于获取节点的健康故障状态和健康测试状态。
  • 健康故障测试消息(Health Fault Test Message):用于设置节点的健康测试状态。
  • 健康故障测试无应答消息(Health Fault Test Unacknowledged Message):用于设置节点的健康测试状态,不需要应答。
  • 健康期望注意确认消息(Health Attention Confirm Message):用于确认收到健康期望注意状态消息。
  • 健康故障确认消息(Health Fault Confirm Message):用于确认收到健康故障状态消息。

三、状态

基础模型层定义了以下的状态

  • 成分数据状态(Composition Data State):描述了节点包含的元素信息,以及各元素内支持的模型信息。
  • 模型发布状态(Model Publication State):维护了模型发布消息中的各个参数,如发布地址、发布周期、发布消息用到的AppKey索引、朋友关系的证书标记、发布TTL、重传计数、重传间隔等步骤。
  • 订阅列表状态(Subscription List State):维护了一组订阅的组播地址或者UUID,节点中每个元素都有一个订阅列表实例。
  • NetKey列表状态(NetKey List State):维护了一个NetKey列表,每个长度为128bit的NetKey都有一个16bit的NetKey索引与之对应,一个NetKey列表至少包含一个NetKey。
  • AppKey列表状态(AppKey List State):维护了一个AppKey列表,每个长度为128bit的AppKey都有一个16bit的AppKey索引与之对应,一个AppKey列表至少包含一个AppKey。
  • 网络传输状态(Network Transmit State):用于控制节点发出网络层PDU重传的次数和时间点,有Network Transmit Count 和 Network Transmit Interval Steps两个参数,每个节点只有一个网络传输状态实例。
  • 网络中继重传状态(Relay Retransmit State):用于控制网络层收到消息后的中继行为,有Relay Re-transmit Count 和 Relay Re-transmit Interval Steps两个参数。
  • 健康故障状态(Health Fault State):用于记录节点的当前故障代码,可以有多个故障代码,每个故障代码占用一个字节。
  • 健康测试状态(Health Test State):用于记录节点的当前测试模式,可以有多种测试模式,每种测试模式占用一个字节。
  • 健康期望注意状态(Health Attention State):用于记录节点的当前注意模式,可以有多种注意模式,每种注意模式占用一个字节。

3.1 Composition Data

Field

Size (octets)

Notes

CID

2

公司ID,由SIG组织分配。

PID

2

产品ID,由厂商自定义。

VID

2

产品版本ID,由厂商自定义。

CRPL

2

重放攻击列表项最小数目,表示节点能够防止重放攻击的最小序列号个数。

Features

2

特性,表示节点支持的Mesh功能,如Relay、Proxy、Friend、Low Power等。

Elements

variable

包含元素描述的序列。

在蓝牙Mesh中,Feature字段的长度为16Bit,其中已经使用了4个Bit来表示四个特性的支持情况。具体情况如下:

* Bit 0:Relay功能,1表示支持,0表示不支持

* Bit 1:Proxy功能,1表示支持,0表示不支持

* Bit 2:Friend功能,1表示支持,0表示不支持

* Bit 3:Low Power功能,1表示支持,0表示不支持

*Bit 4~15预留

Field

Size (octets)

Notes

Loc

2

位置描述,由SIG组织在GATT蓝牙名字空间描述符中定义。

NumS

1

SIG模型的数量,表示元素支持的SIG模型的个数。

NumV

1

Vendor模型的数量,表示元素支持的Vendor模型的个数。

SIG Models

variable

SIG模型的ID列表,每个ID占用2字节。

Vendor Models

variable

Vendor模型的ID列表,每个ID占用4字节,前两字节是公司ID,后两字节是模型ID。

四、资料获取

通过点击以下链接,您可以获取BLE Mesh模块原理图、源代码以及开发资料。链接地址将为您提供详细的文件资料,以供您进行参考和使用。

如果您在使用过程中遇到任何问题或疑虑,欢迎加我QQ ,一起探讨技术问题,我的QQ号是986571840,加的时候请注明CSDN。

BLE Mesh蓝牙组网模块 - 硬创社 (jlc.com)icon-default.png?t=N7T8https://x.jlc.com/platform/detail/001d23cba7b64b0d9df5b9b69720fadb

感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。

请在转载作品时注明出处,严禁抄袭行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis服务迁移数据工具--RDM

一、背景: 在日常的运维工作经常遇见各种数据迁移工作,例如mysql数据库迁移、redis数据库迁移、minio数据迁移等等工作。这里介绍一下redis数据库的迁移过程。 二、迁移思路: redis服务/集群的数据迁移思路是需要新建一个配置、密码一样的re…

【Leetcode】2487. 从链表中移除节点

文章目录 题目思路代码 题目 2487. 从链表中移除节点 思路 1、递归移除节点: 如果头节点为空,直接返回空。递归调用函数处理下一个节点 head->next。在递归返回后,判断当前节点的值是否小于之前记录的最大值 maxVal。如果小于 maxVal…

洛谷p1829(莫比乌斯反演)

思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const double eps 1e-8; const int N 1e710; const long long mod 20101009…

【鸿蒙】安装DevEco Studio运行HarmonyOS第一个APP(小白必看)

文章目录 前言一、DevEco Studio是什么&#xff1f;二、DevEco Studio安装运行1. 下载DevEco Studio2. 安装DevEco Studio3. 启动DevEco Studio4. 运行APP5. 修改代码 三、DevEco Studio调试注意事项总结 前言 鸿蒙OS是华为公司开发的一款基于微内核、耗时10年、4000多名研发人…

MySQL检索距离当前最近的7个小时内,靠近每个时间点数据信息

MySQL检索距离当前最近的7个小时内&#xff0c;靠近每个时间点数据信息 如果你想在最近7个小时内找到每个时间点最接近的数据&#xff0c;即使某些时间点没有数据&#xff0c;你可以使用子查询和窗口函数。以下是一个示例查询&#xff1a; sqlCopy codeSELECTt.time_point,CO…

集群渲染是?渲染农场是?两者与云渲染关联是什么

在数字化浪潮不断推进的当下&#xff0c;渲染技术在多个行业中发挥着至关重要的作用&#xff0c;尤其体现在电影制作、建筑可视化以及电子游戏开发等领域。在众多渲染技术中&#xff0c;集群渲染、渲染农场以及云渲染特别受到业界的重视。本文旨在阐述这些概念的含义以及它们之…

基于SpringBoot的在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化管理。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通…

osg-材质 (osg::Material)

1.材质类 材质类 (osg::Material)继承自osg::StateAttribute 类。osg::Material 封装了 OpenGL的 glMaterial()和glColorMaterial()指令的函数功能&#xff0c;其继承关系图如图5-27 所示。 图 5-27 osg::Material 的继承关系图 在场景中设置节点的材质属性&#xff0c;首先要…

DBSCAN聚类算法

DBSCAN读作&#xff1a;DB Scan&#xff0c;是英语基于密度的噪声应用空间聚类&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;的简写。在理解K-means聚类算法之后再来理解DBSCAN就容易多了。 DBSCAN的步骤如下&#xff1a; 随机从一个…

年终特辑 | 2023卓翼飞思答卷,诚邀您共同翻阅...

朝夕轮转 , 岁序更替&#xff0c;站在岁末&#xff0c;回首2023 &#xff0c;汇成的每一帧都有迹可循 &#xff1b;卓翼飞思实验室产品升级、技术创新、服务卓越、勇毅前行以抢拼实干兑现硕果&#xff01;无论您是亲历者&#xff0c;还是见证者&#xff0c;我们在此诚邀您共同翻…

高效工具汇总,让学习和办公飞起来

目录 1、寻找论文&#xff0c;效率很高2、学习各类编程的地方 1、寻找论文&#xff0c;效率很高 AMiner&#xff0c;由清华大学计算机科学与技术系的唐杰教授团队开发的一个显著的学术搜索和挖掘系统。系统提供了一整套功能以协助学术研究&#xff0c;包括研究人员档案、专家搜…

element-ui Tree 树形控件 过滤保留子级并获取过滤后的数据 多选改单选

本示例基于vue2 element-ui element-ui 的官网demo是只保留到过滤值一级的&#xff0c;并不会保留其子级 目标 1、Tree 树形控件 保留过滤值的子级 2、在第一次过滤数据的基础上进行第二次过滤 3、Tree 树形控件 多选改为单选&#xff0c;且只有最末端子级可以选择 不足…

Django 8 通用视图基础

1. 什么是通用视图 1. 在terminal 输入 django-admin startapp the_12回车 2. tutorial\settings.py 注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.sta…

链接器--动态链接器--延迟绑定与动态链接器是什么?学习笔记二

内容在下面链接&#xff08;通过新建标签页打开&#xff09;&#xff1a; 链接器--动态链接器--延迟绑定与动态链接器是什么&#xff1f;学习笔记二一个例子来看延迟加载https://mp.weixin.qq.com/s?__bizMzkyNzYzMjMzNA&mid2247483713&idx1&snee90a5a7d59872287…

C++知识切片①:运算符重载之前置递增和后置递增

文章目录 前置递增的实现1.先写好main函数及头文件2.自定义MyInteger类3.重定义cout4.在类内实现前置递增 后置递增的实现完整代码 在进行运算符重载之前&#xff0c;不妨先看看常规的前置递增和后置递增的区别&#xff1a; 前置递增如a所示&#xff0c;a是先进行递增计算&…

人工智能大模型:定义、发展和应用

⭐简单说两句⭐ ✨ 正在努力的小新~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &…

k8s中的容器探针

pod的容器健康检查---探针 probe&#xff1a;k8s对容器执行的定期检查&#xff0c;诊断。 探针的三种规则 所有的探针都是针对容器不是针对pod 1、 存活探针---livenessProbe&#xff1a;探测容器是否正常运行。如果发现探测失败&#xff0c;会杀掉容器。容器会根据重启策略…

B端产品经理学习-对用户进行需求挖掘

目录&#xff1a; 用户需求挖掘的方法 举例&#xff1a;汽车销售系统的用户访谈-前期准备 用户调研提纲 预约用户做访谈 用户访谈注意点 我们对于干系人做完调研之后需要对用户进行调研&#xff1b;在C端产品常见的用户调研方式外&#xff0c;对B端产品仍然适用的 用户需…

顺序表——习题

1. 轮转数组 代码实现&#xff1a; // 逆置数组 void nizhi_array(int *nums, int l, int r) { // 左闭右闭if (l > r) {return ;}for (int i l, j r; i < j; i, j--) {int temp nums[i];nums[i] nums[j];nums[j] temp;} }void rotate(int *nums, int numsSize, int…

C语言中关于strcpy函数的理解

strcpy的功能是将源指向的字符串复制到另外一个字符串中 目标指向的数组的大小应该要足够长&#xff0c;避免让源字符串中的数据溢出 关于这个函数的具体用法&#xff0c;我们可以看看下面这个程序 注意&#xff1a;strcpy函数的头文件是<string.h>&#xff0c;我们在用…