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.
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ń.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.
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
.
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.
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.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ń.
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.
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.