ZCL Advanced Platform (ZAP) – это шаблонный движок Node.js, основанный на кластерах Matter.
ZAP предоставляет следующие функции для приложений и SDK Matter:
- Настраивайте Matter конечных точек, кластеров, атрибутов и других функций устройства в графическом интерфейсе.
- Создавайте шаблоны, которые автоматически генерируют определения модели данных, функции обратного вызова и другой исходный код Matter.
- Создавайте и используйте предварительно настроенные ZAP-файлы, которые можно включать в SDK.
Установить
Перейдите на страницу Выпуски ZAP.
Найдите выпуск с тегом "Последний" (большинство выпусков будут отмечены тегом "Предварительная версия").
В разделе Объекты выберите пакет, предназначенный для вашей операционной системы, и скачайте его.
На компьютере с Debian или Ubuntu установите ZAP, выполнив следующую команду:
sudo dpkg -i path/to/zap_installation_package
В Debian или Ubuntu Linux исполняемый файл zap устанавливается в /usr/bin/. В других операционных системах исполняемый файл может быть установлен в другом месте. В любом случае проверьте, указано ли местоположение исполняемого файла в переменной среды PATH.
ZAP-файлы
ZAP использует файлы шаблонов, называемые ZAP-файлами. Файл ZAP – это файл JSON, в котором определены конечные точки, команды, атрибуты и другие функции устройства. Названия ZAP-файлов заканчиваются на .zap. Например, lighting-app.zap в connectedhomeip/examples/lighting-app/lighting-common.
Файл all-clusters-app.zap, найденный в connectedhomeip/examples/all-clusters-app/all-clusters-common, предварительно настроен с распространенными кластерами Matter и тремя конечными точками, включая тип устройства для ввода в эксплуатацию вторичной сети Matter. Это хороший пример для изучения различных конфигураций кластера.
Выполнить
- Выберите ZAP-файл из одного из Matter примеров.
- В корневом каталоге репозитория Matter (
connectedhomeip) запустите скрипт-оберткуrun_zaptool.sh, передав ему путь к файлу.zap.
Пример:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zapНастроить
В разделе Настройки можно настроить интерфейс ZAP, в том числе выбрать светлую или тёмную тему и включить или отключить инструменты разработчика.
Нажав на значок Варианты, вы сможете выбрать производителя продукта, политику ответов по умолчанию, а также включить или отключить обнаружение команд.
Нажмите Расширения, чтобы добавить специальные кластеры ZCL или команды в конфигуратор кластеров Zigbee.
Использовать
Конечные точки
Файл lighting-app.zap предварительно настроен с Matter
корневым узлом (конечная точка 0) и Matterдиммируемым светильником (конечная точка 1).
Конечная точка 0 включает общие кластеры, относящиеся ко всему узлу, например кластеры сети, ввода в эксплуатацию, дескриптора, учетных данных для работы и OTA.
На следующих шагах вы проверите и настроите конечную точку 1
Matter диммируемого светильника из примера lighting-app.
Запустите ZAP из репозитория Matter
connectedhomeip.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapНажмите Конечная точка 1, а затем Изменить.
Необязательно. Matter поддерживает различные типы устройств. В раскрывающемся списке Устройство начните вводить
matter, чтобы изменить устройство, а затем нажмите Сохранить.
Подробнее об устройствах и конечных точках в Matter.
Кластеры
Стандартные кластеры, атрибуты и параметры отчетов включены в Endpoint - 1 по умолчанию.
Чтобы отобразить только включенные кластеры, нажмите Конечная точка – 1 и выберите Включенные кластеры в меню Показать. Вы также можете искать кластеры по названию, например on.
Чтобы включить любой кластер в качестве клиента, сервера или клиента и сервера, используйте раскрывающееся меню Включить. Вы также можете выбрать Не включено, чтобы отключить предварительно настроенный кластер, который не подходит для вашего типа устройства.
Подробнее о кластерах …Matter
Атрибуты и команды
Чтобы настроить атрибуты и команды, выполните следующие действия:
- Найдите кластер
On/Off. В той же строке нажмите на значок "Настроить" .
Здесь можно включить или отключить атрибуты, задать различные параметры атрибутов и найти атрибуты по названию.
Нажмите Команды, чтобы настроить действия для этого кластера. Например, кластер Вкл./выкл. для светильника будет включать команды Включить, Выключить и Переключить. Некоторые кластеры, например кластер Temperature Measurement, могут не иметь связанных команд.
Подробнее об атрибутах и командах рассказывается в Matter Primer.
Как создать исходные файлы ZAP
В примерах Matter используется исходный код, сгенерированный ZAP, который доступен в каталоге connectedhomeip/zzz_generated. Некоторые файлы относятся к определенным приложениям, а другие, общие файлы ZAP, сгруппированы в app-common.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
После настройки конечных точек можно сгенерировать исходные файлы для интеграции в проект.
- Нажмите на значок Создать.
- Выберите папку, в которой будут сохранены результаты сканирования ZAP. Например, перейдите на страницу
connectedhomeip/zzz_generated/lighting-app/zap-generatedдляlighting-app. - Это необязательный параметр. Откройте файлы в своей интегрированной среде разработки.
ZAP создает определения, функции и другой исходный код, который подходит для вашего типа устройства и конфигурации ZAP.
Например, callback-stub.cpp включает метод обратного вызова Cluster, который содержит только кластеры, которые вы включили:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
Как использовать исходные файлы ZAP
Обычные исходные файлы ZAP, например Attributes.h в zzz_generated/app-common/app-common/zap-generated/ids/, можно использовать для получения и установки атрибутов типа устройства:
Attributes.h
namespace DeviceTemperatureConfiguration {
namespace Attributes {
namespace CurrentTemperature {
static constexpr AttributeId Id = 0x00000000;
} // namespace CurrentTemperature
...
} // namespace Attributes
} // namespace DeviceTemperatureConfiguration
main.cpp
#include <app-common/zap-generated/att-storage.h>
#include <app-common/zap-generated/attribute-id.h>
#include <app-common/zap-generated/attribute-type.h>
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/callback.h>
#include <app-common/zap-generated/cluster-id.h>
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/command-id.h>
using namespace ::chip;
using namespace ::chip::app::Clusters;
static void InitServer(intptr_t context)
{
...
// Sets temperature to 20C
int16_t temperature = 2000;
auto status = DeviceTemperatureConfiguration::Attributes::CurrentTemperature::Set(1, temperature);
if (status != EMBER_ZCL_STATUS_SUCCESS)
{
ChipLogError(Shell, "Temp measurement set failed");
}
}
После того как вы поймете, как использовать файлы ZAP в исходном коде Matter, вы сможете интегрировать ZAP несколькими способами:
- Используйте существующие файлы
zzz_generated, чтобы создать новые примеры, уникальные для ваших типов устройств. - Создавайте собственные файлы
.zapдля своих проектов.
Настроить
Файлы ZAP создаются на основе шаблонов ZAP.
Когда вы используете run_zaptool.sh для запуска ZAP, этот скрипт передает следующие шаблоны:
node src-script/zap-start.js --logToStdout \
--gen "$CHIP_ROOT/src/app/zap-templates/app-templates.json" \
--zcl "$CHIP_ROOT/src/app/zap-templates/zcl/zcl.json" \
"${ZAP_ARGS[@]}"
Файл templates.json определяет название шаблона Matter и соответствующий выходной файл, используемый в примерах Matter.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
Чтобы настроить решения Matter, при работе с ZAP можно выполнить следующие действия:
- Создавать шаблоны ZAP.
- Интегрируйте ZAP в SDK.
Ресурсы
Дополнительные ресурсы ZAP можно найти в
репозитории ZAP
(zap)
на GitHub.