Чтение транзакций

Чтение транзакции

Один из первых сценариев использования при взаимодействии с узлами в Matter — это чтение атрибута из другого узла, например, значения температуры с датчика. В таких взаимодействиях первым действием, которое необходимо выполнить, является запрос на чтение.

Последовательность операций транзакции чтения
Рисунок 1: Транзакция чтения

Действие "Прочитать запрос"

Направление: Инициатор -> Цель

В этом действии инициатор запрашивает у цели следующую информацию:

  • Запросы атрибутов : список из нуля или более атрибутов целевого объекта. Этот список состоит из нуля или более путей к запрашиваемым атрибутам целевого объекта.
  • Запросы событий : список из нуля или более путей к запрошенным событиям целевого объекта.

После получения запроса на чтение целевым устройством, оно сформирует запрос на создание отчета, содержащий запрошенную информацию.

Действия с данными отчета

Направление: Цель -> Инициатор

В этом действии цель отвечает следующим образом:

  • Отчеты по атрибутам : список из нуля или более атрибутов, указанных в запросе на чтение.
  • Отчеты о событиях : список событий, по которым не было зарегистрировано ни одного или более событий.
  • Подавление ответа : флаг, определяющий, следует ли подавлять ответ о состоянии на это действие.
  • Идентификатор подписки : если этот отчет является частью транзакции подписки, он должен содержать целое число, используемое для идентификации транзакции подписки.

Действия по реагированию на статус

Направление: либо Цель -> Инициатор, либо Инициатор -> Цель

После получения инициатором запрошенных данных он по умолчанию должен сгенерировать действие «Ответ о состоянии». Это действие отправляется инициатором в подтверждение получения сообщенных данных. Если установлен флаг «Подавлять ответ о состоянии», инициатор не должен отправлять действие «Ответ о состоянии».

После отправки инициатором ответа о состоянии или получения инициатором ответа на запрос данных отчета с включенным флагом подавления ответа, запрос на чтение/составление отчета завершается.

Действие «Ответ на статус» содержит простое поле статуса , которое либо подтверждает успешное выполнение операции, либо отображает код ошибки.

Ознакомьтесь с ограничениями.

Действия «Запрос на чтение» и «Отчет о данных» работают только Unicast . Более того, пути этих запросов не могут быть нацелены на группу узлов.

Действие «Ответ о состоянии» предназначено только Unicast и не может быть сгенерировано в ответ на групповую рассылку.

Подписка

Последовательность операций транзакции подписки
Рисунок 2: Транзакция подписки

Запрос на подписку

Направление: Инициатор -> Цель

Помимо единичного запроса на чтение, инициатор может также подписаться на периодические обновления атрибута или события. Таким образом, одно и то же действие «Данные отчета» может быть сгенерировано в результате периодических обновлений данных, следующих за транзакцией подписки .

Взаимодействие по подписке создает связь между двумя узлами, в которой целевой узел периодически генерирует действия по отправке данных отчета инициатору. Инициатор является подписчиком , а целевой узел — издателем .

Действие «Запрос на подписку» содержит:

  • Минимальный интервал между отчетами: минимальный интервал между ними.
  • Максимальный интервал между отчетами: максимальный интервал между ними.
  • Отчеты по атрибутам: список из нуля или более атрибутов, запрошенных в запросе на чтение.
  • Отчеты о событиях: список событий, по которым не было зарегистрировано ни одного или более событий.

После запроса на подписку целевая система отвечает инициатору действием «Отчет о данных», содержащим первую партию сообщенных данных: предварительно подготовленные опубликованные данные .

Затем инициатор подтверждает действие «Отчет о данных», отправляя целевому объекту ответное сообщение о состоянии. Как только целевой объект получает ответное сообщение о состоянии, в котором нет ошибок, он отправляет ответное сообщение «Подписка».

Впоследствии Целевая сторона будет периодически отправлять Действия по предоставлению отчетов с согласованной периодичностью, а Инициатор будет отвечать на эти Действия до тех пор, пока подписка не будет утеряна или отменена.

Действие ответа на подписку

Направление: Цель -> Инициатор

Это последнее действие в рамках транзакции подписки, завершающее процесс. Оно включает в себя:

  • Идентификатор подписки : целое число, определяющее подписку.
  • Минимальный интервал : окончательно определенный минимальный интервал между отчетами.
  • Максимальный интервал : окончательно определенный максимальный интервал между отчетами.

Ограничения подписки

  • Действия «Запрос на подписку» и «Ответ на подписку» выполняются только Unicast .
  • Все действия с данными отчетов в рамках взаимодействия с подпиской должны иметь один и тот же идентификатор подписки.
  • Если подписчик не получит действие по отправке отчетных данных в течение максимально согласованного интервала между действиями, подписка будет аннулирована.
  • Вследствие предыдущего правила, издатель может прекратить взаимодействие по подписке, просто прекратив отправку периодических действий с данными отчетов.
  • Подписчик может прекратить действие подписки, ответив на действие «Отчет о данных» кодом состояния INACTIVE_SUBSCRIPTION .