ZCL Advanced Platform (ZAP) — это шаблонизатор node.js, основанный на Matter Clusters .
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.
На следующих шагах вы просмотрите и настроите 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 , затем
EDIT .Необязательно: Matter поддерживает различные типы устройств. В раскрывающемся списке «Устройство» начните вводить
matter
, чтобы изменить свое устройство, затем нажмите «СОХРАНИТЬ» .
Чтобы узнать больше, обратитесь к разделу «Устройства и конечные точки» в учебнике Matter Primer.
Кластеры
Предопределенные параметры кластеров, атрибутов и отчетов включены в Endpoint – 1 по умолчанию.
Чтобы отобразить только включенные кластеры, нажмите Конечная точка — 1 и выберите «Включенные кластеры» в меню «Показать» . Вы также можете выполнять поиск on
.
Чтобы включить любой кластер в качестве клиента , сервера или клиента и сервера , используйте раскрывающийся список «Включить» . Вы также можете выбрать «Не включено» , чтобы отключить предварительно настроенный кластер, который не применим к вашему типу устройства.
Чтобы узнать больше, обратитесь к Кластерам в Matter Primer.
Атрибуты и команды
Чтобы настроить атрибуты и команды, выполните следующие шаги:
- Найдите кластер
On/Off
. В той же строке нажмите Настроить
значка.
Здесь вы можете включить или отключить атрибуты, установить различные параметры атрибутов и выполнить
атрибутов по имени. Нажмите «Команды» , чтобы настроить действия для этого кластера. Например, кластер включения/выключения источника света будет включать команды On , Off и Toggle . Некоторые кластеры, например кластер 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
. - Необязательный . Откройте файлы в предпочитаемой вами IDE.
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/
, можно использовать для получения и установки атрибутов типа устройства:
Атрибуты.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.