トランザクションの読み取り
Matter でノードを操作する際の最初のユースケースの 1 つは、別のノードからの属性(センサーからの温度値など)の読み取りです。このようなインタラクションで最初に実行する必要があるアクションは、読み取りリクエスト アクションです。
![読み取りトランザクションのオペレーション シーケンス](https://developers.home.google.com/static/matter/primer/images/primer-im-reading.png?hl=ja)
読み取りリクエストのアクション
方向: イニシエータ -> ターゲット
このアクションでは、イニシエータがターゲットをクエリし、以下の情報を提供します。
- Attribute Requests: ターゲットの 0 個以上の属性のリスト。このリストは、ターゲットのリクエストされた属性への 0 個以上のパスで構成されます。
- イベント リクエスト: ターゲットがリクエストしたイベントへの 0 個以上のパスのリスト。
ターゲットは読み取りリクエスト アクションを受け取ると、リクエストされた情報とともにレポートデータ アクションを作成します。
レポートデータ アクション
方向: ターゲット -> イニシエータ
このアクションでは、ターゲットは次のレスポンスを返します。
- Attribute Reports: 読み取りアクション リクエストでリクエストされた、報告された 0 個以上の属性のリスト。
- イベント レポート: 報告された 0 個以上のイベントのリスト。
- レスポンスを抑制: このアクションに対するステータス レスポンスを抑制するかどうかを決定するフラグ。
- 購読 ID: このレポートが購読トランザクションの一部である場合、購読トランザクションの識別に使用される整数を含める必要があります。
ステータス レスポンス アクション
方向: [ターゲット] -> [イニシエータ] または [イニシエータ] -> [ターゲット]
イニシエータはリクエストされたデータを受け取ったら、デフォルトでステータス レスポンス アクションを生成する必要があります。このアクションはイニシエータから送信され、報告されたデータの受信を確認します。Suppress Status Response フラグが設定されている場合、イニシエータはステータス レスポンス アクションを送信できません。
イニシエータがステータス レスポンス アクションを送信するか、イニシエータが [レスポンスの抑制] フラグを有効にしてレポート データ アクションを受信すると、読み取り/レポート クエリは終了します。
ステータス レスポンス アクションに含まれる status フィールドが、オペレーションの成功を確認するか、エラーコードを提示します。
読み取り制限
読み取りリクエスト アクションとレポートデータ アクションは Unicast のみです。さらに、これらのリクエストのパスがノードのグループをターゲットにすることはできません。
ステータス レスポンス アクションは Unicast のみで、グループキャストへのレスポンスとして生成することはできません。
定期購入の取引
![定期購入取引のオペレーション シーケンス](https://developers.home.google.com/static/matter/primer/images/primer-im-subscribing.png?hl=ja)
購読リクエストのアクション
方向: イニシエータ -> ターゲット
イニシエータは、単一の読み取りリクエスト アクションに加えて、属性またはイベントの定期的な更新にサブスクライブすることもできます。したがって、サブスクリプション トランザクションに続く定期的なデータ更新の結果として、同じレポートデータ アクションを生成できます。
サブスクリプションの操作により、2 つのノード間に関係が作成され、ターゲットはイニシエータへのレポートデータ アクションを定期的に生成します。イニシエータはサブスクライバー、ターゲットはパブリッシャーです。
Subscribe Request Action には以下が含まれます。
- Min Interval Floor: レポートの最小間隔。
- Max Interval Ceiling: レポートの最大間隔。
- 属性レポート: 読み取りアクション リクエストでリクエストされた、報告された 0 個以上の属性のリスト。
- イベント レポート: 報告された 0 個以上のイベントのリスト。
サブスクライブ リクエストの後、ターゲットはイニシエータに、レポートデータの最初のバッチ(Primed Published Data)を含むレポートデータ アクションを返します。
イニシエータは、ターゲットに送信されたステータス レスポンス アクションで、レポートデータ アクションの確認応答を行います。ターゲットはステータス レスポンス アクションを受信し、エラーがなくなると、定期購読レスポンス アクションを送信します。
その後、ターゲットは交渉した間隔で Report Data Action を定期的に送信し、イニシエータはサブスクリプションが失われるか解約されるまで、これらのアクションに応答します。
購読レスポンス アクション
方向: ターゲット -> イニシエータ
これは購読取引に対する最後のアクションであり、プロセスは終了します。以下が含まれています。
- サブスクリプション ID: サブスクリプションを識別する整数。
- Min Interval: レポート間の最終的な所定の最小間隔。
- Max Interval: 最終レポート間の決定された最大間隔。
購読の制限
- Subscribe Request Action と Subscribe Response Action は、Unicast のみのアクションです。
- 購読インタラクション内のレポートデータ アクションはすべて、同じサブスクリプション ID を持つ必要があります。
- サブスクライバーが、アクション間の最大交渉間隔内にレポート データ アクションを受信しない場合、定期購入は終了します。
- 前述のルールにより、ニュース メディアは定期的なレポートデータ アクションの送信を停止することで、購読インタラクションを終了できます。
- サブスクライバーは、レポートデータ アクションに
INACTIVE_SUBSCRIPTION
ステータス コードを返すことで、定期購入のインタラクションを終了できます。