ZCL Advanced Platform (ZAP)

ZCL Advanced Platform (ZAP) to mechanizm szablonów Node.js, który opiera się na klastrach Matter.

ZAP udostępnia te funkcje w przypadku aplikacji i pakietów SDK Matter:

  • Konfiguruj punkty końcowe, klastry, atrybuty i inne funkcje urządzenia Matter za pomocą interfejsu GUI.
  • Utwó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 uwzględnienia w pakietach SDK.
Narzędzie ZAP

Zainstaluj

  1. Otwórz stronę Wersje ZAP.

  2. Poszukaj wersji oznaczonej jako „Najnowsza” (większość zostanie oznaczona tagiem „Przedpremierowa”).

  3. W tej wersji pod nagłówkiem Zasoby wybierz pakiet przeznaczony dla Twojego systemu operacyjnego i go pobierz.

  4. Na komputerze z systemem Debian lub Ubuntu zainstaluj ZAP, uruchamiając polecenie:

    sudo dpkg -i path/to/zap_installation_package
    

W przypadku dystrybucji Debian i Ubuntu Linux plik binarny zap jest zainstalowany w systemie /usr/bin/. 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 wykorzystuje pliki szablonów nazywane plikami ZAP. Plik ZAP to plik JSON, który definiuje punkty końcowe, polecenia, atrybuty i inne funkcje urządzenia. Pliki ZAP mają nazwy z końcówką .zap. Na przykład: lighting-app.zap w polu connectedhomeip/examples/lighting-app/lighting-common.

Plik all-clusters-app.zap w connectedhomeip/examples/all-clusters-app/all-clusters-common jest wstępnie skonfigurowany z typowymi klastrami Matter i 3 punktami końcowymi, w tym jako typ urządzenia do uruchamiania sieci dodatkowej Matter. Jest to dobry przykład badania różnych konfiguracji klastrów.

Uruchom

  1. Wybierz plik ZAP z jednego z Matter przykładów.
  2. W katalogu głównym repozytorium Matter (connectedhomeip) uruchom skrypt opakowujący run_zaptool.sh, przekazując go do ścieżki 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.

Kliknij Opcje, aby wybrać producenta produktu i domyślną zasadę odpowiedzi, a także włączyć lub wyłączyć wykrywanie poleceń.

Opcje globalne ZAP

Kliknij Rozszerzenia, aby dodać do konfiguratora klastrów Zigbee niestandardowe klastry lub polecenia ZCL.

Użyj

Punkty końcowe

Plik lighting-app.zap jest wstępnie skonfigurowany z węzłem głównym Matter (punkt końcowy – 0) i Matter z możliwością przyciemnienia światła Matter (punkt końcowy – 1).

Punkt końcowy – 0 obejmuje ogólne klastry, które mają zastosowanie do całego węzła, na przykład sieć, przekazanie, deskryptor, dane uwierzytelniające operacyjne i klastry OTA.

Punkt końcowy ZAP 0

W następnych krokach sprawdzisz i skonfigurujesz Punkt końcowy – 1 MatterPrzyciemniane światło z przykładu lighting-app.

  1. Z repozytorium Matter connectedhomeip uruchom ZAP.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
    
  2. Kliknij Punkt końcowy – 1, a następnie EDYTUJ.

  3. Opcjonalnie: usługa Matter obsługuje różne typy urządzeń. W menu Urządzenie zacznij wpisywać matter, aby zmienić urządzenie, a potem kliknij ZAPISZ.

    Urządzenie ZAP Select

Więcej informacji znajdziesz w sekcji Urządzenia i punkty końcowe w aplikacji Matter Primer.

Klastry

Opcje predefiniowanych klastrów, atrybutów i raportowania są domyślnie włączone w punkcie końcowym – 1.

Aby wyświetlić tylko włączone klastry, kliknij Punkt końcowy – 1 i w menu Pokaż wybierz Włączone klastry. Możesz też wyszukiwać klastry według nazwy, na przykład on.

Klastry włączone z ZAP

Aby włączyć dowolny klaster jako Klient, Serwer lub Klient i serwer, użyj menu Włącz. Możesz też wybrać Nie włączono, aby wyłączyć wstępnie skonfigurowany klaster, który nie ma zastosowania do Twojego typu urządzenia.

Wyłącz klaster ZAP

Aby dowiedzieć się więcej, zapoznaj się z dokumentacją Klastry w aplikacji Matter.

Atrybuty i polecenia

Aby skonfigurować atrybuty i polecenia, wykonaj następujące czynności:

  1. Zlokalizuj klaster On/Off.
  2. W tym samym wierszu kliknij ikonę Skonfiguruj .

    Konfiguracja ZAP

Tutaj możesz włączać i wyłączać atrybuty, ustawiać różne opcje atrybutów i wyszukiwać atrybuty według nazwy.

Atrybuty ZAP

Kliknij Polecenia, aby skonfigurować działania dla tego klastra. Na przykład grupa Wł./Wył. światła będzie zawierać polecenia Wł., Wył. i Przełącz. Z niektórymi klastrami, np. z klastrem Temperature Measurement, mogą nie być powiązane żadne polecenia.

Polecenia ZAP

Aby dowiedzieć się więcej, zapoznaj się z artykułem Atrybuty i polecenia w Matter Primer.

Generowanie plików źródłowych ZAP

Przykłady w Matter wykorzystują kod źródłowy ZAP, który jest dostępny w katalogu connectedhomeip/zzz_generated. Niektóre pliki dotyczą konkretnej aplikacji, a inne ogólne ZAP są pogrupowane w elemencie 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.

  1. Kliknij Wygeneruj.
  2. Wybierz folder, aby zapisać dane wyjściowe ZAP. Na przykład przejdź do właściwości connectedhomeip/zzz_generated/lighting-app/zap-generated w przypadku elementu lighting-app.
  3. Opcjonalnie. Otwórz pliki w wybranym IDE.

ZAP generuje definicje, funkcje i inne kody źródłowe dostosowane do typu urządzenia i konfiguracji ZAP.

Pliki wygenerowane przez ZAP

Na przykład callback-stub.cpp obejmuje metodę wywołania zwrotnego klastra, która uwzględnia tylko włączonych przez Ciebie klastra:

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

Popularne pliki źródłowe ZAP, np. Attributes.h w 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 dowiesz się, jak pliki ZAP mogą być używane w kodzie źródłowym Matter, możesz zintegrować ZAP na kilka sposobów:

  • Użyj istniejących plików zzz_generated, aby utworzyć nowe przykłady dostosowane do Twoich typów urządzeń.
  • Twórz niestandardowe pliki .zap dla swoich projektów.

Dostosuj

Pliki ZAP są generowane na podstawie szablonów ZAP. Gdy uruchamiasz ZAP za pomocą run_zaptool.sh, skrypt przekazuje następujące 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żyty w przykładach Matter.

{
    "path": "templates/app/callback-stub-src.zapt",
    "name": "ZCL callback-stub source",
    "output": "callback-stub.cpp"
}

Oto kilka czynności, które możesz wykonać podczas pracy z ZAP, aby dostosować rozwiązania Matter:

Zasoby

Więcej zasobów ZAP znajdziesz w repozytorium ZAP (zap) na GitHubie.