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

Прочитать транзакцию

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

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

Действие запроса на чтение

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

В этом действии Инициатор запрашивает Цель, предоставляя:

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

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

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

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

В этом действии Цель отвечает:

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

Статус Ответ Действие

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

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

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

Действие ответа о состоянии просто содержит поле состояния , которое либо подтвердит успешность операции, либо представит код ошибки.

Ограничения чтения

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

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

Транзакция по подписке

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

Подписаться Запросить действие

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

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

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

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

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

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

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

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

Подписаться Ответное действие

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

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

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

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

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