Чтение транзакции
Один из первых вариантов использования узлов в Matter – чтение атрибута из другого узла, например значения температуры от датчика. В таких взаимодействиях первым действием должен быть запрос на чтение.
Действие "Прочитать запрос"
Направление: инициатор -> цель
В этом действии инициатор запрашивает у цели следующие данные:
- Запросы атрибутов – список из нуля или более атрибутов целевого объекта. Этот список состоит из нуля или более путей к запрошенным атрибутам целевого объекта.
- Запросы событий. Список из нуля или более путей к запрошенным событиям целевого объекта.
После того как целевое устройство получит запрос на чтение, оно соберет данные отчета и отправит их в виде действия.
Действие с данными отчета
Направление: Цель -> Инициатор
В этом действии целевой объект отвечает:
- Отчеты об атрибутах – список из нуля или более атрибутов, запрошенных в запросе на чтение.
- Отчеты о событиях – список из нуля или более событий, о которых сообщалось.
- Suppress Response – флаг, определяющий, нужно ли подавлять ответ о статусе на это действие.
- Идентификатор подписки. Если отчет относится к транзакции с подпиской, он должен содержать целое число, которое идентифицирует эту транзакцию.
Действие "Ответ на статус"
Направление: от целевого объекта к инициатору или от инициатора к целевому объекту.
После того как инициатор получит запрошенные данные, по умолчанию он должен создать действие "Ответ о статусе". Это действие отправляется инициатором в подтверждение получения данных. Если установлен флаг Suppress Status Response (Подавить ответ о статусе), инициатор не должен отправлять действие Status Response (Ответ о статусе).
После того как инициатор отправит действие "Ответ о статусе" или получит действие "Данные отчета" с включенным флагом "Подавить ответ", запрос на чтение или отчет будет завершен.
Действие "Ответ о статусе" содержит поле status, в котором указывается, успешно ли выполнена операция, или код ошибки.
Чтение ограничений
Действия "Запрос на чтение" и "Данные отчета" доступны только для Unicast. Кроме того, пути этих запросов не могут быть направлены на группу узлов.
Действие "Ответ о статусе" доступно только для Unicast и не может быть сгенерировано в качестве ответа на групповую передачу.
Транзакция по подписке
Действие "Запрос на подписку"
Направление: инициатор -> цель
Помимо однократного действия "Запрос на чтение", инициатор может также подписаться на периодические обновления атрибута или события. Таким образом, одно и то же действие с данными отчета может быть создано в результате периодического обновления данных, которое следует за транзакцией по подписке.
Взаимодействие с подпиской создает связь между двумя узлами, в которой целевой узел периодически генерирует действия с данными отчета для инициатора. Инициатор – подписчик, а цель – издатель.
Действие "Запрос на подписку" содержит:
- Минимальный интервал – минимальный интервал между отчетами.
- Максимальный интервал – максимальный интервал между отчетами.
- Attribute Reports (Отчеты об атрибутах) – список из нуля или более атрибутов, запрошенных в запросе на действие чтения.
- Отчеты о событиях: список из нуля или более событий, о которых сообщается.
После запроса на подписку целевое устройство отвечает инициатору действием "Данные отчета", содержащим первую партию сообщаемых данных: подготовленные опубликованные данные.
Затем инициатор подтверждает действие с данными отчета с помощью ответа о статусе "Действие отправлено целевому объекту". Когда целевое устройство получает действие "Ответ о статусе" без ошибок, оно отправляет действие "Ответ на подписку".
После этого целевой сервис будет периодически отправлять действие "Данные отчета" с согласованным интервалом, а инициатор будет отвечать на эти действия до тех пор, пока подписка не будет потеряна или отменена.
Действие "Подписаться"
Направление: Цель -> Инициатор
Это последнее действие в транзакции подписки, которое завершает процесс. В рамках сервиса мы предлагаем:
- Идентификатор подписки – целое число, которое идентифицирует подписку.
- Минимальный интервал – окончательный, определенный минимальный интервал между отчетами.
- Максимальный интервал – окончательный, определенный максимальный интервал между отчетами.
Ограничения на подписку
- Действие "Запрос подписки" и действие "Ответ на запрос подписки" являются действиями, доступными только в Unicast.
- У всех действий с данными отчета в рамках взаимодействия с подпиской должен быть один и тот же идентификатор подписки.
- Если подписчик не получит действие с данными отчета в течение максимального согласованного интервала между действиями, подписка будет прекращена.
- В соответствии с предыдущим правилом издатель может прекратить взаимодействие с подпиской, просто перестав отправлять периодические действия с данными отчетов.
- Подписчик может завершить взаимодействие с подпиской, ответив на действие с данными отчета кодом статуса
INACTIVE_SUBSCRIPTION.