トランザクションの読み取り

Read Transaction

Matter でノードを操作する際の最初のユースケースの 1 つは、センサーの温度値など、別のノードから属性を読み取ることです。このようなインタラクションでは、最初に行う必要があるアクションは読み取りリクエスト アクションです。

読み取りトランザクションのオペレーションのシーケンス
図 1: 読み取りトランザクション

読み取りリクエスト アクション

方向: イニシエータ -> ターゲット

このアクションでは、イニシエータがターゲットにクエリを送信し、次の情報を提供します。

  • 属性リクエスト: ターゲットの属性の 0 個以上のリスト。このリストは、ターゲットの要求された属性への 0 個以上のパスで構成されます。
  • イベント リクエスト: ターゲットがリクエストしたイベントへの 0 個以上のパスのリスト。

読み取りリクエスト アクションがターゲットによって受信されると、ターゲットはリクエストされた情報を含むレポートデータ アクションを組み立てます。

レポート データ アクション

方向: ターゲット -> イニシエータ

このアクションでは、ターゲットは次のように応答します。

  • 属性レポート: 読み取りアクション リクエストでリクエストされた、報告された 0 個以上の属性のリスト。
  • イベント レポート: 報告された 0 個以上のイベントのリスト。
  • Suppress Response: このアクションに対するステータス レスポンスを抑制するかどうかを決定するフラグ。
  • Subscription ID: このレポートが定期購入トランザクションの一部である場合は、定期購入トランザクションの識別に使用される整数を含める必要があります。

ステータス レスポンス アクション

方向: Target -> Initiator または Initiator -> Target

イニシエータは、リクエストされたデータを受け取ると、デフォルトでステータス レスポンス アクションを生成する必要があります。このアクションは、報告されたデータの受信を確認するために、イニシエータから送信されます。フラグ Suppress Status Response が設定されている場合、イニシエータはステータス レスポンス アクションを送信してはなりません。

ステータス レスポンス アクションがイニシエータによって送信されるか、レスポンス抑制フラグが有効な状態でレポートデータ アクションがイニシエータによって受信されると、読み取り/レポート クエリは終了します。

ステータス レスポンス アクションには、オペレーションの成功を通知するか、失敗コードを表示する status フィールドが含まれています。

読み取り制限

Read Request Action と Report Data Action は Unicast 専用です。また、これらのリクエストのパスはノードのグループをターゲットにできません。

ステータス レスポンス アクションは Unicast 専用であり、グループキャストへのレスポンスとして生成することはできません。

Subscription Transaction

定期購入トランザクションのオペレーションのシーケンス
図 2: 定期購入のトランザクション

Subscribe Request Action

方向: イニシエータ -> ターゲット

単一の読み取りリクエスト アクションに加えて、イニシエータは属性またはイベントの定期的な更新をサブスクライブすることもできます。したがって、サブスクリプション トランザクションに続く定期的なデータ更新の結果として、同じレポート データ アクションを生成できます。

Subscription Interaction は、2 つのノード間の関係を作成します。この関係では、Target が Report Data Action を Initiator に定期的に生成します。イニシエータは Subscriber で、ターゲットは Publisher です。

Subscribe Request Action には次のものが含まれます。

  • Min Interval Floor: レポート間の最小間隔。
  • Max Interval Ceiling: レポート間の最大間隔。
  • 属性レポート: 読み取りアクション リクエストでリクエストされた、報告された 0 個以上の属性のリスト。
  • Event Reports: 報告された 0 個以上のイベントのリスト。

Subscribe Request の後、Target は、レポートされたデータの最初のバッチ(プライム公開データ)を含む Report Data Action で Initiator に応答します。

イニシエータは、ターゲットに送信されたステータス レスポンス アクションでレポート データ アクションを応答確認します。ターゲットは、エラーがないことを報告するステータス レスポンス アクションを受信すると、サブスクライブ レスポンス アクションを送信します。

その後、ターゲットはネゴシエートされた間隔でレポートデータ アクションを定期的に送信し、イニシエータはサブスクリプションが失われるかキャンセルされるまで、これらのアクションに応答します。

Subscribe Response Action

方向: ターゲット -> イニシエータ

これは定期購入トランザクションの最後のアクションであり、プロセスが完了します。次の内容が含まれます。

  • サブスクリプション ID: サブスクリプションを識別する整数。
  • 最小間隔: レポート間の最終的な決定された最小間隔。
  • 最大間隔: レポート間の最終的な決定された最大間隔。

購読の制限

  • Subscribe Request Action と Subscribe Response Action は Unicast 専用のアクションです。
  • Subscription Interaction 内のすべての Report Data Action は、同じ Subscription ID を持つ必要があります。
  • サブスクライバーがアクション間の最大ネゴシエート間隔内にレポートデータ アクションを受信しない場合、サブスクリプションは終了します。
  • 前述のルールにより、パブリッシャーは定期的なレポートデータ アクションの送信を停止するだけで、サブスクリプション インタラクションを終了できます。
  • サブスクライバーは、INACTIVE_SUBSCRIPTION ステータス コードでレポート データ アクションに応答することで、サブスクリプション インタラクションを終了できます。