ZCL Advanced Platform (ZAP)

ZCL Advanced Platform (ZAP) to silnik szablonów node.js oparty na Matter klastrach.

ZAP udostępnia aplikacjom i pakietom SDK Matter te funkcje:

  • Konfigurowanie punktów końcowych Matter, klastrów, atrybutów i innych funkcji urządzenia za pomocą interfejsu graficznego.
  • Tworzenie szablonów, które automatycznie generują definicje modelu danych, funkcje wywołujące i inne Matterkody źródłowe.
  • Tworzenie i używanie skonfigurowanych plików ZAP do dołączania do pakietów SDK.
Narzędzie ZAP

Zainstaluj

  1. Otwórz stronę Wersje ZAP.

  2. Poszukaj wersji oznaczonej jako „Najnowsza” (większość będzie oznaczona jako „Wersja w wersji testowej”).

  3. W tej wersji w sekcji Komponenty wybierz pakiet przeznaczony do Twojego systemu operacyjnego i pobierz go.

  4. Na maszynie z Debianem lub Ubuntu zainstaluj ZAP, uruchamiając:

    sudo dpkg -i path/to/zap_installation_package

W systemie Debian lub Ubuntu Linux plik binarny zap jest instalowany w katalogu /usr/bin/. W innych systemach operacyjnych plik binarny może być zainstalowany w innym miejscu. W każdym przypadku sprawdź, czy plik wykonywalny znajduje się w zmiennej środowiskowej PATH.

Pliki ZAP

ZAP używa plików szablonów, zwanych plikami ZAP. Plik ZAP to plik JSON, który definiuje punkty końcowe, polecenia, atrybuty i inne funkcje urządzenia. Nazwy plików ZAP kończą się na .zap. Na przykład: lighting-app.zapconnectedhomeip/examples/lighting-app/lighting-common.

Plik all-clusters-app.zap, który znajduje się w folderze connectedhomeip/examples/all-clusters-app/all-clusters-common, jest skonfigurowany z użyciem typowych Matter klastrów i 3 punktów końcowych, w tym Matter typu urządzenia do konfiguracji sieci pomocniczej. Jest to dobry przykład na poznanie różnych konfiguracji klastra.

Uruchom

  1. Wybierz plik ZAP z jednego z przykładów Matter.
  2. W katalogu głównym repozytorium Matter (connectedhomeip) uruchom skrypt owijający run_zaptool.sh, przekazując do niego ścieżkę do pliku .zap.

Na przykład:

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap

Skonfiguruj

Ustawieniach możesz skonfigurować interfejs ZAP, w tym wybrać motyw jasny lub ciemny oraz włączyć lub wyłączyć narzędzia dla deweloperów.

Po kliknięciu Opcje możesz wybrać Producenta, domyślną zasadę odpowiedzi oraz włączyć lub wyłączyć usługę CommandDiscovery.

Opcje ZAP globalne

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 (Endpoint - 0) i Matterżarówką z możliwością przyciemniania (Endpoint - 1).

Endpoint - 0 obejmuje ogólne klastry, które są istotne dla całego węzła, na przykład Networking, Commissioning, Descriptor, Operational Credentials i klastry OTA.

ZAP Endpoint 0

W następnych krokach sprawdzisz i skonfigurujesz punkt końcowy 1 Matter Światło z możliwością przyciemniania z przykładu lighting-app.

  1. Uruchom ZAP z repozytorium Matter connectedhomeip.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. Kliknij Endpoint - 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 następnie kliknij ZAPISZ.

    ZAP Select Device

Więcej informacji znajdziesz w artykule Matter na temat urządzeń i urządzeń końcowych.

Klastry

Wstępnie zdefiniowane klastry, atrybuty i opcje raportowania są domyślnie włączone w Endpoint - 1.

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

Klastry z włączonym ZAP

Aby włączyć dowolny klaster jako klient, serwer lub klient i serwer, użyj menu Włącz. Możesz też wybrać Nieaktywna, aby wyłączyć wstępnie skonfigurowany klaster, który nie pasuje do typu urządzenia.

ZAP Disable Cluster

Więcej informacji znajdziesz w artykule Matter na temat grup.

Atrybuty i polecenia

Aby skonfigurować atrybuty i polecenia:

  1. Znajdź klaster On/Off.
  2. W tym samym wierszu kliknij ikonę Konfiguruj .

    ZAP – konfiguracja

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

Atrybuty ZAP

Aby skonfigurować działania dla tego klastra, kliknij Polecenia. Na przykład klaster Włączanie/wyłączanie światła będzie zawierać polecenia Włącz, WyłączPrzełącz. Niektóre klastry, np. klaster Temperature Measurement, mogą nie mieć żadnych powiązanych poleceń.

Polecenia ZAP

Więcej informacji znajdziesz w sekcji Atrybuty i polecenia w artykule Matter: Wprowadzenie.

Generowanie plików źródłowych ZAP

Matter przykłady używają kodu źródłowego wygenerowanego przez ZAP, dostępnego w katalogu connectedhomeip/zzz_generated. Niektóre pliki są specyficzne dla aplikacji, podczas gdy inne ogólne pliki ZAP są grupowane w 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, które chcesz zintegrować z projektem.

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

ZAP generuje definicje, funkcje i inny kod źródłowy dostosowany do typu urządzenia i konfiguracji ZAP.

Pliki wygenerowane przez ZAP

Na przykład callback-stub.cpp zawiera metodę wywołania z klastry, która obejmuje tylko te klastry, które zostały przez Ciebie włączone:

void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
    switch (clusterId)
    {
     ...
     case ZCL_ON_OFF_CLUSTER_ID :
        emberAfOnOffClusterInitCallback(endpoint);
        break;
     ...
    }
}

Korzystanie z plików źródłowych ZAP

Typowych plików źródłowych ZAP, np. Attributes.hzzz_generated/app-common/app-common/zap-generated/ids/, można używać 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ż zrozumiesz, jak pliki ZAP mogą być używane w źródle Matter, możesz je zintegrować na kilka sposobów:

  • Użyj istniejących plików zzz_generated, aby utworzyć nowe przykłady, które są unikalne dla Twoich typów urządzeń.
  • Tworzenie niestandardowych plików .zap do projektów.

Dostosuj

Pliki ZAP są generowane na podstawie szablonów Zap. Gdy używasz run_zaptool.sh do uruchamiania ZAP, 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 definiuje nazwę szablonu Matter i odpowiadający mu plik wyjściowy używany w przykładach Matter.

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

Aby dostosować rozwiązania Matter, wykonaj te czynności podczas pracy z ZAP:

Zasoby

Dodatkowe zasoby ZAP znajdziesz w repozytorium ZAP (zap) w GitHub.