ZCL Advanced Platform (ZAP) to mechanizm szablonów node.js oparty na klastrach Matter.
ZAP udostępnia te funkcje w przypadku aplikacji i pakietów SDK Matter:
- Konfigurowanie punktów końcowych, klastrów, atrybutów i innych funkcji urządzenia Matter za pomocą interfejsu GUI.
- Twórz szablony, które automatycznie generują definicje modeli danych, wywołania zwrotne i inny kod źródłowy Matter.
- Tworzenie i używanie wstępnie skonfigurowanych plików ZAP do umieszczenia w pakietach SDK.
![Narzędzie ZAP](https://developers.home.google.com/static/tools/images/zap-overview.png?authuser=0&hl=pl)
Zainstaluj
Otwórz stronę Wersje ZAP.
Poszukaj wersji oznaczonej jako „Najnowsza” (większość z nich będzie oznaczona jako „Przedpremierowa”).
W tej wersji pod nagłówkiem Zasoby wybierz pakiet przeznaczony dla Twojego systemu operacyjnego i pobierz go.
Zainstaluj ZAP na komputerze z systemem Debian lub Ubuntu, wykonując te polecenia:
sudo dpkg -i path/to/zap_installation_package
W systemach Debian i Ubuntu w systemie /usr/bin/
instalowany jest plik binarny zap
. W innych systemach operacyjnych plik binarny może być zainstalowany w innym miejscu. W każdym przypadku sprawdź, czy lokalizacja pliku wykonywalnego znajduje się w zmiennej środowiskowej PATH
.
Pliki ZAP
ZAP używa plików szablonów nazywanych plikami ZAP. Plik ZAP to plik JSON, który definiuje punkty końcowe, polecenia, atrybuty i inne funkcje urządzenia. Pliki ZAP mają nazwy zakończone na .zap
. Na przykład: lighting-app.zap
w wierszu connectedhomeip/examples/lighting-app/lighting-common
.
Plik all-clusters-app.zap
w pliku connectedhomeip/examples/all-clusters-app/all-clusters-common
jest wstępnie skonfigurowany z wykorzystaniem typowych klastrów Matter i 3 punktów końcowych, w tym typu urządzenia do realizacji sieci dodatkowej Matter. To dobry przykład badania różnych konfiguracji klastra.
Uruchom
- Wybierz plik ZAP z jednego z przykładów Matter.
- Z katalogu głównego repozytorium Matter (
connectedhomeip
) uruchom skrypt opakowującyrun_zaptool.sh
, przekazując mu ścieżkę do pliku.zap
.
Na przykład:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
Skonfiguruj
W Ustawieniach
możesz skonfigurować interfejs ZAP, w tym wybrać jasny lub ciemny motyw oraz włączyć lub wyłączyć narzędzia dla programistów.Kliknięcie
Options (Opcje) pozwala wybrać Product Manufacturer, Default Response Policy oraz włączyć lub wyłączyć wykrywanie poleceń.![Opcje globalne ZAP](https://developers.home.google.com/static/tools/images/zap-global-options.png?authuser=0&hl=pl)
Kliknij
Rozszerzenia, aby dodać niestandardowe klastry ZCL lub polecenia do konfiguratora klastrów Zigbee.Użyj
Punkty końcowe
Plik lighting-app.zap
jest wstępnie skonfigurowany z Matterwęzłem głównym (punkt końcowy – 0) i oświetleniem Matter z możliwością przyciemnienia (punkt końcowy – 1).
Punkt końcowy – 0 obejmuje ogólne klastry, które dotyczą całego węzła, np. sieć, przekazywanie, deskryptor, dane logowania operacyjne i klastry OTA.
![Punkt końcowy ZAP 0](https://developers.home.google.com/static/tools/images/zap-endpoint-0.png?authuser=0&hl=pl)
W następnych krokach sprawdzisz i skonfigurujesz punkt końcowy – 1.
MatterPrzyciemnianie światła z przykładu lighting-app
.
Z repozytorium Matter
connectedhomeip
uruchom ZAP.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Kliknij Punkt końcowy – 1, a potem
EDYTUJ.Opcjonalnie: Matter obsługuje różne typy urządzeń. W menu Urządzenie zacznij wpisywać
matter
, aby zmienić urządzenie, a potem kliknij ZAPISZ.
Więcej informacji znajdziesz w artykule Urządzenia i punkty końcowe w Matternarzędziu Primer.
Klastry
Wstępnie zdefiniowane klastry, atrybuty i opcje raportowania są domyślnie włączone w obszarze Punkt końcowy – 1.
Aby wyświetlić tylko włączone klastry, kliknij Punkt końcowy – 1 i wybierz Włączone klastry w menu Pokaż. Możesz też wyszukiwać on
.
![Klastry z włączoną obsługą ZAP](https://developers.home.google.com/static/tools/images/zap-enabled-clusters.png?authuser=0&hl=pl)
Aby włączyć dowolny klaster jako Klient, Serwer lub Klient i serwer, użyj menu Włącz. Możesz też wybrać opcję Nie włączono, aby wyłączyć wstępnie skonfigurowany klaster, który nie ma zastosowania do Twojego typu urządzenia.
![Wyłączenie klastra ZAP](https://developers.home.google.com/static/tools/images/zap-disable-cluster.png?authuser=0&hl=pl)
Więcej informacji znajdziesz w artykule Klastry w narzędziu Matter Primer.
Atrybuty i polecenia
Aby skonfigurować atrybuty i polecenia, wykonaj następujące czynności:
- Zlokalizuj klaster
On/Off
. W tym samym wierszu kliknij ikonę Skonfiguruj
.
Tutaj możesz włączać i wyłączać atrybuty, ustawiać różne opcje atrybutów i wyszukiwać atrybuty
według nazwy.![Atrybuty ZAP](https://developers.home.google.com/static/tools/images/zap-attributes.png?authuser=0&hl=pl)
Kliknij Polecenia, aby skonfigurować działania dla tego klastra. Na przykład klaster Wł./Wył. dla źródła światła będzie zawierać polecenia Wł., Wył. i Przełącz. Niektóre klastry, na przykład klaster Temperature Measurement
, mogą nie mieć powiązanych poleceń.
![Polecenia ZAP](https://developers.home.google.com/static/tools/images/zap-commands.png?authuser=0&hl=pl)
Więcej informacji znajdziesz w artykule Atrybuty i polecenia w Matter Primer.
Generuj pliki źródłowe ZAP
Przykłady kodu Matter wykorzystują kod źródłowy wygenerowany przez ZAP, który jest dostępny w katalogu connectedhomeip/zzz_generated
. Niektóre pliki dotyczą konkretnych aplikacji, a inne ogólne pliki ZAP są grupowane w grupie app-common
.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
Po skonfigurowaniu punktów końcowych możesz wygenerować pliki źródłowe, aby zintegrować je z projektem.
- Kliknij Wygeneruj.
- Wybierz folder, w którym mają zostać zapisane dane wyjściowe ZAP. Na przykład przejdź do adresu
connectedhomeip/zzz_generated/lighting-app/zap-generated
w przypadku stronylighting-app
. - Opcjonalnie. Otwórz pliki w preferowanym IDE.
ZAP generuje definicje, funkcje i inny kod źródłowy, który jest dostosowany do typu urządzenia i konfiguracji ZAP.
![Pliki wygenerowane przez ZAP](https://developers.home.google.com/static/tools/images/zap-gen.png?authuser=0&hl=pl)
Na przykład callback-stub.cpp
zawiera metodę wywołania zwrotnego klastra, która obejmuje tylko te włączone klastry:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
Użyj plików źródłowych ZAP
Typowe pliki źródłowe ZAP, np. Attributes.h
w pliku zzz_generated/app-common/app-common/zap-generated/ids/
, mogą być używane do pobierania i ustawiania atrybutów typu urządzenia:
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");
}
}
Gdy już dowiesz się, jak używać plików ZAP w kodzie źródłowym Matter, możesz zintegrować ZAP na kilka sposobów:
- Wykorzystaj istniejące pliki
zzz_generated
, aby utworzyć nowe przykłady unikalne dla Twoich urządzeń. - Twórz niestandardowe pliki
.zap
dla swoich projektów.
Dostosuj
Pliki ZAP są generowane na podstawie szablonów ZAP.
Gdy używasz polecenia run_zaptool.sh
do uruchamiania ZAP, ten skrypt przekazuje te szablony:
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
określa nazwę szablonu Matter i odpowiadający mu plik wyjściowy używane w przykładach typu Matter.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
Podczas pracy z ZAP możesz wykonać kilka czynności związanych z dostosowaniem rozwiązań Matter:
Zasoby
Dodatkowe zasoby ZAP znajdziesz w repozytorium ZAP (zap
) w GitHubie.