这个页面的 最新开发版本 可能比这个发布的 2.1.0rc1 版本新。

蓝牙 Mesh Shell

Bluetooth Mesh shell 子系统为 shell_api 模块提供了一组 BluetoothMesh shell 命令。它允许通过交互式界面测试和探索 Bluetooth Mesh API,而无需编写应用程序。

Bluetooth Mesh shell 界面提供对大多数 BluetoothMesh 功能的访问,包括供应、配置和消息发送。

先决条件

Bluetooth Mesh shell 子系统依赖于应用程序来创建合成数据并进行网格初始化。

应用

蓝牙 Mesh shell 子系统最容易通过 tests/Bluetooth/Mesh_shell 下的蓝牙 Mesh shell 应用程序使用。有关如何连接 Bluetooth Mesh shell 应用程序并与之交互的信息,请参见 shell_api()

基本用途

Bluetooth Mesh shell 子系统添加了一个 Mesh 命令,其中包含一组子命令。每次设备启动时,确保在调用任何其他 Bluetooth mesh shell 命令之前调用 mesh init

uart:~$ mesh init

这样做是为了确保将所有可用的日志打印到 shell 输出。

预配置

必须配置网格节点才能成为网络的一部分。这仅在设备首次启动时才有必要,因为设备将在重新启动之间记住其配置数据。

配置设备的最简单方法是通过自我配置。要执行此操作,用户必须使用默认网络密钥和地址 0x0001 配置设备,请执行:

uart:~$ mesh prov local 0 0x0001

由于所有 mesh 节点都使用相同的默认网络密钥值,因此可以在多个设备上执行此操作,只要它们被分配了不重叠的单播地址。 或者,为了将设备配置到现有网络中,可以使用 mesh prov pb adv onmesh prof pb gatt on 启用未配置的信标。 信标可以由外部供应器拾取,该外部供应器可以将节点配置到其网络中。

一旦网格节点成为网络的一部分,其传输参数可以由常规配置命令控制:

  • 要设置目标址,请调用 mesh target dst <Addr>.

  • 要设置网络密钥索引,请调用 mesh target net <NetKeyIdx>.

  • 要设置应用程序键索引,请调用 mesh target app <AppKeyIdx>.

默认情况下,传输参数被设置为将消息发送到配置的地址和网络密钥。

配置

通过将目标地址设置为本地单播地址(上面的 mesh prov local 命令中的 0x0001 ),我们可以通过任何 模型 命令执行自我配置。

好的第一步是读取节点自己的合成数据:

uart:~$ mesh models cfg get-comp

这将打印节点的合成数据列表,包括其模型 ID 的列表。

接下来,由于默认情况下设备没有应用程序密钥,因此最好添加一个:

uart:~$ mesh models cfg appkey add 0 0

消息发送

添加应用程序密钥(请参见上文)后,网格节点的转换参数都有效,Bluetooth mesh shell 可以通过网络发送原始网格消息。

例如,要发送通用通断设置消息,请拨打:

uart:~$ mesh test net-send 82020100

备注

除了操作码之外,所有多字节字段模型消息都是小端的。

消息将使用当前网络和应用程序密钥索引发送到当前目标地址。由于目标地址默认指向本地单播地址,因此设备将仅向自身发送数据包。要将目标地址更改为“所有节点”广播地址,请调用

uart:~$ mesh target dst 0xffff

当目标地址设置为 0xffff 时,网络中具有配置的网络和应用程序密钥的任何其他网状节点都将接收和处理我们发送的消息。

备注

要更改设备的配置,在发出任何配置命令之前,必须将目标地址设置回本地单播地址。

在开发期间发送原始网格数据包是测试模型消息处理程序实现的一种好方法, 因为它可以在不实现发送模型的情况下完成。默认情况下,只能以这种方式测试模型消息的接收, 因为 Bluetooth Mesh shell 仅包括基础模型。要在网格节点中接收数据包, 您必须将具有有效操作码处理程序列表的模型添加到 subsys/bluetooth/mesh/shell.c 中的合成数据, 并在处理程序回调中将传入消息打印到 shell。

参数格式

Bluetooth Mesh shell 命令以各种格式进行解析:

Parameter formats

Type

Description

Example

Integers

The default format unless something else is specified. Can be either decimal or hexadecimal.

1234, 0xabcd01234

Hexstrings

For raw byte arrays, like UUIDs, key values and message payloads, the parameters should be formatted as an unbroken string of hexadecimal values without any prefix.

deadbeef01234

Booleans

Boolean values are denoted in the API documentation as <val(off, on)>.

on, off, enabled, disabled, 1, 0

命令

Bluetooth Mesh shell 实现了一组大型命令,一些命令接受参数,这些参数在命令名后面的括号中提到, 例如, mesh lpn set <value: off, on> 。强制参数用尖括号标记(例如 <NetKeyIdx> ), 可选参数用方括号标记(如 [DstAddr] )。

Bluetooth Mesh shell 命令分为以下组:

备注

一些命令取决于在应用程序的编译时配置中启用的特定功能。默认情况下,并非所有功能都启用。 通过在没有任何参数的情况下调用 mesh ,可以在 shell 中显示可用的 Bluetooth mesh shell 命令的列表。

一般配置

mesh init

初始化 mesh shll,该命令必须在任何其他网格命令之前运行。

mesh reset-local

将局部网格节点重置为其初始未设置状态,该命令还将清除配置数据库(CDB)(如果存在)。

目标

target 命令使用户能够监视和设置 shell 的目标目标地址、网络索引和应用程序索引,这些参数由多个命令使用,如配置、配置客户端等。

mesh target dst [DstAddr]

获取或设置邮件目标地址。目标地址确定与外壳一起发送网格数据包的位置,但对外壳控制之外的模块没有影响。

  • DstAddr: 如果存在,则设置新的16位网格目标地址。如果省略,则打印当前目标地址。

mesh target net [NetKeyIdx]

获取或设置消息网络索引,网络索引确定使用哪个网络密钥来加密与外壳一起发送的网状数据包, 但对外壳控制之外的模块没有影响,必须已通过配置或配置客户端将网络密钥添加到设备。

  • NetKeyIdx:如果存在,则设置新的网络索引。如果省略,则打印当前网络索引。

mesh target app [AppKeyIdx]

获取或设置消息应用程序索引,应用程序索引确定使用哪个应用程序密钥来加密与外壳一起发送的网格数据包, 但对外壳控制之外的模块没有影响,应用程序密钥必须已由配置客户端添加到设备,并且必须绑定到当前网络索引。

  • AppKeyIdx: 如果存在,则设置新的应用程序索引。如果省略,则打印当前应用程序索引。

低功耗节点

mesh lpn set <Val(off, on)>

启用或禁用低功耗操作。一旦启用,设备将关闭其无线电并开始轮询朋友节点。

  • Val: 设置是否启用低功耗操作。

mesh lpn poll

对友元节点执行轮询,以接收任何挂起的消息,仅在启用 LPN 时可用。

测试

mesh test net-send <HexString>

发送包含当前目标地址、网络和应用程序索引的原始网格消息。消息操作码必须手动编码。

  • HexString 要发送的消息的原始十六进制表示。

mesh test iv-update

强制 IV 更新。

mesh test iv-update-test <Val(off, on)>

设置 IV 更新测试模式。在测试模式下,绕过 IV 更新时序要求。

  • Val: 启用或禁用 IV 更新测试模式。

mesh test rpl-clear

清除重播保护列表,强制节点忘记所有接收的消息。

警告

清除重播保护列表会破坏网格节点的安全机制,使其容易受到消息重播攻击,这不应在实际部署中执行。

运行状况服务器测试

mesh test health-srv add-fault <FaultID>

为 Linux Foundation 公司 ID 注册新的运行状况服务器故障。

  • FaultID: 要寄存器的故障 ID( 0x00010xFFFF

mesh test health-srv del-fault [FaultID]

删除 Linux Foundation Company ID 的已注册 Health Server 错误。

  • FaultID: 如果存在,则将删除给定的故障 ID。如果省略,则将清除所有已记录的故障。

预配置

要允许设备广播可连接的未配置信标,必须启用 CONFIG_BT_MESH_PROVISIONEE 配置选项以及 CONFIG_MESH_PB_GATT 选项。

mesh prov pb-gatt <Val(off, on)>

开始或停止播发可连接的未配置信标。可连接的未配置信标允许网格节点被附近的基于 GATT 的供应器发现,并通过 GATT 承载提供。

  • Val: 使用 GATT 启用或禁用配置

要允许设备广播未配置的信标,必须启用 CONFIG_BT_MESH_PROVISIONEE 配置选项以及 CONFIG_TMESH_PB_ADV 选项。

mesh prov pb-adv <Val(off, on)>

开始或停止播发未配置的信标。未配置的信标允许网格节点被附近的基于广告的供应器发现,并通过广告承载器供应。

  • Val: 启用或禁用广告配置

要允许设备配置设备,必须启用 CONFIG_BT_MESH_PROVISIONERCONFIG_TMESH_PB_ADV 配置选项。

mesh prov remote-adv <UUID(1-16 hex)> <NetKeyIdx> <Addr> <AttDur(s)>

将附近的设备配置到网格中。网格节点开始扫描具有给定 UUID 的未配置信标。 一旦找到,未配置的设备将添加到具有给定单播地址的网状网络中,并给定 NetKeyIdx 指示的网络密钥。

  • UUID: 未配置设备的 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • NetKeyIdx: 要传递到设备的网络密钥的索引。

  • Addr: 要分配给未配置设备的第一个单播地址。该设备将占用与其具有的元素相同数量的地址,并且所有地址都必须可用。

  • AttDur: 如果支持,未配置设备将标识自己的持续时间(以秒为单位)。有关详细信息,请参见 运行状况服务器

要允许设备通过 GATT 配置设备,必须启用 CONFIG_BT_MESH_PROVISIONERCONFIG_MET_MESH_PB_GATT_CLIENT 配置选项。

mesh prov remote-gatt <UUID(1-16 hex)> <NetKeyIdx> <Addr> <AttDur(s)>

将附近的设备配置到网格中。网格节点开始扫描具有给定 UUID 的 PB-GATT 的可连接广告。一旦找到, 未配置的设备将添加到具有给定单播地址的网状网络中,并给定 NetKeyIdx 指示的网络密钥。

  • UUID: 未配置设备的 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • NetKeyIdx: 要传递到设备的网络密钥的索引。

  • Addr: 要分配给未配置设备的第一个单播地址。该设备将占用与其具有的元素相同数量的地址,并且所有地址都必须可用。

  • AttDur: 如果支持,未配置设备将标识自己的持续时间(以秒为单位)。有关详细信息,请参见 运行状况服务器

mesh prov uuid [UUID(1-16 hex)]

获取或设置网格节点的 UUID,用于未配置的信标。

  • UUID: 如果存在,则为新的128位 UUID 值。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。如果省略,将打印当前 UUID。要启用该命令,必须启用 CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE 选项。

mesh prov input-num <Number>

输入数字 OOB 身份验证值。仅在配置期间 shell 提示时有效。输入号码必须与配置中的其他参与者提供的号码匹配。

  • Number: 十进制身份验证号。

mesh prov input-str <String>

输入字母数字 OOB 身份验证值,仅在配置期间 shell 提示时有效,输入字符串必须与配置中其他参与者提供的字符串匹配。

  • String: 未引用的字母数字身份验证字符串。

mesh prov static-oob [Val(1-32 hex)]

设置或清除静态 OOB 身份验证值。在设置开始生效之前,必须设置静态 OOB 身份验证值。 配置中的两个参与者的静态 OOB 值必须相同。要启用该命令,必须启用 CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE 选项。

  • Val: 如果存在,则指示静态 OOB 的新十六进制值。提供短于16个字节的十六进制字符串将填充数组的N个最高有效字节,并对其余字节进行零填充。如果省略,则清除静态 OOB 值。

mesh prov local <NetKeyIdx> <Addr> [IVI]

设置网格节点本身。如果启用了配置数据库,则必须创建网络密钥。否则,使用默认键值。

  • NetKeyIdx: 要配置的网络密钥的索引。

  • Addr: 要分配给设备的第一个单播地址。该设备将占用与其具有的元素相同数量的地址,并且所有地址都必须可用。

  • IVI: 表示当前网络 IV 索引。如果省略,则默认为0。

mesh prov beacon-listen <Val(off, on)>

启用或禁用打印传入的未配置信标,允许调配器设备检测附近的未配置设备并调配它们。要启用该命令,必须启用 CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE 选项。

  • Val: 是否启用未配置的信标打印。

mesh prov remote-pub-key <PubKey>

提供设备公钥。

  • PubKey -大端数中的设备公钥。

mesh prov auth-method input <Action> <Size>

从配置器设备中,指示未配置的设备使用指定的输入 OOB 身份验证操作。

  • Action - 输入动作。允许的值:

    • 0 - 无输入动作。

    • 1 - 推动作设置。

    • 2 - 旋转动作设置。( 待修正 )

    • 4 - 输入数字动作设置。

    • 8 - 输入字符串动作设置。

  • Size - 身份验证大小。

mesh prov auth-method output <Action> <Size>

从供应器设备,指示未配置的设备使用指定的输出 OOB 身份验证操作。

  • Action - 输出动作。允许的值:

    • 0 - 无输出动作。

    • 1 - 闪烁动作设置。

    • 2 - 振动动作设置。

    • 4 - 显示编号动作设置。

    • 8 - 显示字符动作设置。

  • Size - 身份验证大小。

mesh prov auth-method static <Val(1-16 hex)>

从配置器设备,指示未配置的设备使用静态 OOB 身份验证,并在配置时使用给定的静态身份验证值。

  • Val - 静态 OOB 值。提供短于32字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

mesh prov auth-method none

在调配器设备中,在调配新设备时不要使用任何身份验证,这是默认行为。

代理

代理服务器模块是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_GATT_Proxy 配置选项启用。

mesh proxy identity-enable

启用代理节点标识信标,允许代理设备显式连接到此设备。在节点返回正常代理信标之前,信标将运行60秒。

代理客户端模块是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_Proxy_Client 配置选项启用。

mesh proxy connect <NetKeyIdx>

自动将附近的代理服务器连接到网格中。

  • NetKeyIdx: 要连接的网络密钥的索引。

mesh proxy disconnect <NetKeyIdx>

断开现有代理连接。

  • NetKeyIdx: 要断开连接的网络密钥的索引。

mesh proxy solicit <NetKeyIdx>

开始子网的代理请求,可以通过 CONFIG_BT_MESH_PROXY_SOLICITATION 配置选项启用对该功能的支持。

  • NetKeyIdx: 要将请求 PDU 发送到的网络密钥的索引。

模型

配置客户端

配置客户端模型是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_CFG_CLI 配置选项启用。 这是作为 mesh models 子命令列表中的单独模块( mesh models cfg )实现的。 如果启用了提到的 shell 配置选项,并且只要配置客户端模型存在于应用程序的模型组合中, 则该模块将在配置客户端模型的任何实例上工作。该外壳模块可用于配置自身和网状网络中的其他节点。

配置客户端使用 mesh target dstmesh target net 设置的常规消息参数来定位特定节点。 当配置 Bluetooth Mesh shell 节点时,假设在初始化 shell 配置上下文的情况下启用了 CONFIG_BT_Mesh_shell_PROV_CTX_INSTANCE 选项, 配置客户端模型默认以自身为目标。类似地,当 Bluetooth Mesh shell 提供了另一个节点时,配置客户端模型以新节点为目标。在大多数常见用例中, 配置客户端依赖于配置功能和配置数据库才能完全正常工作。配置客户端始终使用绑定到目标地址的设备密钥发送消息, 因此它将只能配置自己和它提供的网格节点。以下步骤是如何设置设备以开始使用配置客户端命令的示例:

  • 初始化客户端节点(mesh init).

  • 创建 CDB(mesh cdb create).

  • 配置本地设备 (mesh prov local).

  • shell 模块现在应该以自身为目标.

  • 监控本地节点的合成数据 (mesh models cfg get-comp).

  • 使用 Configuration Client 命令根据需要配置本地节点。

  • 提供其他设备(mesh prov beacon-listen) (mesh prov remote-adv) (mesh prov remote-gatt).

  • shell 模块现在应该以新添加的节点为目标.

  • 监视新配置的节点及其地址 (mesh cdb show).

  • 监视目标设备的组成数据(mesh models cfg get-comp).

  • 使用配置客户端命令根据需要配置节点。

mesh models cfg target get

获取配置客户端模型的目标配置服务器。

mesh models cfg help

打印配置客户端 shell 模块的信息。

mesh models cfg reset

重置目标设备。

mesh models cfg timeout [Timeout(s)]

获取并设置消息发送期间使用的配置客户端模型超时。

  • Timeout: 如果存在,请以秒为单位设置配置客户端模型超时。如果省略,则打印当前超时。

mesh models cfg get-comp [Page]

阅读作文数据页。将打印完整的成分数据页。如果目标没有给定的页面,它将返回其前面的最后一个页面。

  • Page: 要请求的合成数据页。如果省略,则默认为0。

mesh models cfg beacon [Val(off, on)]

获取或设置网络信标传输。

  • Val: 如果存在,则启用或禁用网络信标的发送。如果省略,则打印当前网络信标状态。

mesh models cfg ttl [TTL]

获取或设置默认 TTL 值。

  • TTL: 如果存在,则设置新的默认 TTL 值。合法的 TTL 值为 0x00 和 0x02-0x7f。如果省略,则打印当前默认 TTL 值。

mesh models cfg friend [Val(off, on)]

获取或设置朋友功能。

  • Val: 如果存在,则启用或禁用朋友功能。如果省略,则打印当前朋友功能状态:

    • 0x00: 支持该功能,但已禁用。

    • 0x01: 该功能已启用。

    • 0x02: 不支持该功能。

mesh models cfg gatt-proxy [Val(off, on)]

获取或设置 GATT 代理功能。

  • Val: 如果存在,则启用或禁用 GATT 代理功能。如果省略,则打印当前的 GATT 代理功能状态:

    • 0x00: 支持该功能,但已禁用。

    • 0x01: 该功能已启用。

    • 0x02: 不支持该功能。

mesh models cfg relay [<Val(off, on)> [<Count> [Int(ms)]]]

获取或设置继电器功能及其参数。

  • Val: 如果存在,启用或禁用继电器功能。如果省略,则打印当前继电器功能状态:

    • 0x00: 支持该功能,但已禁用。

    • 0x01: 该功能已启用。

    • 0x02: 不支持该功能。

  • Count: 如果 val 打开,则设置新的中继重新传输计数。如果 val 关闭,则忽略。合法的重新传输计数为 0-7。如果忽略,则默认为 2

  • Int: 如果 val 打开,则以毫秒为单位设置新的中继重新传输间隔。合法的间隔范围为 10-320 毫秒。如果 val 关闭,则忽略。如果忽略,则默认为 20

mesh models cfg node-id <NetKeyIdx> [Identity]

获取或设置子网的当前节点标识状态。

  • NetKeyIdx: 要 Get/Set 的网络密钥索引。

  • Identity: 如果存在,则设置节点标识状态的标识。

mesh models cfg polltimeout-get <LPNAddr>

获取 Friend 节点内 LPN 的 PollTimeout 计时器的当前值。

  • LPNAddr 低功耗节点的地址。

mesh models cfg net-transmit-param [<Count> <Int(ms)>]

获取或设置网络传输参数。

  • Count: 设置每个已发送消息的附加网络传输数。合法的重新传输计数为 0-7。

  • Int: 以毫秒为单位设置新的网络重新传输间隔。合法间隔范围为 10-320 毫秒。

mesh models cfg netkey add <NetKeyIdx> [Key(1-16 hex)]

将网络密钥添加到目标节点。如果启用,则将密钥添加到配置数据库。

  • NetKeyIdx: 要添加的网络密钥索引。

  • Key: 如果存在,将键值设置为128位十六进制值。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并用零填充其余字节。只有在配置数据库中不存在密钥时才有效。如果省略,则使用默认键值。

mesh models cfg netkey upd <NetKeyIdx> [Key(1-16 hex)]

将网络密钥更新到目标节点。

  • NetKeyIdx: 要更新的网络密钥索引。

  • Key: 如果存在,将键值设置为128位十六进制值。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。如果省略,则使用默认键值。

mesh models cfg netkey get

获取已知网络密钥索引的列表。

mesh models cfg netkey del <NetKeyIdx>

从目标节点中删除网络密钥。

  • NetKeyIdx: 要删除的网络密钥索引。

mesh models cfg appkey add <NetKeyIdx> <AppKeyIdx> [Key(1-16 hex)]

将应用程序密钥添加到目标节点。如果启用,则将密钥添加到配置数据库。

  • NetKeyIdx: 应用程序密钥绑定到的网络密钥索引。

  • AppKeyIdx: 要添加的应用程序键索引。

  • Key: 如果存在,将键值设置为128位十六进制值。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并用零填充其余字节。只有在配置数据库中不存在密钥时才有效。如果省略,则使用默认键值。

mesh models cfg appkey upd <NetKeyIdx> <AppKeyIdx> [Key(1-16 hex)]

将应用程序密钥更新到目标节点。

  • NetKeyIdx: 应用程序密钥绑定到的网络密钥索引。

  • AppKeyIdx: 要更新的应用程序键索引。

  • Key: 如果存在,将键值设置为128位十六进制值。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。如果省略,则使用默认键值。

mesh models cfg appkey get <NetKeyIdx>

获取绑定到给定网络密钥索引的已知应用程序密钥索引的列表。

  • NetKeyIdx: 用于从中获取应用程序键索引列表的网络键索引。

mesh models cfg appkey del <NetKeyIdx> <AppKeyIdx>

从目标节点中删除应用程序密钥。

  • NetKeyIdx: 应用程序密钥绑定到的网络密钥索引。

  • AppKeyIdx: 要删除的应用程序键索引。

mesh models cfg model app-bind <Addr> <AppKeyIdx> <MID> [CID]

将应用程序密钥绑定到模型。模型只能加密和解密使用它们绑定到的应用程序密钥发送的消息。

  • Addr: 模型所在元素的地址。

  • AppKeyIdx: 绑定到模型的应用程序键。

  • MID: 要将键绑定到的模型的模型 ID。

  • CID:如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model app-unbind <Addr> <AppKeyIdx> <MID> [CID]

从模型中取消绑定应用程序密钥。

  • Addr: 模型所在的元素的地址。

  • AppKeyIdx: 要从模型中解除绑定的应用程序键。

  • MID: 要从中解除绑定键的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model app-get <ElemAddr> <MID> [CID]

获取绑定到模型的应用程序键的列表。

  • ElemAddr: 模型所在的元素的地址。

  • MID: 要获取其绑定键的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model pub <Addr> <MID> [CID] [<PubAddr> <AppKeyIdx> <Cred(off, on)> <TTL> <PerRes> <PerSteps> <Count> <Int(ms)>]

获取或设置模型的发布参数。如果包含所有发布参数,则它们将成为模型的新发布参数。如果省略了所有发布参数,则打印模型的当前发布参数。

  • Addr: 模型所在的元素的地址。

  • MID: 要获取其绑定键的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

发布参数:

  • PubAddr: 要发布到的目标地址。

  • AppKeyIdx: 要发布的应用程序键索引。

  • Cred: 作为低功耗节点时是否使用友谊凭据发布。

  • TTL: 要发布的 TTL 值( 0x000x07f )。

  • PerRes: 发布周期步骤的解析:

    • 0x00: 步长分辨率为100毫秒。

    • 0x01: 步长分辨率为1秒。

    • 0x02: 步长分辨率为10秒。

    • 0x03: 步长分辨率为10分钟。

  • PerSteps: 发布周期步骤数,或0以禁用定期发布。

  • Count: 每个已发布消息的重新传输次数( 07 )。

  • Int :每次重新传输之间的间隔,以毫秒为单位。必须是50的倍数。

mesh models cfg model pub-va <Addr> <UUID(1-16 hex)> <AppKeyIdx> <Cred(off, on)> <TTL> <PerRes> <PerSteps> <Count> <Int(ms)> <MID> [CID]

设置模型的发布参数。

  • Addr: 模型所在的元素的地址。

  • MID: 要获取其绑定键的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙SIG定义的模型。

发布参数:

  • UUID: 要发布到的目标虚拟地址。提供小于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并用零填充其余字节。

  • AppKeyIdx: 要发布的应用程序键索引。

  • Cred: 作为低功耗节点时是否使用友谊凭据发布。

  • TTL: 要发布的 TTL 值( 0x000x07f )。

  • PerRes: 发布周期步骤的解析:

    • 0x00: 步长分辨率为100毫秒。

    • 0x01: 步长分辨率为1秒。

    • 0x02: 步长分辨率为10秒。

    • 0x03: 步长分辨率为10分钟。

  • PerSteps: 发布周期步骤数,或0以禁用定期发布。

  • Count: 每个已发布消息的重新传输次数( 07 )。

  • Int 每次重新传输之间的间隔,以毫秒为单位。必须是50的倍数。

mesh models cfg model sub-add <ElemAddr> <SubAddr> <MID> [CID]

将模型订阅到组地址,模型仅接收发送到其单播地址或其订阅的组或虚拟地址的消息,模型可以订阅多个组和虚拟地址。

  • ElemAddr: 模型所在的元素的地址。

  • SubAddr: 模型应订阅的16位组地址( 0xc0000xFEFF )。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-del <ElemAddr> <SubAddr> <MID> [CID]

从组地址取消订阅模型。

  • ElemAddr: 模型所在的元素的地址。

  • SubAddr: 模型应从其订阅列表中删除的16位组地址( 0xc0000xFEFF )。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-add-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]

将模型订阅到虚拟地址。模型仅接收发送到其单播地址或其订阅的组或虚拟地址的消息。模型可以订阅多个组和虚拟地址。

  • ElemAddr: 模型所在的元素的地址。

  • LabelUUID:要订阅的虚拟地址的128位标签 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-del-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]

从虚拟地址取消订阅模型。

  • ElemAddr: 模型所在的元素的地址。

  • LabelUUID: 要删除订阅的虚拟地址的128位标签 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-ow <ElemAddr> <SubAddr> <MID> [CID]

使用单个新组地址覆盖所有模型订阅。

  • ElemAddr: 模型所在的元素的地址。

  • SubAddr: 模型应添加到订阅列表中的16位组地址( 0xc0000xFEFF )。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-ow-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]

使用单个新的虚拟地址覆盖所有模型订阅,模型仅接收发送到其单播地址或其订阅的组或虚拟地址的消息,模型可以订阅多个组和虚拟地址。

  • ElemAddr: 模型所在的元素的地址。

  • LabelUUID: 虚拟地址的128位标签 UUID,作为要添加到订阅列表中的新地址。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • MID: 要添加订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-del-all <ElemAddr> <MID> [CID]

从模型中删除所有组和虚拟地址订阅。

  • ElemAddr: 模型所在的元素的地址。

  • MID: 要全部取消订阅的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg model sub-get <ElemAddr> <MID> [CID]

获取模型订阅的地址列表。

  • ElemAddr: 模型所在的元素的地址。

  • MID: 要获取其订阅列表的模型的模型 ID。

  • CID: 如果存在,则确定模型的公司 ID。如果省略,则该模型是蓝牙 SIG 定义的模型。

mesh models cfg krp <NetKeyIdx> [Phase]

获取或设置子网的密钥刷新阶段。

  • NetKeyIdx: 用于获取/设置当前密钥刷新阶段状态的已标识网络密钥。

  • Phase: 新密钥刷新阶段。有效阶段为:

    • 0x00: 正常运行;密钥刷新过程未激活。

    • 0x01: 密钥刷新过程的第一阶段。

    • 0x02: 密钥刷新过程的第二阶段。

mesh models cfg hb-sub [<Src> <Dst> <Per>]

获取或设置心跳订阅参数。节点仅接收与心跳订阅参数匹配的心跳消息。 设置心跳订阅参数(如果存在),或者打印当前的心跳订阅参数,如果在没有参数的情况下调用。

  • Src: 从中接收心跳消息的单播源地址。

  • Dst: 接收心跳消息的目标地址。

  • Per: 心跳订阅周期的对数表示:

    • 0: 心跳订阅将被禁用。

    • 1 to 17: 节点将订阅心跳消息2(period - 1) 秒。

mesh models cfg hb-pub [<Dst> <Count> <Per> <TTL> <Features> <NetKeyIdx>]

获取或设置心跳发布参数。设置心跳发布参数(如果存在),或者打印当前的心跳发布参数,如果在没有参数的情况下调用。

  • Dst: 将心跳消息发布到的目标地址。

  • Count: 要定期发布的心跳消息数量的对数表示:

    • 0: 心跳消息不会定期发布。

    • 1 to 17: 该节点将定期发布( 2(count - 1) 个心跳消息。

    • 255: 心跳消息将无限期地定期发布。

  • Per: 心跳发布周期的对数表示:

    • 0: 心跳消息不会定期发布。

    • 1 to 17: 节点将每隔 2(period - 1) 秒发布心跳消息。

  • TTL: 用于发布心跳消息的 TTL 值( 0x000x7f )。

  • Features: 更改时应触发心跳发布的功能的位字段:

    • Bit 0: 继电器功能。

    • Bit 1: 代理功能。

    • Bit 2: 朋友功能。

    • Bit 3: 低功耗功能。

  • NetKeyIdx: 用于发布心跳消息的网络密钥的索引。

运行状况客户端

运行状况客户端模型是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_Health_CLI 配置选项启用。 这是在 mesh models 子命令列表中作为单独的模块( mesh models health )实现的。如果启用了提到的 shell 配置选项, 并且只要应用程序的模型组合中存在一个或多个运行状况客户端模型,则该模块将在运行状况客户端模型的任何实例上工作。 该 shell 模块可用于触发 Mesh 网络中设备上的运行状况客户端和服务器之间的交互。

默认情况下,当使用运行状况客户端命令时,模块将选择模型组合中的第一个运行状况客户端实例。 要选择特定的运行状况客户端实例,用户可以使用命令 mesh models Health instance setmesh models Health instance-get-all

Health Client 可以使用 mesh target dstmesh target netmesh-target app 设置的常规消息参数来定位特定节点。 如果 shell 目标目标地址设置为零,则目标运行状况客户端将尝试使用其配置的发布参数发布消息。

mesh models health instance set <ElemIdx>

设置要使用的运行状况客户端模型实例。

  • ElemIdx: 运行状况客户端模型的元素索引。

mesh models health instance get-all

打印设备上所有可用的运行状况客户端模型实例。

mesh models health fault-get <CID>

获取公司 ID 的已注册错误列表。

  • CID: 要为其获取故障的公司 ID。

mesh models health fault-clear <CID>

清除公司 ID 的故障列表。

  • CID: 清除故障的公司 ID。

mesh models health fault-clear-unack <CID>

清除公司 ID 的故障列表,而不请求响应。

  • CID: 清除故障的公司 ID。

mesh models health fault-test <CID> <TestID>

调用自检过程,并显示触发的故障列表。

  • CID: 要为其执行自检的公司 ID。

  • TestID: 要执行的测试。

mesh models health fault-test-unack <CID> <TestID>

在不请求响应的情况下调用自检过程。

  • CID: 要为其执行自检的公司 ID。

  • TestID: 要执行的测试。

mesh models health period-get

获取当前 Health Server 发布周期除数。

mesh models health period-set <Divisor>

设置当前 Health Server 发布周期除数。检测到故障时,Health Server 将开始以缩短的间隔发布故障状态。 缩短的间隔由 Health Server 发布周期除数确定:错误发布周期=发布周期/ 2divisor

  • Divisor: 新的 Health Server 发布周期除数

mesh models health period-set-unack <Divisor>

设置当前 Health Server 发布周期除数。检测到故障时,Health Server 将开始以缩短的间隔发布故障状态。 缩短的间隔由 Health Server 发布周期除数确定:错误发布周期=发布周期 / 2divisor

  • Divisor: 新的 Health Server 发布周期除数。

mesh models health attention-get

获取当前 Health Server 关注状态。

mesh models health attention-set <Time(s)>

启用运行状况服务器注意状态一段时间。

  • Time: 注意状态的持续时间,以秒为单位(0255) 。

mesh models health attention-set-unack <Time(s)>

在不请求响应的情况下启用 Health Server 注意状态一段时间。

  • Time: 注意状态的持续时间,以秒为单位(0255)

二进制大型对象(BLOB)传输客户端模型

通过启用 CONFIG_BT_mesh_blob_cli 选项并禁用 CONFIG_mesh_DFU_cli 选件,可以将 BLOB 传输客户端 添加到网格 shell。

mesh models blob cli target <Addr>

为下一个 BLOB 传输添加目标节点。

  • Addr: 目标节点的 BLOB 传输服务器模型的单播地址。

mesh models blob cli bounds [<Group>]

获取所有目标节点的总边界参数。

  • Group: 与目标节点通信时使用的可选组地址。如果省略,BLOB 传输客户端将单独寻址每个目标节点。

mesh models blob cli tx <Id> <Size> <BlockSizeLog> <ChunkSize> [<Group> [<Mode(push, pull)>]]

执行到目标节点的 BLOB 传输。BLOB 传输客户端将向所有目标节点发送虚拟 BLOB,然后在传输完成时发布消息。请注意,必须首先将所有目标节点配置为使用 mesh models blob srv rx 命令接收传输。

  • Id: 64位 BLOB 传输 ID。

  • Size: BLOB 的大小(以字节为单位)。

  • BlockSizeLog: BLOB 块大小的对数表示。最终块大小将为 1 << block size log 字节。

  • ChunkSize: 区块大小(以字节为单位)。

  • Group: 与目标节点通信时使用的可选组地址。如果省略或设置为0,BLOB 传输客户端将单独寻址每个目标节点。

  • Mode: 要使用的 BLOB 传输模式。必须是 push (push-BLOB 传输模式)或 pull (拉动 BLOB 传输模式)。如果省略,默认情况下将使用 push

mesh models blob cli tx-cancel

取消正在进行的 BLOB 传输。

mesh models blob cli tx-get [Group]

确定以前运行的 BLOB 传输的进度。在不执行 BLOB 传输时可以使用。

  • Group:与目标节点通信时使用的可选组地址。如果省略或设置为0,BLOB 传输客户端将单独寻址每个目标节点。

mesh models blob cli tx-suspend

挂起正在进行的 BLOB 传输。

mesh models blob cli tx-resume

恢复暂停的 BLOB 传输。

mesh models blob cli instance-set <ElemIdx>

使用其他 BLOB Transfer Client 模型命令时,请在指定元素上使用 BLOB 传输客户端模型实例。

  • ElemIdx: 查找要使用的 BLOB 传输客户端模型实例的元素。

mesh models blob cli instance-get-all

获取节点上所有 BLOB 传输客户端模型实例的列表。

BLOB 传输服务器模型

通过启用 CONFIG_BT_mesh_blob_srv 选项,可以将 BLOB 传输服务器 添加到网格壳中。BLOB 传输服务器模型能够接收任何 BLOB 数据,但 mesh shell 中的实现将丢弃传入的数据。

mesh models blob srv rx <ID> [<TimeoutBase(10s steps)>]

准备接收 BLOB 传输。

  • ID: 要接收的64位 BLOB 传输 ID。

  • TimeoutBase: 等待客户端消息的可选额外时间,以10秒为增量。

mesh models blob srv rx-cancel

取消正在进行的 BLOB 传输。

mesh models blob srv instance-set <ElemIdx>

使用其他 BLOB Transfer Server 模型命令时,请在指定元素上使用 BLOB 传输服务器模型实例。

  • ElemIdx: 查找要使用的 BLOB Transfer Server 模型实例的元素。

mesh models blob srv instance-get-all

获取节点上所有 BLOB Transfer Server 模型实例的列表。

固件更新客户端型号

通过启用配置选项 CONFIG_BT_mesh_BLOB_CLICONFIG_T_mesh_DFU_CLI ,可以将固件更新客户端模型添加到网格 shell。固件更新客户端通过将虚拟固件更新传输到一组目标节点来演示固件更新分发服务器角色。

mesh models dfu slot add <Size> <FwID> [<Metadata>]

添加可以作为 DFU 映像传输的虚拟 DFU 映像插槽。将为图像插槽分配图像插槽索引,该索引作为响应打印, 并且可以用于在其他命令中引用插槽。要更新图像插槽,请使用 mesh models dfu slot del shell 命令将其删除,然后再次添加它。

  • Size: DFU 映像插槽大小(以字节为单位)。

  • FwID: 固件 ID,格式为十六进制字符串。

  • Metadata: 可选固件元数据,格式为六进制字符串。

mesh models dfu slot del <SlotIdx>

删除给定索引处的 DFU 映像插槽。

  • SlotIdx: 要删除的插槽的索引。

mesh models dfu slot get <SlotIdx>

获取有关 DFU 映像插槽的所有可用信息。

  • SlotIdx: 要获取的插槽的索引。

mesh models dfu cli target <Addr> <ImgIdx>

添加目标节点。

  • Addr: 目标节点的单播地址。

  • ImgIdx: 要在目标节点上寻址的映像索引。

mesh models dfu cli target-state

检查配置的目标地址处设备的 DFU 目标状态。

mesh models dfu cli target-imgs [<MaxCount>]

获取设备上配置的目标地址处的 DFU 映像的列表。

  • MaxCount: 要返回的可选最大图像数。如果省略,则返回图像的数量没有限制。

mesh models dfu cli target-check <SlotIdx> <TargetImgIdx>

检查配置的目标地址处的设备是否将接受从给定 DFU 映像插槽到给定索引处目标节点的 DFU 映像的 DFU 传输,以及效果如何。

  • SlotIdx: 要检查的本地 DFU 映像插槽的索引。

  • TargetImgIdx: 要检查的目标节点的 DFU 映像的索引。

mesh models dfu cli send <SlotIdx> [<Group>]

启动到所有添加的目标节点的 DFU 传输。

  • SlotIdx: 要发送的本地 DFU 映像插槽的索引。

  • Group: 与目标节点通信时使用的可选组地址。如果省略,固件更新客户端将单独寻址每个目标节点。

mesh models dfu cli cancel [<Addr>]

在特定目标节点或所有目标节点上的任何状态下取消 DFU 过程。提供目标节点地址时, 固件更新客户端模型将尝试取消所提供目标节点上的 DFU 过程。否则,固件更新客户端模型将尝试取消所有目标节点上正在进行的 DFU过 程。

  • Addr: 要取消 DFU 过程的目标节点的可选单播地址。

mesh models dfu cli apply

在所有目标节点上应用最新的 DFU 传输。只能在 DFU 传输完成后调用。

mesh models dfu cli confirm

确认最新的 DFU 传输已成功应用于所有目标节点。只能在完成并应用 DFU 传输后调用。

mesh models dfu cli suspend

挂起正在进行的 DFU 传输。

mesh models dfu cli resume

恢复暂停的 DFU 传输。

mesh models dfu cli progress

检查当前传输的进度。

mesh models dfu cli instance-set <ElemIdx>

使用其他固件更新客户端型号命令时,请在指定元素上使用固件更新客户端模型实例。

  • ElemIdx: 查找要使用的固件更新客户端模型实例的元素。

mesh models dfu cli instance-get-all

获取节点上所有固件更新客户端模型实例的列表。

固件更新服务器型号

通过启用配置选项 CONFIG_BT_mesh_BLOB_SRVCONFIG_mesh_DFU_SRV ,可以将固件更新服务器模型添加到网格 shell。 固件更新服务器通过接受任何固件更新来演示固件更新目标角色。网状外壳固件更新服务器将丢弃传入的固件数据, 但在其他方面表现为适当的固件更新目标节点。

mesh models dfu srv applied

将最新的 DFU 传输标记为已应用,只能在完成 DFU 传输后调用,并且分发服务器已请求应用传输。

由于 mesh shell 固件更新服务器并不实际应用传入的固件映像,因此可以使用此命令模拟应用的状态,以通知分发服务器传输成功。

mesh models dfu srv progress

检查当前传输的进度。

mesh models dfu srv rx-cancel

取消传入的 DFU 传输。

mesh models dfu srv instance-set <ElemIdx>

使用其他固件更新服务器型号命令时,请在指定元素上使用固件更新服务器模型实例。

  • ElemIdx: 查找要使用的固件更新服务器模型实例的元素。

mesh models dfu srv instance-get-all

获取节点上所有固件更新服务器模型实例的列表。

固件分发服务器模型

通过启用 CONFIG_BT_mesh_DFD_SRV 配置选项,可以将固件分发服务器模型命令添加到网格 shell。 此模型的 shell 命令镜像固件分发客户端模型发送到服务器的消息。要使用这些命令,应用程序必须实例化固件分发服务器。

mesh models dfd receivers-add <Addr>,<FwIdx>[;<Addr>,<FwIdx>]...

将接收器添加到固件分发服务器。以逗号分隔的 addr、fw_idx 对的列表形式提供接收机, 以分号分隔,例如, 0x0001,0;0x0002,0;0x0004,1 。不要在收件人列表中使用空格。 重复调用该命令将继续填充接收机列表,直到调用 mesh models dfd receivers-delete-all

  • Addr: 接收节点的地址。

  • FwIdx: 要发送到的固件插槽的索引 Addr

mesh models dfd receivers-delete-all

从服务器中删除所有接收者。

mesh models dfd receivers-get <First> <Count>

获取有关固件接收器的信息列表。

  • First: 要从接收器列表中获取的第一个接收器的索引。

  • Count: 要获取其信息的接收者数量。

mesh models dfd capabilities-get

获取服务器的功能。

mesh models dfd get

获取有关电流分布状态、相位和传输参数的信息。

mesh models dfd start <AppKeyIdx> <SlotIdx> [<Group> [<PolicyApply> [<TTL> [<TimeoutBase> [<XferMode>]]]]]

启动固件分发。

  • AppKeyIdx: 用于发送的应用程序索引。公共应用程序密钥应绑定到分发服务器和目标节点上的固件更新和 BLOB 传输模型。

  • SlotIdx: 要发送的本地映像插槽的索引。

  • Group: 与目标节点通信时使用的可选组地址。如果省略,固件分发服务器将单独寻址每个目标节点。若要在更改其他参数时继续单独寻址每个 Target 节点,请将此参数值设置为0。

  • PolicyApply: 对应于更新策略的可选字段。将此设置为 true 将使固件分发服务器在传输完成后立即应用映像。

  • TTL:可选。发送时使用的 TTL 值。默认为配置的默认 TTL。

  • TimeoutBase: 可选的附加值,用于计算固件分发过程中的超时值,以10秒为增量。有关如何使用 timeout_base 计算传输超时的信息,请参阅 传输超时时间 ,默认为0。

  • XferMode: 可选 BLOB 传输模式。1=推送模式(推送-BLOB 传输模式),2=拉送模式(拉送-BLOP 传输模式)。默认为推送模式。

mesh models dfd suspend

挂起正在进行的分发。

mesh models dfd cancel

取消正在进行的分发。

mesh models dfd apply

应用分布式固件。

mesh models dfd fw-get <FwID>

获取有关上传到服务器的固件映像的信息。

  • FwID: 要获取的映像的固件 ID。

mesh models dfd fw-get-by-idx <Idx>

获取有关上载到特定插槽中的服务器的固件映像的信息。

  • Idx: 要从中获取图像的插槽的索引。

mesh models dfd fw-delete <FwID>

从服务器中删除固件映像。

  • FwID: 要删除的映像的固件 ID。

mesh models dfd fw-delete-all

从服务器中删除所有固件映像。

mesh models dfd instance-set <ElemIdx>

使用其他固件分发服务器模型命令时,请在指定元素上使用固件分发服务器型号实例。

  • ElemIdx: 查找要使用的固件分发服务器模型实例的元素。

mesh models dfd instance-get-all

获取节点上所有固件分发服务器模型实例的列表。

DFU 元数据

DFU 元数据命令允许生成元数据,目标节点可以使用该元数据在接受固件之前检查固件。这些命令通过 CONFIG_BT_MESH_DFU_metadata 配置选项启用。

mesh models dfu metadata comp-clear

清除要用于目标节点的存储合成数据。

mesh models dfu metadata comp-add <CID> <ProductID> <VendorID> <Crpl> <Features>

创建合成数据页0的页眉。

  • CID: 由蓝牙 SIG 分配的公司标识符。

  • ProductID: 供应商分配的产品标识符。

  • VendorID: 供应商分配的版本标识符。

  • Crpl: 重播保护列表的大小。

  • Features: 节点以位字段格式支持的功能:

    • 0: 继电器。

    • 1: 代理。

    • 2: 朋友。

    • 3: 低功耗。

mesh models dfu metadata comp-elem-add <Loc> <NumS> <NumV> {<SigMID>|<VndCID> <VndMID>}。。。

添加 Target 节点的元素描述。

  • Loc: 元素位置。

  • NumS: 在元素上实例化的 SIG 模型数。

  • NumV: 在元素上实例化的供应商模型数。

  • SigMID: SIG 型号 ID。

  • VndCID: 供应商型号公司标识符。

  • VndMID: 供应商型号标识符。

mesh models dfu metadata comp-hash-get [<Key(16 hex)>]

生成要在元数据中使用的存储的合成数据的哈希。

  • Key: 用于生成哈希的可选128位密钥,提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

mesh models dfu metadata encode <Major> <Minor> <Rev> <BuildNum> <Size> <CoreType> <Hash> <Elems> [<UserData>]

编码 DFU 的元数据。

  • Major: 固件的主要版本。

  • Minor: 固件的次要版本。

  • Rev: 固件的版本号。

  • BuildNum: 内部版本号。

  • Size: 签名的 bin 文件的大小。

  • CoreType: 位字段格式的新固件内核类型:

    • 0: 应用程序核心。

    • 1: 网络核心。

    • 2: 特定于应用程序的 BLOB。

  • Hash: 使用 mesh models dfu metadata comp Hash get 命令生成的合成数据的哈希。

  • Elems: 新固件上的元素数。

  • UserData: 与元数据一起提供的用户数据。

分段和重新组装(SAR)配置客户端

SAR 配置客户端是可选的网格模型,可以通过 CONFIG_BT_mesh_SAR_CFG_CLI 配置选项启用。 SAR 配置客户端模型用于支持配置支持 SAR 配置服务器模型的节点的较低传输层的行为的功能。

mesh models sar tx-get

发送 SAR 配置发射机获取消息。

mesh models sar tx-set <SegIntStep> <UniRetransCnt> <UniRetransWithoutProgCnt> <UniRetransIntStep> <UniRetransIntInc> <MultiRetransCnt> <MultiRetransInt>

发送 SAR 配置发射机设置消息。

  • SegIntStep: SAR 段间隔步长状态。

  • UniRetransCnt: SAR 单播重新传输计数状态。

  • UniRetransWithoutProgCnt: SAR 单播重新传输无进度计数状态。

  • UniRetransIntStep: SAR 单播重传间隔步长状态。

  • UniRetransIntInc: SAR 单播重传间隔增量状态。

  • MultiRetransCnt: SAR 多播重新传输计数状态。

  • MultiRetransInt: SAR 多播重传间隔状态。

mesh models sar rx-get

发送 SAR 配置接收机获取消息。

mesh models sar rx-set <SegThresh> <AckDelayInc> <DiscardTimeout> <RxSegIntStep> <AckRetransCount>

发送 SAR 配置接收机设置消息。

  • SegThresh: SAR 段阈值状态。

  • AckDelayInc: SAR 确认延迟增量状态。

  • DiscardTimeout: SAR 丢弃超时状态。

  • RxSegIntStep: SAR 接收机段间隔步长状态。

  • AckRetransCount: SAR 确认重新传输计数状态。

专用信标客户端

专用信标客户端模型是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_PRIV_Beacon_CLI 配置选项启用。

mesh models prb priv-beacon-get

获取目标的专用信标状态。可能的值:

  • 0x00: 节点不广播专用信标。

  • 0x01: 节点广播专用信标。

mesh models prb priv-beacon-set <Val(off, on)> <RandInt(10s steps)>

设置目标的专用信标状态。

  • Val: 控制专用信标状态。

  • RandInt: 随机刷新间隔(以10秒的步长),或0以保持当前值。

mesh models prb priv-gatt-proxy-get

获取目标的私有 GATT 代理状态。可能的值:

  • 0x00: 支持专用代理功能,但已禁用。

  • 0x01: 已启用专用代理功能。

  • 0x02: 不支持专用代理功能。

mesh models prb priv-gatt-proxy-set <Val(off, on)>

设置目标的专用 GATT 代理状态。

  • Val: 新的 Private GATT 代理值:

    • 0x00: 禁用专用代理功能。

    • 0x01: 启用专用代理功能。

mesh models prb priv-node-id-get <NetKeyIdx>

获取目标的私有节点标识状态。可能的值:

  • 0x00: 该节点不具有专用节点标识。

  • 0x01: 节点使用专用节点标识进行播发。

  • 0x02: 节点不支持使用专用节点标识进行播发。

  • NetKeyIdx: 用于获取的专用节点标识状态的网络索引。

mesh models prb priv-node-id-set <NetKeyIdx> <State>

设置目标的专用节点标识状态。

  • NetKeyIdx: 用于设置的专用节点标识状态的网络索引。

  • State: 新的专用节点标识值:

    • 0x00: 停止使用专用节点标识进行播发。

    • 0x01: 使用专用节点标识开始播发。

操作码聚合器客户端

操作码聚合器客户端是可选的 Bluetooth Mesh 模型,可以通过 CONFIG_BT_Mesh_OP_AGG_CLI 配置选项启用。 操作码聚合器客户端模型用于支持将访问层消息序列分派到支持操作码聚合服务器模型的节点的功能。

mesh models opagg seq-start <ElemAddr>

启动操作码聚合器序列消息。该命令启动聚合消息的上下文,并将下一个 shell 命令的目标地址设置为 elem_addr

  • ElemAddr: 将处理聚合操作码的元素地址。

mesh models opagg seq-send

发送操作码聚合器序列消息。该命令完成过程,将聚合的序列消息发送到目标节点并清除上下文。

mesh models opagg seq-abort

中止操作码聚合器序列消息。此命令清除操作码聚合器客户端上下文。

远程配置客户端

远程配置客户端是通过 CONFIG_BT_Mesh_RPR_CLI 配置选项启用的可选 Bluetooth Mesh 模型。 远程配置客户端模型通过使用远程配置服务器模型,支持将设备远程配置到网状网络中。

此 shell 模块可用于触发网状网络中设备上的远程配置客户端和远程配置服务器之间的交互。

mesh models rpr scan <Timeout(s)> [<UUID(1-16 hex)>]

开始扫描未配置的设备。

  • Timeout: 扫描超时(秒),必须至少为1秒。

  • UUID: 要扫描的设备 UUID,提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。如果省略,将报告所有设备。

mesh models rpr scan-ext <Timeout(s)> <UUID(1-16 hex)> [<ADType> ... ]

启动未配置设备的扩展扫描。

  • Timeout: 扫描超时(秒)。从 BT_MESH_RPR_EXT_SCAN_TIME_MINBT_MESH_RPR_EXT_SCAN_TIME_MAX 的有效值。

  • UUID: 要开始扩展扫描的设备 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • ADType: 要包括在扫描报告中的 AD 类型列表。必须包含1到 CONFIG_BT_MESH_RPR_AD_TYPES_MAX 条目。

mesh models rpr scan-srv [<ADType> ... ]

启动远程配置服务器的扩展扫描。

  • ADType: 要包括在扫描报告中的 AD 类型列表。必须包含1到 CONFIG_BT_MESH_RPR_AD_TYPES_MAX 条目。

mesh models rpr scan-caps

获取远程配置服务器的扫描功能。

mesh models rpr scan-get

获取远程配置服务器的当前扫描状态。

mesh models rpr scan-stop

停止远程配置服务器上的任何正在进行的扫描。

mesh models rpr provision-remote <UUID(1-16 hex)> <NetKeyIdx> <Addr>

使用 PB 远程配置承载器配置网格节点。

  • UUID: 未配置节点的 UUID。提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • NetKeyIdx: 要提供给未配置节点的网络密钥索引。

  • Addr: 要分配给远程设备的地址。如果 addr 为0,将选择最低的可用地址。

mesh models rpr reprovision-remote <Addr> [<CompChanged(false, true)>]

使用PB远程配置承载重新配置网格节点。

  • Addr:要分配给远程设备的地址。如果 addr 为0,则将选择最低的可用地址。

  • CompChanged: 目标节点已指示其合成数据已更改。默认为 false。

mesh models rpr instance-set <ElemIdx>

使用其他远程配置客户端模型命令时,请在指定元素上使用远程配置客户端模式实例。

  • ElemIdx: 查找要使用的远程配置客户端模型实例的元素。

mesh models rpr instance-get-all

获取节点上所有远程配置客户端模型实例的列表。

配置数据库

配置数据库是可选的网格子系统,可以通过 CONFIG_BT_mesh_CDB 配置选项启用配置数据库仅在配置程序设备上可用, 并允许它们存储有关网状网络的所有信息为了避免冲突,网络中应该只有一个启用了配置数据库的网格节点该节点是配置器, 负责将新节点添加到网络并配置它们。

mesh cdb create [NetKey(1-16 hex)]

创建配置数据库。

  • NetKey: 主网络密钥的可选网络密钥值(NetKeyIndex=0)提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充如果省略,则默认为默认键值。

mesh cdb clear

清除配置数据库中的所有数据

mesh cdb show

显示配置数据库中的所有数据

mesh cdb node-add <UUID(1-16 hex)> <Addr> <ElemCnt> <NetKeyIdx> [DevKey(1-16 hex)]

将网格节点手动添加到配置数据库请注意,如果启用并创建配置数据库,则使用 mesh provisionmesh provision-adv 配置的设备将自动添加。

  • UUID: 节点的128位十六进制 UUID 提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充。

  • Addr:节点的单播地址,或0以自动选择最低可用地址。

  • ElemCnt: 节点上的元素数。

  • NetKeyIdx: 为节点配置的网络密钥。

  • DevKey: 设备的可选128位设备密钥值提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充如果省略,将生成随机值。

mesh cdb node-del <Addr>

从配置数据库中删除网格节点如果可能,在从配置数据库中删除节点之前,应使用 mesh reset 重置节点,以避免意外行为和对网络的不受控制的访问。

  • Addr 要删除的节点的地址。

mesh cdb subnet-add <NetKeyIdx> [<NetKey(1-16 hex)>]

将网络密钥添加到配置数据库网络密钥可以稍后传递给网络中的网格节点请注意,向配置数据库添加密钥不会自动将其添加到本地节点的已知网络密钥列表中。

  • NetKeyIdx: 要添加的网络密钥的密钥索引。

  • NetKey: 可选的128位网络密钥值提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充如果省略,将生成随机值。

mesh cdb subnet-del <NetKeyIdx>

从配置数据库中删除网络密钥。

  • NetKeyIdx: 要删除的网络密钥的密钥索引。

mesh cdb app-key-add <NetKeyIdx> <AppKeyIdx> [<AppKey(1-16 hex)>]

将应用程序密钥添加到配置数据库应用程序密钥可以稍后传递给网络中的网格节点请注意,向配置数据库添加密钥不会自动将其添加到本地节点的已知应用程序密钥列表中。

  • NetKeyIdx: 应用程序密钥绑定到的网络密钥索引。

  • AppKeyIdx: 要添加的应用程序键的键索引。

  • AppKey: 可选的128位应用程序密钥值提供短于16个字节的十六进制字符串将填充数组的 N 个最高有效字节,并对其余字节进行零填充如果省略,将生成随机值。

mesh cdb app-key-del <AppKeyIdx>

从配置数据库中删除应用程序密钥。

  • AppKeyIdx: 要删除的应用程序密钥的密钥索引。

按需专用 GATT 代理客户端

按需专用 GATT 代理客户端模型是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_OD_PRIV_Proxy_CLI 配置选项启用

mesh models od_priv_proxy od-priv-gatt-proxy [Dur(s)]

在活动目标上设置按需专用 GATT 代理状态,或从中获取此状态的值。

  • Dur: 如果给定,请将按需专用 GATT 代理的状态设置为该值(以秒为单位)否则获取该值。

征集 PDU RPL 客户端

请求 PDU RPL 客户端模型是一个可选的网格子系统,可以通过 CONFIG_BT_mesh_SOL_PDU_RPL_CLI 配置选项启用:

mesh models sol_pdu_rpl sol-pdu-rpl-clear <RngStart> <Ackd> [RngLen]

在给定的请求源(SSRC)地址范围内清除活动目标的请求重播保护列表(SRPL)。

  • RngStart: SSRC 范围的起始地址。

  • Ackd: 此参数决定是否发送已确认或未确认的消息。

  • RngLen: 要从征集 RPL 列表中清除的 SSRC 地址的范围长度该参数是可选的;如果不存在,则仅清除单个 SSRC 地址。

帧统计信息

mesh stat get

获取帧统计该命令打印接收帧的数量,以及计划的和成功的传输尝试的数量。

mesh stat clear

清除以前收集的所有统计信息。