#ZIGBEE CLUSTER LIBRARY SPECIFICATION
#Chapter 2 Foundation Specification (基础规范)
##2.4 General Command Frames (通用命令框架)
###2.4.7 Configure Reporting Command (配置报告命令Page:56)
-
配置报告命令用于配置集群的一个或多个属性的报告机制。
-
单个集群定义指定哪些属性可用于此报告机制,但是集群的具体实现可能会使附加属性可用。
-
请注意,不能报告数组,结构,集合或行数据类型的属性。
####2.4.7.1 Configure Reporting Command Frame Format 配置报告命令帧格式
- 配置报告命令帧的格式如图2.15所示。
Octets:Variable | Variable | Variable | … | Variable |
---|---|---|---|---|
ZCL header | Attribute reporting configuration record 1 | Attribute reporting configuration record 2 | … | Attribute reporting configuration record n |
Figure 2.15 Format of the Configure Reporting Command Frame |
- 对于要配置的每个属性,应有一个属性报告配置记录。 每个此类记录的格式如图2.16所示。
Octets: 1 | 2 | 0/1 | 0/2 | 0/2 | 0/Variable | 0/2 |
---|---|---|---|---|---|---|
Direction | Attribute identifier | Attribute data type | Minimum reporting interval | Maximum reporting interval | Reportable change | Timeout period |
Figure 2.16 Format of the Attribute Reporting Configuration Record |
#####2.4.7.1.1 ZCL Header Fields ZCL标题字段
- 帧控制字段应指定如下。 如果此命令用于配置为ZCL中的任何集群定义的属性报告,则帧类型子字段应设置为0,如果此命令用于为制造商特定属性配置属性报告,则该类型子字段应设置为0。
- 命令标识符字段应设置为指示报告配置28命令(见表2.9)。
#####2.4.7.1.2 Direction Field 方向字段
- 方向字段指定是否报告属性的值,还是要接收属性的报告。
- 如果该值设置为0x00,则有效载荷中包含属性数据类型字段,最小报告间隔字段,最大报告间隔字段和可报告更改字段,并省略超时周期字段。 记录将发送到集群服务器(或客户端)以配置如何向相同集群的客户端(或服务器)发送报告。
- 如果该值设置为0x01,则超时周期字段被包括在有效载荷中,并且省略了属性数据类型字段,最小报告间隔字段,最大报告间隔字段和可报告改变字段。 该记录被发送到集群客户机(或服务器)以配置它应该如何期望来自同一集群的服务器(或客户端)的报告。
#####2.4.7.1.3 Attribute Identifier Field 属性标志字段
- 如果方向字段为0x00,则此字段包含要报告的属性的标识符。 如果方向字段为0x01,则设备应该报告此属性的值。
#####2.4.7.1.4 Attribute Data Type Field 属性数据类型字段
- 属性数据类型字段包含要报告的属性的数据类型。
#####2.4.7.1.5 Attribute Data Type Field 最小报告间隔字段
- 最小报告间隔字段的长度为16位,并且应包含在指定属性的发布报告之间的最小间隔(以秒为单位)。
- 如果此值设置为0x0000,则不存在最小限制,除非使用此报告机制或适用配置文件的集群规范强加了此限制。
#####2.4.7.1.6 Maximum Reporting Interval Field 最大报告间隔字段
- 最大报告间隔字段的长度为16位,并且应包含指定属性的发布报告之间的最大间隔(以秒为单位)。
- 如果此值设置为0xffff,则设备不会发出指定属性的报告,并且不需要维护该属性的配置信息。 (注意:在使用动态内存分配的实现中,可以回收该信息的内存空间)。
#####2.4.7.1.7 Reportable Change Field 可报告更改字段
- 可报告更改字段应包含将导致发出报告的属性的最小更改。 该字段长度可变。 对于具有“模拟”数据类型的属性(参见表2.16),该字段与属性具有相同的数据类型。 可报告更改字段的符号(如果有)将被忽略。
- 对于“离散”数据类型的属性(请参见表2.16),此字段将被省略。
#####2.4.7.1.8 Timeout Period Field 超时期字段
- 超时周期字段的长度为16位,并且应包含在属性标识符字段中指定的属性的接收报告之间的最大预期时间(以秒为单位)。 如果报告之间的时间超过这个时间,这可能表明报告有问题。
- 如果此值设置为0x0000,则该属性的报告不会超时。
- 请注意,要使服务器/客户端连接使用自动报告正常工作,客户端(或服务器)集群要接收的属性报告设置的超时值必须设置为高于为该属性设置的最大报告间隔 服务器(或客户端)集群。
####2.4.7.2 When Generated 生成时
- 当设备希望配置设备自动报告其一个或多个属性的值或接收此类报告时,将生成报告配置命令。
####2.4.7.3 Effect on Receipt 对回执的影响
-
收到该命令后,设备将尝试处理每个属性报告配置记录,并构造一个配置报告响应命令。 构造命令的每个属性状态记录应包含来自属性报告配置记录的标识符和如下所述评估的状态值。
-
如果方向字段为0x00,表示正在配置报告间隔和可报告更改,则
1)如果在该设备上未实现属性标识符字段中指定的属性,或者如果属性类型设置为数组,结构,集合或包,则设备将构造一个状态字段设置为 UNSUPPORTED_ATTRIBUTE 的属性状态记录。
2)否则,如果此字段中的属性标识符无法报告(因为它不在相关的集群规范中的强制性可报告属性列表中,并且支持也未被实现为制造商选项),则设备将构造一个属性状态 记录状态字段设置为 UNREPORTABLE_ATTRIBUTE 。
3)否则,如果属性数据类型字段不正确,则设备将构造一个状态字段设置为INVALID_DATA_TYPE的属性状态记录。
4)否则,如果最小报告间隔字段小于由相关集群规范或应用简档设置的任何最小值,或者最大报告间隔字段的值为非零并且小于最小报告间隔字段的值,则该设备将构建一个状态字段设置为INVALID_VALUE的属性状态记录。
5)否则,设备应将属性的最小和最大报告间隔和可报告的更改设置为相应字段中包含的值。
6)否则方向字段为0x01,表示正在配置超时时间
7)如果在属性标识符字段中指定的属性标识符的值的报告不能被接收(因为它不在相关集群规范中的强制可报告属性列表中,并且支持也未被实现为制造商选项),或者超时功能不受支持,设备将构造一个状态字段设置为UNSUPPORTED_ATTRIBUTE的属性状态记录。
8)否则设备应将属性标识符字段中指定的属性标识符的超时值设置为超时周期字段的值。请注意,如果超出超时时间,设备将采取的操作是集群和设备相关的,包括可选择不执行任何操作。
-
当所有属性报告配置记录处理完毕后,设备将生成构造的配置报告响应命令。如果在构造的命令中没有属性状态记录,指示所有属性都已成功配置,则命令中将包含单个属性状态记录,状态字段设置为SUCCESS,并省略方向和属性标识符字段。
-
然后,设备将根据Report attributes命令(参见2.4.11.2.1至2.4.11.2.4)根据刚刚设置的配置继续生成或接收属性报告。请参见表2.10“基于方向字段的报告目的地址”来确定“报告属性”命令的目的地
###2.4.8 Configure Reporting Command Command (配置报告命令响应Page:60)
- “配置报告响应”命令用于响应“配置报告”命令。
####2.4.8.1 Configure Reporting Response Command Frame Format 配置报告响应命令帧格式
- 配置报告响应命令帧的格式如图2.17所示
Octets:Variable | 4 | 4 | … | 4 |
---|---|---|---|---|
ZCL header | Attribute status record 1 | Attribute status record 2 | … | Attribute status record n |
Figure 2.1.7 Format of the Configure Reporting Response Command Frame |
- 每个属性状态记录的格式如图2.18所示。
Octets: 1 | 1 | 2 |
---|---|---|
Status | Direction | Attribute identifier |
Figure 2.18 Format of the Attribute Status Record Field |
#####2.4.8.1.1 ZCL Header Fields ZCL 标题字段
- 帧控制字段指定如下。 帧类型子字段应设置为指定一个轮廓宽命令(0b00)。 如果将此命令用作对ZCL中的任何集群定义的属性报告的响应,则制造商特定子字段应设置为0,如果该命令用作为制造商特定属性配置属性报告的响应。
- 命令标识符字段应设置为指示报告配置响应命令(见表2.9)。
#####2.4.8.1.2 Direction Field 方向字段
- 方向字段指定是否报告属性的值(0x00),还是收到属性的报告(0x01)。
- 该字段的所有其他值都保留。
#####2.4.8.1.3 Status Field 状态字段
- 状态字段指定对此属性尝试的配置报告操作的状态,如2.4.7.3中所述。
- 请注意,成功配置的属性不包括属性状态记录,以节省带宽。 在所有属性成功配置的情况下,命令中只能包含一个属性状态记录,状态字段设置为“SUCCESS”,省略了方向和属性标识符字段。
####2.4.8.2 When Generated 生成时
- 配置报告响应命令是响应Configure Reporting命令生成的。
####2.4.8.3 Effect on Receipt 对回执的影响
- 收到此命令后,将为每个属性通知设备成功(或其他)原始配置报告命令。
###2.4.9 Read Reporting Configuration Command (读报告配置命令Page:62)
- “读取报告配置”命令用于读取集群的一个或多个属性的报告机制的配置详细信息。
####2.4.9.1 Read Reporting Configuration Command Frame Format 读取报告配置命令帧格式
- 读报告配置命令帧的格式如图2.19所示
Octets:Variable | 3 | 3 | … | 3 |
---|---|---|---|---|
ZCL header | Attribute record 1 | Attribute record 2 | … | Attribute record n |
Figure 2.1.9 Read Reporting Configuration Command Frame |
- 每个属性记录的格式如图2.20所示。
Octets: 1 | 2 |
---|---|
Direction | Attribute identifier |
Figure 2.20 Format of the Attribute Status Record Field |
#####2.4.9.1.1 ZCL Header Fields ZCL标题字段
- 帧控制字段应指定如下。 帧类型子字段应设置为指定一个轮廓宽命令(0b00)。 如果此命令用于读取为ZCL中的任何集群定义的属性的报告配置,则制造商特定子字段应设置为0,如果该命令用于读取制造商特定属性的报告配置,则该制造商特定子字段应设置为0。
- 命令标识符字段应设置为指示读取报告配置命令(见表2.9)。
#####2.4.9.1.2 Direction Field 方向字段
- 方向字段指定是否报告属性的值(0x00),还是收到属性的报告(0x01)。
- 该字段的所有其他值都保留。
#####2.4.9.1.3 Attribute Identifier Field 属性标识字段
- 属性标识符字段应包含要报告其配置详细信息的属性的标识符。
####2.4.9.2 Effect on Receipt 对回执的影响
- 收到此命令后,设备将生成一条读报告配置17响应命令,该命令包含命令中指定的每18个属性的报告配置的详细信息(参见2.4.10)。
###2.4.10 Read Reporting Configuration Response Command (读报告配置响应命令Page:63)
- “读取报告配置响应”命令用于响应“读取报告配置”命令。
####2.4.10.1 Read Reporting Configuration Response Command Frame Format 读取报告配置响应命令帧格式
- 读取报告配置响应命令帧的格式如图2.21所示
Octets:Variable | Variable | Variable | … | Variable |
---|---|---|---|---|
ZCL header | Attribute reporting configuration record 1 | Attribute reporting configuration record 2 | … | Attribute reporting configuration record n |
Figure 2.21 Format of the Read Reporting Configuration Response Command Frame |
- 对于接收到的读取报告配置命令的每个属性记录,应该有一个属性报告配置记录。 每个此类记录的格式如图2.22所示。
Octets: 1 | 2 | 0/1 | 0/2 | 0/2 | 0/Variable | 0/2 |
---|---|---|---|---|---|---|
Status | Direction | Attribute identifier | Attribute data type | Minimum reporting interval | Maximum reporting interval | Reportable change |
Figure 2.22 Attribute Reporting Configuration Record Field |
#####2.4.10.1.1 ZCL Header Fields ZCL标题字段
- 帧控制字段应指定如下。 帧类型子字段应设置为指定一个轮廓宽命令(0b00)。 如果将此命令用于ZCL中指定的属性,则制造商特定子字段应设置为0,如果该命令用于制造商特定属性,则该字段应设置为0。
- 命令标识符字段应设置为指示读取报告配置响应命令(见表2.9)。
#####2.4.10.1.2 Status Field 状态字段
- 如果该命令的发送方或接收方未实现该属性(取决于方向),则该字段应设置为UNSUPPORTED_ATTRIBUTE。 如果属性被支持,但不能报告,则该字段应设置为UNREPORTABLE_ATTRIBUTE。 否则,该字段应设置为SUCCESS。
- 如果状态字段未设置为SUCCESS,则除了方向和属性标识符字段之外的所有字段将被省略。
#####2.4.10.1.3 Direction Field 方向字段
- 方向字段指定是否报告属性的值(0x00),还是收到属性的报告(0x01)。
- 如果该值设置为0x00,则有效载荷中包含属性数据类型字段,最小报告间隔字段,最大报告间隔字段和可报告更改字段,并省略超时周期字段。 如果该值设置为0x01,则超时周期字段被包括在有效载荷中,并且省略了属性数据类型字段,最小报告间隔字段,最大报告间隔字段和可报告改变字段。
- 该字段的所有其他值都保留。
#####2.4.10.1.4 Attribute Identifier Field 属性标示字段
- 属性标识符字段的长度为16位,应包含报告配置详细信息所适用的属性的标识符。
#####2.4.10.1.5 Minimum Reporting Interval Field 最小报告间隔字段
- 最小报告间隔字段长度为16位,并且应包含在属性标识符字段中指定的属性的发布报告之间的最小间隔(以秒为单位)。 如果没有配置最小报告间隔,该字段将包含值0xffff。
#####2.4.10.1.6 Maximum Reporting Interval Field 最大报告间隔字段
- 最大报告间隔字段长度为16位,并且应包含在属性标识符字段中指定的属性的发布报告之间的最大间隔(以秒为单位)。 如果最大报告间隔尚未配置,则该字段应包含值0xffff。
#####2.4.10.1.7 Reportable Change Field 可报告更改字段
- 可报告更改字段应包含将导致发出报告的属性的最小更改。 对于具有“模拟”数据类型的属性(参见表2.16),该字段与属性具有相同的数据类型。 如果尚未配置可报告更改,则该字段将包含相关数据类型的无效值。
- 对于“离散”数据类型的属性(请参见表2.16),此字段将被省略。
#####2.4.10.1.8 Timeout Period Field 超时期字段
- 超时周期字段的长度为16位,并且应包含在属性标识符字段中指定的属性的接收报告之间的最大预期时间(以秒为单位)。 如果没有配置超时时间,该字段将包含值0xffff。
####2.4.10.2 When Generated 生成时
- 响应于读取报告配置命令生成读取报告配置响应命令。 只能返回符合框架的属性报告配置记录。
####2.4.10.3 Effect on Receipt 对回执的影响
- 收到此命令后,通知原始读取报告配置命令的结果。
- 如果一些尾随属性报告配置记录尚未被返回,由于帧中的空间限制,发起者可以发出进一步的读取报告配置命令来获得它们的值。
###2.4.11 Report Attributes Command (2.4.11报表属性命令Page:65)
- 报告属性命令由设备用于将其一个或多个属性的值报告给另一个设备。 在ZCL其他地方定义的单个集群定义要报告哪些属性,并以什么间隔。 请参见2.4.7“配置报告命令”以确定“报告属性”命令的目的地
####2.4.11.1 Report Attributes Command Frame Format 报告属性命令帧格式
- 报表属性命令帧的格式如图10所示图2.23。
Octets:Variable | Variable | Variable | … | Variable |
---|---|---|---|---|
ZCL header | Attribute report 1 | Attribute report 2 | … | Attribute report n |
Figure 2.23 Format of the Report Attributes Command Frame |
- 每个属性报告字段的格式如图2.24所示.
Octets: 1 | 2 | Variable |
---|---|---|
Attribute identifier | Attribute data type | Attribute data |
Figure 2.24 Format of the Attribute Report Fields |
#####2.4.10.1.1 ZCL Header Fields ZCL标题字段
- 帧控制字段应指定如下。 帧类型子字段应设置为指定一个轮廓宽命令(0b00)。 如果此命令用于报告为ZCL中的任何集群定义的属性,则制造商特定子字段应设置为0,如果该命令用于报告制造商特定的属性,则该制造商的子字段应设置为0。
- 命令标识符字段应设置为指示报告属性命令(见表2.9)。
#####2.4.11.1.2 Attribute Identifier Field 属性标识符域
- 属性标识符字段的长度为16位,并且应包含正在报告的属性的标识符。
#####2.4.11.1.3 Attribute Data Type Field 属性数据类型字段
- 属性数据类型字段包含正在报告的属性的数据类型。
#####2.4.11.1.4 Attribute Data Field 属性数据字段
- 属性数据字段的长度是可变的,并且应该包含要报告的属性的实际值10。
####2.4.11.2 When Generated 生成时
- 当设备配置为将其一个或多个属性的值报告给另一个设备时,以及满足已配置的条件时,将生成报告属性命令。 这些条件在以下各节中有详细说明。
- 报告属性命令也可以随时在设备上本地配置。 除了源,本地创建的报告配置与外部接收的配置没有区别。 本地创建的报告配置将支持与从外部接收的配置相同的服务。
- 如果报告属性命令的目的地无法确定,则不生成该命令。 请参见2.4.7“配置报告命令”以确定“报告属性”命令的目标
#####2.4.11.2.1 Periodic Reporting 定期报告
- 当同一属性的上次报告所经过的时间等于该属性的最大报告间隔(见2.4.7.1.6)时,应生成报告。 未指定配置后第一个报告的时间。
- 如果最大报告间隔设置为0x0000,则不会定期报告,但基于变更的报告仍然可以运行。
- 如果最大报告间隔设置为0xffff,则无论其他条件如何,都不会生成任何报告。
#####2.4.11.2.2 Changes to ‘Discrete’ Attributes 对“离散”属性的更改
- 如果属性具有“离散”数据类型,则当属性经历任何值的更改时,将生成报告。 离散类型是通用数据类型(通常用作位字段集合),逻辑类型,位图类型,枚举,字符串,标识符,IEEE地址和安全密钥(见表2.16)。
- 报告受该属性的最小报告间隔的限制(见2.4.7.1.5)。 报告后,在此间隔期间不会再发送进一步的报告。
#####2.4.11.2.3 Changes to ‘Analog’ Attributes “模拟”属性更改
- 如果属性具有“模拟”数据类型,则当属性经历正反方向上等于或大于该属性的可报告更改的值(请参见2.4.7.1.7)。 更改是从配置“可报告更改”之后的属性值测量的,之后是从先前报告的属性值。
模拟类型是带符号和无符号整数类型,浮点类型和时间类型(见表2.16)。 - 报告受该属性的最小报告间隔的限制(见2.4.7.1.5)。 报告后,在此间隔期间不会再发送进一步的报告。
#####2.4.11.2.4 Cluster Specific Conditions 集群特定条件
- 集群的规范可能会为该集群的特定属性添加其他条件。
#####2.4.11.2.5 Consolidation of Attribute Reporting 属性报告合并
-
为了减少属性报告所需的资源(例如定时器数量),设备可以通过放宽所配置的最小和最大周期来适应报告的定时,如下所述。 通过采用这些技术,设备可以限制任何制造商特定值所需的定时器数量,包括仅使用单个定时器,但是在某些情况下,例如增加网络流量的代价会造成一些副作用。
-
在巩固计时器时,适用一些原则:
1 /属性的最大报告间隔可能会减少,因为通常情况下通常不会导致设备接收报告的频率超过预期 - 典型的报告间隔是秒到分钟。 它可能不会增加,因为这可能与设置的任何超时时间不兼容。
2属性的最小报告间隔也可以减少。 然而,它可能不会增加,因为应用程序可能依赖于在给定的延迟时间内接收对属性的更改的报告。 通常使用最小值来减少网络流量,但这不如确保满足应用定时需求。
3 /从(1),将两个或多个属性的最大报告期合并在一起时,合并报告期间应等于要报告的属性配置的最大间隔的最低值。
4类似地,从(2),将两个或多个属性的最小报告期合并在一起时,合并报告期间应等于要报告的属性的配置最小间隔的最低值。
-
作为第一步,可以合并在同一集群上的属性的定时器。 这种修改应该旨在同时发送同一个群集的不同属性的属性报告,以便将其合并到较少的属性报告中,从而减少网络流量。
-
为了进一步减少定时器的数量,如果需要,可以在集群和端点之间整合定时器。(请注意,通常不可能合并收到的属性报告的超时值(见2.4.7.1.8)。)
####2.4.11.3 Effect on Receipt 对回执的影响
- 在接收到该命令时,向设备通知另一设备的一个或多个属性的最新值。
###2.4.12 Default Response Command 默认响应命令(Page 69)
####2.4.12.1 Default Response Command Frame Format 默认响应命令帧格式
- 默认响应命令帧的格式如26所示图2.25。
Octets: Variable | 1 | 1 |
---|---|---|
ZCL header | Command identifier | Status code |
Figure 2.25 Format of the Default Response Command Frame |
#####2.4.12.1.1 ZCL Header Fields ZCL标题字段
- 帧控制字段应指定如下。 帧类型子字段应设置为指定一个轮廓宽命令(0b00)。 如果响应于为ZCL中的任何集群定义的命令而发送此命令,则制造商特定子字段应设置为0,如果正在响应于制造商特定命令发送此命令,则为1。 (请注意,这需要所有制造商在其指定的任何制造商特定命令集中包含此命令(如此处所定义)。
- 命令标识符子字段应设置为指示默认响应命令(见表2.9)。
#####2.4.12.1.2 Command Identifier Field 命令表示字段
- 命令标识符字段长度为8位,并指定该命令作为响应的接收命令的标识符。
#####2.4.12.1.3 Status Code Field 状态代码字段
- 状态码字段长度为8位,指定在接收到的命令中检测到的SUCCESS或错误的性质。 它将是表2.17中列出的状态枚举之一。
####2.4.12.2 When Generated 生成时
-
当满足以下所有3个条件时,将生成默认响应命令:
1设备接收到不是默认响应命令的单播命令
2使用与接收到的命令相同的事务序列号,
3将其帧控制字段的禁用默认响应位设置为0(见22 2.3.1.1.4)或出现错误时。 -
如果设备通过广播或组播传输接收到错误命令,则该命令将被丢弃,并且不生成默认的响应命令。
-
如果设备不支持接收到的命令的标识符,则将命令标识符字段设置为错误接收的命令29的标识符的值。 错误代码字段应设置为:
UNSUP_CLUSTER_COMMAND,
UNSUP_GENERAL_COMMAND,
UNSUP_MANUF_CLUSTER_COMMAND,
UNSUP_MANUF_GENERAL_COMMAND. -
在上述条件下,响应于所有命令的接收(包括响应命令(如写属性响应命令)),应生成默认响应命令。 然而,默认响应命令不应该被响应于接收另一个默认响应命令而生成。
####2.4.12.3 Effect on Receipt 对回执的影响
- 收到此命令后,设备会以相同的事务序列号通知生成的命令的成功或否定(见2.3.1.3)。