蓝牙网格模型:可互操作产品的构建块

文章:马丁·伍尔利

蓝牙技术是一种无线标准,商定,正式规格,支持来自不同的设备之间的全局互操作性......

Bluetooth®技术是一种无线标准,具有商定,正式规范,支持来自不同制造商之间的设备之间的全局互操作性。蓝牙网格也是如此,它可以在安装在最先进的智能建筑中时启用灯光,传感器,交换机和其他设备。

互操作性是整个通信堆栈的每层标准化的好处 - 从物理层处理,处理底部的底部的模拟世界,产品级别行为在顶部呈现。蓝牙网格规格在称为模型的粒度,标准构建块方面定义这些产品行为。

部分原因是由于这种互操作性,蓝牙网已成为大型设备网络的明确选择 - 从连接照明到控制复杂的智能建筑和工业系统。事实上,过去两年的蓝牙网格产品资格(正式认证)每六个月加倍一次,没有迹象。根据这一点2020年蓝牙市场更新到2024年,每年将有10亿台联网智能设备出货。随着蓝牙成为设备网络连接的标准,了解如何使用网格模型对任何开发人员都很重要。

什么是网格模型?

根据这一点蓝牙网格术语表,一个模型定义了一组状态、状态转换、状态绑定、消息和其他相关行为。一个节点中的一个元素必须支持一个或多个模型,而正是这个或多个模型定义了元素所具有的功能。蓝牙SIG定义了许多模型,其中许多被故意定位为“通用”模型,在广泛的设备类型中具有潜在的实用价值。

简而言之,元素是物理产品的可寻址部分,它本身被称为“节点”。模型是标准软件组件的规范,当包含在产品中时,确定它可以作为网状设备进行的。模型是自包含的组件,产品将包含其中的几个,共同制作该设备它是什么。

在模型中了解国家

模型包含状态,它是指示设备状况的数据项,例如开/关或高/低。状态可以简单,仅包含单个值或包含多个字段的复合,类似于C程序中的编程语言中的结构。当状态项目之间定义有关系时,这些都称为状态绑定。这些指定如果关系中的一个状态发生变化,则其他状态需要重新计算其值。

有时状态绑定是有条件的,可以由其他一些状态启用或禁用。在这些实例中,开发人员必须为任何用于它们正在使用的模型定义的任何状态绑定来实现所需的逻辑,并确保执行逻辑。但是,在蓝牙网格模型规范中未明确定义状态绑定的情况下,状态必须独立起作用。

考虑旋转调光器开关,旋转以改变房间中的灯的电平,但也可以按下以打开或关闭它们。当灯熄灭时,您可以旋转控制,并且没有任何内容会发生,但是如果你按下开关,用它在相同的旋转位置,灯光将在所选亮度级别上亮起。在这种情况下,如果通用开/关状态指示设备当前关闭,则增加通用状态级别的效果不应达到用户可辨别的效果。通过将通用ON / OFF状态设置为1来切换设备,不仅打开设备,而且它还使其能够在已设置的级别开始运行。

模型分类,通信和行为

模型有两个分类 - 第一个是客户端,不包含状态。第二个是服务器,其遏制状态。一些服务器模型具有相关的“设置模型”,其中包含配置数据。安装服务器模型类似于其他服务器模型,其中它们包含状态,它们生成并消耗特定类型的消息。但他们的目的是允许从主模型状态项目分离模型的配置设置,以便通常由网络管理员应用不同的访问控制策略。

模型通过发送和接收消息来互相通信。消息被定义为每个模型的规范的一部分,以便清除模型可以生成和接收和理解的型号类型的消息。消息要么将状态值传送到另一个设备,或者它们会更改状态值,引出从设备的常见可见响应。

模型可以指定对其他模型的依赖关系。它们还可以扩展另一个模型,即第一个模型向第二个模型添加状态的过程。一个模型可能还需要一个扩展它的模型。不扩展其他模型的模型称为根模型。

蓝牙网格模型面向对象的方法

在思考模型时,有助于软件开发人员考虑通过面向对象的软件工程范例的镜头的模型规范和设备中的代码中的模型实现,作为模型或对象的实例。蓝牙网格规范不会规定在代码中实现模型的任何特定方法。这留给了开发人员,编程语言和API。但是,模型确实借给了面向对象的方法。

有许多软件开发工具包(SDK)可用来开发网格固件。然而,无论您使用什么SDK,实现网格固件的原理都是相同的。本文中的示例与和风RTOS及其API。

属性在网格模型中的作用

有两种形式,数据可以采用蓝牙网格模型 - 状态和属性。状态值是特定模型的成员,并且具有基于规范定义的含义的值。然而,它们不是自描述的,并且态是从唯一识别消息的唯一识别的唯一识别邮件的函数。

另一方面,属性是其允许值,其含义和数据的其他方面的数据项取决于其使用的上下文。属性ID明确标识属性。在使用属性的模型中,属性ID和属性值包含状态的值。例如,当观察传感器数据时,状态包含一个或多对属性ID和相应的传感器值。

属性允许同一模型与各种数据类型一起使用。对于传感器服务器模型这样的模型,这是非常有利的,因为任何类型的传感器数据都可以根据任何上下文进行处理和解释(只要定义了适当的属性)。如果没有这种描述和封装数据的方法,将需要许多不同类型的传感器模型,或者传感器服务器模型将需要为它可能需要支持的每一种不同类型的传感器数据具有大量的状态。

编码模型

网格固件开发人员必须采取的第一个步骤是定义他们产品的网格节点组成。这意味着代码定义了节点有多少个元素以及每个元素包含什么模型。下图显示了节点、它的元素、元素中包含的模型以及每个模型包含的状态项之间的关系。

虽然细节会在SDK上变化,但是使用Zephyr SDK节点组合涉及创建一系列数组,其中每个阵列都包含由SDK提供的宏定义的结构。这看起来像下面的图,它显示了属于节点元素的四个模型。


(来源:蓝牙SIG)

在实现模型时,以下是通常需要的一些功能:

1. RX消息处理程序功能

必须注册与每个模型关联的消息的操作系统,并且节点可能会接收(Rx),并且必须实现用于处理这些消息类型的功能。Zephyr代码中的这看起来的一个例子如下。


(来源:蓝牙SIG)

当模型接收到消息时,它要么更改状态值(set),要么请求在状态消息(get)中报告特定状态的当前值。设置消息有两种形式—不需要响应(未确认)的设置消息和需要在状态消息中发送回新状态值的设置消息。有时,术语“集合”可以用来表示这两种变体中的任何一种。

当开发人员正在处理由设置消息生成的状态更改时,重要的是要确保处理任何定义的和活动状态绑定,并且根据需要重新计算其他相关状态值。

2. TX消息生产者功能

需要写入网格消息并使用适当的API发送邮件的函数需要写入,以便通过合适的事件或设备交互来触发它们的执行 - 就像用户按下按钮或转动旋钮时一样。

开发人员将主要涉及与堆栈的顶层相关的网格消息的部分,称为“访问层”(虽然可以存在异常)。

在实现模型时,重要的是要尊重客户机模型和服务器模型必须对彼此的实现细节一无所知这一事实。例如,服务器不应该需要知道或选择利用客户机可能发送的特定值的知识。每个人对另一个人来说都是一个黑盒。

安全

蓝牙网格设备中的安全性是强制性的。首次设置新设备时,它会通过一个名为Provisioning和Configuration的过程,通常使用智能手机应用程序。配置配备新设备具有各种类型的一系列安全键。拥有网络密钥使设备成为该特定网络的成员,用于保护与网格堆栈的下层相关的数据。应用密钥通过配置过程与具有新节点的特定元素的特定模型相关联,并用于保护与堆栈的较高层有关的数据。网络和应用层数据安全的分离允许网络中的节点来处理消息,它们不是(例如,在中继消息时的最终接收者的消息,而无需或能够解密消息的应用相关部分。


推荐

ARM IOT解决方案概述 - 快速有效地向市场提供安全的物联网系统


堆栈将确保使用配置的网络密钥和适当的应用密钥来确保所有消息都被加密并且可以进行身份​​验证。消息标题也被滥用,这是对网络模式分析攻击的防御。协议数据单元(PDU)包含SEQ字段,每次节点发送消息时应递增。SEQ字段的目的是允许识别重放攻击。将忽略所接收的SEQ值的消息,将被忽略少于或等于上次收到的。

网格模型概述

蓝牙SIG有四组模型:通用型号,传感器的型号,照明模型以及与时间的模型以及称为场景的网状自动化功能。在下面的图像中,您会注意到每个客户机模型都有一个相应的服务器模型,反之亦然。在某些情况下,服务器模型也具有相应的设置服务器模型。


(来源:蓝牙SIG)

基础模型概述

虽然模型通常是可选的,并且开发人员使用所需的网格能力来实现装备其产品的模型,但有两个模型其包含是强制性的。这些基础模型关注启用蓝牙网状网络的配置和管理和它包含的设备。

所有设备都需要可配置,因此所有设备都必须强制配置服务器模型。它提供了配置能力的设备。该模型包含大量状态,允许配置设备的各个方面。设备的整体组成保持在称为组成数据状态的状态。发送消息和与周期性消息发布有关的其他参数时的目的地地址,订阅的地址以及哪些各种特殊网格网络角色可以播放,是配置模型的数据的所有部分。

通常,开发人员只需要确保配置服务器模型是其设备固件的一部分。但是,有时开发人员在其代码中明确地执行设备的一部分。

健康模型是另一个强制性基础模型,并且涉及故障报告和诊断。蓝牙网状网络中所有节点的主要元素必须包括健康服务器模型,尽管其他元素也可以通知此模型的故障。在一个健康服务器模型中,为健康服务器模型定义了一系列的有关状态。故障由单八位字节代码表示。

模型在行动-照明

蓝牙网状模型对于满足智能建筑中照明的复杂要求至关重要。照明型号允许控制灯的开/关,亮度,色温和色调颜色。值得注意的是,它们还提供了一种高度复杂的基于软件的照明控制器,可以实现智能照明自动化方案。

当考虑照明模型时,考虑光的本质和它们可以被控制的各种方式是很重要的。灯通常通过按按钮、转动旋钮或推滑块来手动控制。但它们也可以由传感器控制——例如,向灯光指示房间里有人。定时器也可以用来控制灯光。比起我们想要控制的开/关状态或亮度,灯光可以有更多的属性。对于智能建筑,蓝牙网格照明模型包括一组特别特殊的模型,比如提供复杂的、自动的灯光控制的Light LC模型。

统称,照明控制(LC)型号形成一个照明控制器:允许建立复杂,传感器和用户驱动的照明控制的软件组件。占用占用和环境光传感器,以便可以采用日光收获等技术。随着照明控制器的状态改变,控制的光的亮度状态通过一系列级别进行了进展,从一个到另一个电平由可配置的定时参数控制,使得改变不突然和对用户感到自然。

蓝牙网格照明控制是基于软件的软件,支持使用嵌入在灯中的控制器而不是物理单独的硬件设备中的优越的分散控制器架构。这种方法有成本优势和显着的性能优势。

蓝牙网格的商业案例

在许多扇区中快速采用蓝牙网状网络作为无线通信平台。蓝牙网格使建筑物的基本系统自动化能够利用节能,降低运营成本,并改善建筑物的核心系统。蓝牙网状网络可以为分布式平台提供可能支持高级智能建筑服务的分布式平台的基础,例如WayFinding和资产跟踪。

不管你所在行业的具体情况如何,网格模型都是蓝牙网格互操作性的关键构建块。

- Martin Woolley是Bluetooth SIG的技术计划经理

发表评论