Matter Cluster: Level Control Cluster

LevelControl Cluster的作用?

该集群提供了一个接口,用于控制可设置为某个级别的设备特性,例如灯光的亮度、门的关闭程度或加热器的功率输出。

Cluster ID

Hierarchy Role Scope PICS Code
Base Application Endpoint LVL
ID Hierachy Name Conformance
0x0008 Base Level Control
0x001c Derived Pulse Width Modulation P

注意:Pulse Width Modulation cluster是临时性的

Features

Bit Code Feature Default Conformance Summary
0 OO OnOff 1 O Dependency with the On/Off cluster
1 LT Lighting 0 O Behavior that supports lighting applications
2 FQ Frequency 0 P Supports frequency attributes and behavior

On/Off Feature

对于许多应用程序,LevelControl cluster与 On/Off cluster之间需要密切的关系。本节介绍实现此服务器集群以及实施 On/Off 服务器集群的终端节点所需的依赖项。在 FeatureMap 中的 On/Off 功能位存在之前,此集群与 On/Off 集群之间存在依赖关系。

On/Off cluster的 OnOff 属性和 Level Control cluster的 CurrentLevel 属性本质上是独立的变量,因为它们位于不同的群集上。但是,当两个集群都在同一终端节点上实现时,它们之间可能会引入依赖关系。

  • Effect of On/Off Commands on the CurrentLevel attribute(On/Off 命令对 CurrentLevel 属性的影响)

​ OnLevel 属性决定了 On/Off cluster的命令是否对 CurrentLevel 属性产生永久影响。如果定义了此属性(即已实现且不等于 null),则它们确实具有永久效果,否则则不具有。由于淡入淡出/淡入淡出,总是存在临时效果。

​ 收到 On/Off cluster的各种命令时,对 Level Control cluster的影响,例如,与 Level Control 关联时, On/Off 命令的效果表中所述。在此表以及整个群集规范中,“level”表示 CurrentLevel 属性的值。

Command Action On Receipt
On 临时存储 CurrentLevel。将 CurrentLevel 设置为设备允许的最小级别。在 OnOffTransitionTime 时间段内,将 CurrentLevel 更改为 OnLevel,如果未定义 OnLevel,则更改为存储的级别。
Off 临时存储 CurrentLevel。将 CurrentLevel 更改为设备在 OnOffTransitionTime 时间段内允许的最小级别。如果未定义 OnLevel,则将 CurrentLevel 设置为存储的级别。
Toggle 如果 OnOff 属性的值为 FALSE,则按照 On 命令继续。否则,按照 Off 命令继续

上表中描述的目的是,在转换完成后,应恢复在发出任何 On、Off 或 Toggle 命令之前生效的 CurrentLevel。如果收到这些命令中的另一个,则在转换完成之前,应保留并恢复最初存储的 CurrentLevel。

  • Effect of Level Control Commands on the OnOff Attribute(级别控制命令对 OnOff 属性的影响)

​ Level Control 群集中提供了两组命令。它们是相同的,除了第一组(MoveToLevel、Move 和 Step 命令)不应影响 OnOff 属性,而第二组(“with On/Off”变体)应影响。

​ 第一组用于保持 CurrentLevel 和 OnOff 属性之间的独立性,因此更改 CurrentLevel 不会影响 OnOff 属性。例如,这表示带有单独静音按钮的音量控制的行为,或者 “turn to set level and press to turn on on / off” 调光器。

​ 第二组用于链接 CurrentLevel 和 OnOff 属性。当级别降低到最小值时, OnOff 属性会自动变为 FALSE,当级别增加到最小值以上时, OnOff 属性会自动变为 TRUE。例如,这表示没有独立开/关开关的调光器的行为。

​ 对于 Stop 命令,包含 StopWithOnOff 只是为了对称,以便轻松选择一组或另一组命令 – 两个 Stop 命令是相同的,因为对 On/Off 的依赖性是由正在停止的原始命令决定的。

  • Effect of Level Control Commands Depends on OnOff

​ 在引入 Options 属性之前,如果同一端点上 On/Off 集群的 OnOff 属性为 FALSE,则除那些以 ‘with On/Off’ 为后缀的命令外,所有命令都无效。即使 On/Off (OO) 功能集位设置为零,这仍然是正确的。要允许此类命令运行,请参阅下面的 Options 属性。

Attributes

ID Name Type Contraint Quality Default Access Conformance
0x0000 CurrentLevel uint8 MinLevel to MaxLevel SNX null R V M
0x0001 RemainingTime uint16 all 0 R V LT
0x0002 MinLevel uint8 1 to MaxLevel 1 R V [LT]
0x0002 MinLevel uint8 0 to MaxLevel 0 R V [!LT]
0x0003 MaxLevel uint8 MinLevel to 254 254 R V O
0x0004 CurrentFrequency uint16 MinFrequency to MaxFrequency PS 0 R V FQ
0x0005 MinFrequency uint16 0 to MaxFrequency 0 R V FQ
0x0006 MaxFrequency uint16 min Minfrequency 0 R V FQ
0x0010 OnOffTransitionTime uint16 all 0 RW VO O
0x0011 OnLevel uint8 MinLevel to MaxLevel X null RW VO M
0x0012 OnTransitionTime uint16 all X null RW VO O
0x0013 OffTransitionTime uint16 all X null RW VO O
0x0014 DefaultMoveRate uint8 all X MS RW VO O
0x000f Options OptionsBitmap desc 0 RW VO M
0x4000 StartUpCurrentLevel uint8 desc XN MS RW VM LT
  • CurrentLevel Attribute(当前亮度/级别)

该属性暗示着设备当前级别。级别的含义取决于设备。

对于灯类,取值范围:1254,即亮度范围,通常映射为1%100%,算法如下:

1
level = (value - MinLevel) /(MaxLevel - MinLevel) * 100 

例如:value = 200,映射为:79%

  • RemainingTime Attribute

该属性暗示着持续时间直到current命令执行完毕,它以 1/10 秒为单位。

  • MinLevel Attribute(最小亮度,默认为1,不能为0)

该属性暗示着当前级别可以设置的最小值。

  • MaxLevel Attribute(最大亮度,默认为254)

该属性暗示着当前级别可以设置的最大值

  • CurrentFrequency Attribute

该属性暗示着设备处于当前级别时的频率。当前频率的值为0,表示是未知的。

  • MinFrequency Attribute

该属性暗示着当前频率可以设置的最小值。最小频率属性的值应该小于或等于最大频率属性的值。

  • MaxFrequency Attribute

该属性暗示着当前频率可以设置的最小值。最大频率属性的值应该大于或等于最小属性的值。

  • Options Attribute

此属性应指示设备的选定选项。
选项属性是一个位图,它决定了某些集群命令的默认行为。每个依赖于选项属性的命令都应首先构造一个临时的选项位图,该位图在命令处理期间有效。临时选项位图具有与选项属性相同的格式和含义,但包括可能被命令字段覆盖的任何位。

  • OnOffTransitionTime Attribute

此属性应指示当同一个Endpoint上的 OnOff 集群收到On或 Off命令时,移动到目标级别或从目标级别移出所需的时间。以 1/10 秒为单位。

  • OnLevel Attribute(设备开启时的默认亮度)

此属性应指示当同一Endpoint上的 OnOff 集群的 OnOff 属性设置为 TRUE 时, CurrentLevel 属性被设置的值,这是处理 OnOff 集群命令的结果。如果未实现 OnLevel 属性,或将其设置为空值,则它不起作用。有关更多详细信息,请参阅开/关命令对 CurrentLevel 属性的影响。

  • OnTrasitionTime Attribute

此属性应指示当同一 Endpoint 上的 OnOff 集群收到 On 命令时,将当前级别从最低级别移至最高级别所需的时间。它以 1/10 秒为单位指定。如果未实现此属性,或包含空值,则应使用 OnOffTransitionTime。

  • OffTransitionTime Attribute

此属性应指示当同一 Endpoint上 的 OnOff 集群收到 Off 命令时,将当前级别从最高级别移至最低级别所需的时间。它以 1/10 秒为单位指定。如果未实现此属性,或包含空值,则应使用 OnOffTransitionTime。

  • DefaultMoveRate Attribute

当收到带有空值速率参数的移动命令时,此属性应指示移动速率(以单位/秒为单位)。

  • StartUpCurrentLevel Attribute

此属性应指示设备通电时所需的启动级别,并且此级别应反映在 CurrentLevel 属性中。StartUpCurrentLevel 属性的值如下所列:

Value Action on power up
0 将 CurrentLevel 属性设置为设备允许的最小值
null 将 CurrentLevel 属性设置为它之前的值
other values 将CurrentLevel 属性设置为输入的值

此行为不适用于与 OTA 相关的重启。OTA 重启后,CurrentLevel 属性应返回到重启前的值。

Commands

ID Name Direction Respone Access Conformance
0x00 MoveToLevel client –> server Y O M
0x01 Move client –> server Y O M
0x02 Step client –> server Y O M
0x03 Stop client –> server Y O M
0x04 MoveToLevelWithOnOff client –> server Y O M
0x05 MoveWithOnOff client –> server Y O M
0x06 StepWithOnOff client –> server Y O M
0x07 StopWithOnOff client –> server Y O M
0x08 MoveToClosestFrequecny client –> server Y O M
  • MoveToLevel Command

收到此命令后,设备应从其当前级别移至级别字段中指定的值。“级别”的含义取决于设备 - 例如,对于灯来说,它可能表示亮度级别。

移动应尽可能在技术上可行,即不是阶跃函数,并且移动到新级别所需的时间应等于 TransitionTime 字段的值(以十分之一秒为单位),或尽可能接近该值。

如果 TransitionTime 字段的值为 null,则移动到新级别所需的时间应由 OnOffTransitionTime 属性决定。如果不存在 OnOffTransitionTime(可选属性),则设备应尽快移动到新级别。

  • Move Command

收到此命令后,设备应首先创建并处理临时选项位图,如 MoveToLevel 命令中所述。

收到此命令后,设备应从其当前级别开始以连续的方式向上或向下移动,如下所述:

MoveMode Action on Receipt
Up 按照速率字段中给出的速率增加设备的级别。如果级别达到设备允许的最大值,则停止。
Down 按照“速率”字段中指定的速率降低设备的级别。如果级别达到设备允许的最低水平,则停止。
  • Step Command

收到此命令后,设备应首先创建并处理临时选项位图,如 MoveToLevel 命令中所述。

收到此命令后,设备应从其当前级别向上或向下移动,如下所述:

StepMode Action on Receipt
Up 按 StepSize 单位增加 CurrentLevel,或直到达到设备允许的最大级别(如果在此过程中已达到)。在后一种情况下,过渡时间应按比例减少。
Down 将 CurrentLevel 降低 StepSize 单位,或直到达到设备允许的最低级别(如果在此过程中已达到)。在后一种情况下,过渡时间应按比例减少。
  • Stop Command

收到此命令后,设备应首先创建并处理临时选项位图,如 MoveToLevel 命令中所述。

收到此命令后,当前正在执行的任何 MoveToLevel、Move 或 Step 命令(及其“带开/关”变体)都应终止。收到 Stop 命令后,CurrentLevel 的值应保留为原值,RemainingTime 应设置为零。

此命令在命令列表中有两个条目,一个用于 MoveToLevel、Move 和 Step 命令,另一个用于它们的“带 On/Off”对应项。这只是为了对称,以便轻松选择一组或另一组命令 - Stop 命令是相同的,因为 On/Off 的依赖性由要停止的原始命令决定。

  • MoveToClosestFrequecny Command

收到此命令后,设备应将其当前频率更改为请求的频率,或更改为其可以生成的最接近的频率。如果设备无法接近该频率,则应返回默认响应,错误代码为 CONSTRAINT_ERROR。确定请求的频率是否可以近似为支持的频率是制造商特定的决定。

  • With On/Off Commands

MoveToLevelWithOnOff、MoveWithOnOff 和 StepWithOnOff 命令分别与 MoveToLevel、Move 和 Step 命令具有相同的数据字段。