读取交易
在 Matter 中与节点互动时,最先遇到的用例之一是从另一个节点读取属性,例如从传感器读取温度值。在此类互动中,必须执行的第一个操作是读取请求操作。

读取请求操作
方向:发起方 -> 目标
在此操作中,发起方查询目标,并提供以下信息:
- 属性请求:目标属性的列表,可以包含零个或多个属性。 此列表包含零个或多个指向目标请求的属性的路径。
- 事件请求:指向目标请求的事件的零个或多个路径的列表。
在目标收到读取请求操作后,它将组装一个包含所请求信息的报告数据操作。
报告数据操作
方向:目标 -> 启动者
在此操作中,目标会做出以下响应:
- 属性报告:在读取操作请求中请求的零个或多个报告属性的列表。
- 事件报告:零个或多个报告的事件的列表。
- 抑制响应:一个标志,用于确定是否应抑制对此操作的状态响应。
- 订阅 ID:如果相应报告是订阅交易的一部分,则必须包含用于标识订阅交易的整数。
状态响应操作
方向:目标 -> 启动方或启动方 -> 目标
发起方收到请求的数据后,默认情况下必须生成状态响应操作。此操作由发起方发送,用于确认已收到报告的数据。如果设置了“抑制状态响应”标志,发起方不得发送“状态响应”操作。
当发起方发送状态响应操作或发起方收到启用“禁止响应”标志的报告数据操作时,读取/报告查询即完成。
状态响应操作仅包含一个 status 字段,该字段将确认操作成功或显示失败代码。
读取限制
“读取请求操作”和“报告数据操作”仅限 Unicast 使用。此外,这些请求的路径可能不会以节点组为目标。
状态响应操作仅限 Unicast,无法作为对群播的响应生成。
订阅交易

订阅请求操作
方向:发起方 -> 目标
除了单个读取请求操作之外,发起者还可以订阅属性或事件的定期更新。因此,在订阅交易之后,定期数据更新可能会生成相同的报告数据操作。
订阅互动会在两个节点之间建立关系,其中目标节点会定期向发起方生成报告数据操作。发起方是订阅者,目标是发布者。
订阅请求操作包含:
- 最小间隔下限:报告之间的最小间隔。
- 最大间隔上限:报告之间的最大间隔。
- 属性报告:Read 操作请求中请求的零个或多个报告属性的列表。
- 事件报告:零个或多个报告的事件的列表。
在订阅请求之后,目标会向发起方发送报告数据操作,其中包含第一批报告的数据:预先发布的已发布数据。
然后,发起者会向目标发送状态响应操作,以确认报告数据操作。当目标设备收到报告无错误的状态响应操作后,会发送订阅响应操作。
随后,目标会以协商的间隔定期发送报告数据操作,而发起方会响应这些操作,直到订阅丢失或取消。
订阅响应操作
方向:目标 -> 启动者
这是订阅交易的最后一项操作,标志着流程结束。其中包括:
- 订阅 ID:用于标识订阅的整数。
- 最小时间间隔:报告之间的最终、已确定的最小时间间隔。
- 最大间隔:报告之间的最终确定的最大间隔。
订阅限制
- 订阅请求操作和订阅响应操作是仅限 Unicast 的操作。
- 订阅互动中的所有报告数据操作都必须具有相同的订阅 ID。
- 如果订阅者在协商的最大操作间隔内未收到报告数据操作,则订阅将被终止。
- 根据上一条规则,发布商只需停止发送周期性报告数据操作,即可终止订阅互动。
- 订阅者可以通过使用
INACTIVE_SUBSCRIPTION
状态代码响应报告数据操作来终止订阅互动。