ZCL Advanced Platform (ZAP) — это шаблонизатор node.js, основанный на Matter Clusters .
ZAP предоставляет следующие функции для приложений и SDK Matter :
- Настройте конечные точки Matter , кластеры, атрибуты и другие функции устройства с помощью графического интерфейса.
- Создавайте шаблоны, которые автоматически генерируют определения модели данных, обратные вызовы и другой исходный код Matter .
- Создавайте и используйте предварительно настроенные ZAP-файлы для включения в ваши SDK.

Установить
Перейдите на страницу релизов ZAP .
Найдите релиз с тегом «Последний» (большинство будет иметь тег «Предварительный релиз»).
В этом выпуске под заголовком Assets выберите пакет, предназначенный для вашей операционной системы, и загрузите его.
На компьютере под управлением 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 Secondary Network Commissioning Device Type. Это хороший пример для изучения различных конфигураций кластера.
Бегать
- Выберите 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.

На следующих этапах вы рассмотрите и настроите Endpoint - 1 Matter Dimmable Light из примера lighting-app
.
Из репозитория Matter
connectedhomeip
запустите ZAP.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Нажмите Конечная точка - 1 , затем
ИЗМЕНИТЬ .Необязательно: Matter поддерживает различные типы устройств. В раскрывающемся списке Device начните вводить
matter
, чтобы изменить устройство, затем нажмите SAVE .
Более подробную информацию см. в разделе «Устройства и конечные точки» руководства Matter Primer.
Кластеры
Предопределенные параметры кластеров, атрибутов и отчетов включены в конечной точке - 1 по умолчанию.
Чтобы отобразить только включенные кластеры, щелкните Endpoint - 1 и выберите Enabled Clusters в меню Show . Вы также можете выполнить on
.

Чтобы включить любой кластер как Client , Server или Client & Server , используйте раскрывающийся список Enable . Вы также можете выбрать Not Enabled , чтобы отключить предварительно настроенный кластер, который не применяется к вашему типу устройства.

Чтобы узнать больше, обратитесь к разделу «Кластеры в учебнике Matter Primer».
Атрибуты и команды
Чтобы настроить атрибуты и команды, выполните следующие действия:
- Найдите кластер
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
включает метод обратного вызова кластера, который включает только включенные вами кластеры:
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/
, можно использовать для получения и установки атрибутов типа устройства:
namespace DeviceTemperatureConfiguration {
namespace Attributes {
namespace CurrentTemperature {
static constexpr AttributeId Id = 0x00000000;
} // namespace CurrentTemperature
...
} // namespace Attributes
} // namespace DeviceTemperatureConfiguration
#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.