ZCL Advanced Platform (ZAP)은 Node.js 템플릿 엔진으로, 클러스터 Matter개.
ZAP는 Matter 앱에 다음 기능을 제공합니다. SDK:
- 엔드포인트, 클러스터, 속성 Matter개 구성 다른 장치 기능을 가져오는 것입니다.
- 데이터 모델 정의를 자동으로 생성하는 템플릿을 만듭니다. 콜백 및 기타 Matter 소스 코드를 반환합니다.
- SDK에 포함할 사전 구성된 ZAP 파일을 만들고 사용합니다.
설치
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
로 끝납니다. 예를 들어
connectedhomeip/examples/lighting-app/lighting-common
의 lighting-app.zap
all-clusters-app.zap
파일:
connectedhomeip/examples/all-clusters-app/all-clusters-common
,
일반적인 Matter 클러스터와 3개의 클러스터로 사전 구성됨
Matter 보조 네트워크를 포함한 엔드포인트
커미셔닝 기기 유형. 이는 다양한 클러스터를 탐색하는 데 좋은 예입니다.
구성할 수 있습니다
실행
- Matter 예시 중 하나에서 ZAP 파일을 선택합니다.
- Matter 저장소의 루트 디렉터리 (
connectedhomeip
)에서 다음을 실행합니다.run_zaptool.sh
래퍼 스크립트를.zap
파일의 경로를 전달합니다.
예를 들면 다음과 같습니다.
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
설정
설정에서 다음을 구성할 수 있습니다. ZAP 사용자 인터페이스(밝은 테마 또는 어두운 테마 선택 가능) 개발자 도구를 사용 또는 사용 중지할 수 있습니다.
옵션을 클릭하면 제품을 선택할 수 있습니다. 제조업체, 기본 응답 정책, 명령어 사용 설정 또는 사용 중지 탐색:
확장 프로그램을 클릭하여 맞춤을 추가합니다. Zigbee Clusters Configurator에 명령할 수도 있습니다.
사용
엔드포인트
lighting-app.zap
파일은 Matter로 사전 구성되어 있습니다.
루트 노드 (엔드포인트 - 0) 및 Matter 어둡게 할 수 있는 조명
(엔드포인트 - 1)
엔드포인트 - 0에는 다음과 같은 일반 클러스터가 포함됩니다. 네트워크, 커미셔닝, 설명어 등 전체 노드와 관련된 운영 사용자 인증 정보, OTA 클러스터입니다.
다음 단계에서는 Endpoint - 1(엔드포인트 - 1)을 검토하고 구성합니다.
Matter 예시 lighting-app
의 밝기를 낮출 수 있는 조명.
Matter 저장소
connectedhomeip
에서 ZAP를 실행합니다.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
엔드포인트 - 1을 클릭한 다음
수정.선택사항: Matter는 다양한 기기 유형을 지원합니다. 포함 기기 드롭다운에서
matter
를 입력하여 기기를 변경한 후 저장을 클릭합니다.
자세한 내용은 기기 및 엔드포인트 Matter Primer
클러스터
사전 정의된 클러스터, 속성, 보고 옵션은 엔드포인트 - 1(기본값)
사용 설정된 클러스터만 표시하려면 Endpoint - 1을 클릭하고
표시에서 사용 설정된 클러스터
선택합니다. 클러스터 on
).
클러스터를 클라이언트, 서버 또는 클라이언트 및 서버의 경우 다음과 같습니다. 사용 설정 드롭다운을 선택합니다. 사용 안함을 선택하여 사전 구성된 클러스터가 있습니다.
자세한 내용은 클러스터 Matter Primer
속성 및 명령어
속성 및 명령어를 구성하려면 다음 단계를 완료하세요.
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>
엔드포인트가 구성되면 소스 파일을 생성하여 통합 가져올 수 있습니다
- Generate를 클릭합니다.
- 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/
는 다음과 같은 용도로 사용할 수 있습니다.
기기 유형 속성을 가져오고 설정합니다.
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");
}
}
Matter에서 ZAP 파일을 사용하는 방법을 이해한 후 여러 가지 방법으로 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
)
를 참조하세요.