ZCL Advanced Platform (ZAP)

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

Zainstaluj

  1. Otwórz stronę Wersje ZAP.

  2. Poszukaj wersji oznaczonej jako „Najnowsza” (większość z nich będzie oznaczona jako „Przedpremierowa”).

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

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

  1. Wybierz plik ZAP z jednego z przykładów Matter.
  2. Z katalogu głównego repozytorium Matter (connectedhomeip) uruchom skrypt opakowujący run_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

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

W następnych krokach sprawdzisz i skonfigurujesz punkt końcowy – 1. MatterPrzyciemnianie światła 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 potem EDYTUJ.

  3. Opcjonalnie: 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 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ć klastrów według nazwy, na przykład on.

Klastry z włączoną obsługą ZAP

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

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:

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

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.

  1. Kliknij Wygeneruj.
  2. 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 strony lighting-app.
  3. 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

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.