ZCL Advanced Platform (ZAP)

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

ZAP udostępnia poniższe funkcje w przypadku aplikacji Matter oraz Pakiety SDK:

  • Skonfiguruj punkty końcowe, klastry, atrybuty i obiekty Matter z innych funkcji urządzenia za pomocą interfejsu GUI.
  • tworzyć szablony, które automatycznie generują definicje modeli danych; wywołania zwrotne oraz 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. Zapoznaj się z wersjami ZAP. stronę.

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

  3. W tej wersji pod nagłówkiem Zasoby wybierz pakiet. 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 systemie Debian lub Ubuntu Linux plik binarny zap jest instalowany w katalogu /usr/bin/. Wł. w innych systemach operacyjnych, plik binarny może być zainstalowany w innym miejscu. W każdym razie Sprawdź, czy plik wykonywalny znajduje się w środowisku PATH .

Pliki ZAP

ZAP używa plików szablonów, zwanych plikami ZAP. Plik ZAP to plik JSON które definiują punkty końcowe, polecenia, atrybuty oraz inne urządzenia funkcje zabezpieczeń. Pliki ZAP mają nazwy zakończone na .zap. Na przykład: lighting-app.zapconnectedhomeip/examples/lighting-app/lighting-common.

Plik all-clusters-app.zap znaleziony w connectedhomeip/examples/all-clusters-app/all-clusters-common, to wstępnie skonfigurowana z typowymi klastrami Matter i 3 klastrami Punkty końcowe, w tym sieć dodatkowa Matter Typ urządzenia realizującego zlecenie. To dobry przykład do badania różnych klastrów konfiguracji.

Uruchom

  1. Wybierz plik ZAP z jednego z przykładów Matter.
  2. Uruchom w katalogu głównym repozytorium Matter (connectedhomeip) 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 usługi możesz skonfigurować interfejs użytkownika ZAP, w tym jasny lub ciemny motyw; włączenie lub wyłączenie narzędzi dla programistów.

Kliknij Opcje, aby wybrać produkt Producent, Domyślna zasada odpowiedzi oraz włączyć lub wyłączyć polecenie Odkrywanie treści.

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 za pomocą roli Matter Węzeł główny (punkt końcowy – 0) i jasność: Matter (Punkt końcowy – 1).

Punkt końcowy – 0 obejmuje ogólne klastry, które są istotne dla całego węzła, na przykład Sieć, Prowizje, Deskryptor, Dane logowania operacyjne i klastry OTA.

Punkt końcowy ZAP 0

W kolejnych krokach sprawdzisz i skonfigurujesz punkt końcowy – 1 Matter Światło z możliwością przyciemniania 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: Matter obsługuje różne typy urządzeń. W z menu Urządzenie, zacznij pisać 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 Punkt końcowy – 1 i wybierz Włączone klastry z programu . Możesz też przeszukiwać 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 Server, 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.

ZAP Disable Cluster

Więcej informacji: Klastry w grze 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.

    ZAP – konfiguracja

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

Atrybuty ZAP

Kliknij Polecenia, aby skonfigurować działania dla tego klastra. Dla: np. klaster Wł./Wył. dla lampy będzie zawierać Wł., Wył. i Toggle. Niektóre klastry, takie jak klaster Temperature Measurement może nie mieć żadnych powiązanych poleceń.

Polecenia ZAP

Więcej informacji: Atrybuty i polecenia w grze Matter Primer.

Generuj pliki źródłowe ZAP

Matter przykładów korzysta z kodu źródłowego wygenerowanego przez ZAP (dostępny) w katalogu connectedhomeip/zzz_generated. Niektóre pliki są powiązane z konkretną aplikacją, a inne ogólne pliki ZAP są zgrupowane 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 na potrzeby integracji do swojego projektu.

  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 dla lighting-app
  3. Opcjonalnie. Otwórz pliki w preferowanym IDE.

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

Pliki wygenerowane przez ZAP

Na przykład callback-stub.cpp zawiera metodę wywołania zwrotnego klastra, która uwzględnia tylko te klastry, które zostały włączone:

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, na przykład Attributes.h w zzz_generated/app-common/app-common/zap-generated/ids/, można wykorzystać do: pobierz i ustaw atrybuty 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");
    }
}

Wiesz już, jak używać plików ZAP w aplikacji Matter. kodu źródłowego, istnieje kilka sposobów integracji ZAP:

  • Wykorzystaj istniejące pliki zzz_generated, aby utworzyć nowe przykłady, unikalne dla typów urządzeń.
  • Twórz niestandardowe pliki .zap dla swoich projektów.

Dostosuj

Pliki ZAP są generowane z ZAP . Gdy używasz run_zaptool.sh do uruchamiania ZAP, ten skrypt przechodzi w 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, musisz wykonać kilka czynności czynności, które możesz wykonać podczas pracy z ZAP:

Zasoby

Więcej informacji o ZAP znajdziesz tutaj: Repozytorium ZAP (zap) w GitHubie.