ZCL Advanced Platform (ZAP)

ZCL Advanced Platform (ZAP) ist eine Node.js-Template-Engine, die auf Matter-Clustern basiert.

ZAP bietet die folgenden Funktionen für Matter-Apps und SDKs:

  • Matter-Endpunkte, ‑Cluster, ‑Attribute und andere Gerätefunktionen über eine Benutzeroberfläche konfigurieren
  • Vorlagen erstellen, die automatisch Datenmodelldefinitionen generieren, Callbacks und anderer Matter-Quellcode.
  • Erstellen und verwenden Sie vorkonfigurierte ZAP-Dateien, die Sie in Ihre SDKs einbinden.
ZAP-Tool

Installieren

  1. Rufen Sie die Seite ZAP-Releases auf. Seite.

  2. Suchen Sie nach dem Release mit dem Tag „Neueste“. (die meisten werden mit „Vorabveröffentlichung“ gekennzeichnet).

  3. Wählen Sie unter dieser Version unter der Überschrift Assets das Paket aus. das für Ihr Betriebssystem vorgesehen ist, und laden Sie es herunter.

  4. Installieren Sie ZAP auf einem Computer mit Debian oder Ubuntu, indem Sie folgenden Befehl ausführen:

    sudo dpkg -i path/to/zap_installation_package

Unter Debian oder Ubuntu Linux ist die zap-Binärdatei in /usr/bin/ installiert. An anderen Betriebssystemen ist, kann die Binärdatei an anderer Stelle installiert werden. In jedem Fall Prüfen Sie, ob sich der Speicherort der ausführbaren Datei in der PATH-Umgebung befindet. .

ZAP-Dateien

ZAP verwendet Vorlagendateien, sogenannte ZAP-Dateien. Eine ZAP-Datei ist eine JSON-Datei zur Definition von Endpunkten, Befehlen, Attributen und anderen Geräten Funktionen. ZAP-Dateien haben Namen, die auf .zap enden. Beispiel: lighting-app.zap in connectedhomeip/examples/lighting-app/lighting-common

Die Datei all-clusters-app.zap, die sich in connectedhomeip/examples/all-clusters-app/all-clusters-common ist mit gemeinsamen Matter-Clustern und drei Endpunkte, einschließlich eines sekundären Netzwerks vom Typ Matter Inbetriebnahme des Gerätetyps. Dies ist ein gutes Beispiel, um verschiedene Clusterkonfigurationen zu untersuchen.

Ausführen

  1. Wählen Sie eine ZAP-Datei aus einem der Matter-Beispiele aus.
  2. Führen Sie im Stammverzeichnis des Matter-Repositorys (connectedhomeip) den folgenden Befehl aus: Das Wrapper-Skript run_zaptool.sh und übergeben Sie den Pfad an die Datei .zap.

Beispiel:

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

Einrichten

Unter können Sie die Einstellungen konfigurieren der ZAP-Benutzeroberfläche, einschließlich des hellen oder dunklen Designs, und Entwicklertools aktivieren oder deaktivieren.

Durch Klicken auf Optionen können Sie Ihr Produkt auswählen Hersteller, Standardantwortrichtlinie und Befehl aktivieren oder deaktivieren Auffindbarkeit.

ZAP – Globale Optionen

Klicken Sie auf Erweiterungen, um benutzerdefinierte Erweiterungen hinzuzufügen. ZCL-Cluster oder Befehle an den Zigbee Cluster Configurator

Verwenden

Endpunkte

Die Datei lighting-app.zap ist mit einer Matter vorkonfiguriert. Stammknoten (Endpunkt – 0) und ein dimmbares Matter-Licht (Endpunkt – 1).

Endpunkt – 0 enthält allgemeine Cluster, die die für den gesamten Knoten relevant sind, z. B. Networking, Inbetriebnahme, Deskriptor, Operative Anmeldedaten und OTA-Cluster.

ZAP-Endpunkt 0

In den nächsten Schritten prüfen und konfigurieren Sie Endpunkt – 1 Matter „Dimmbares Licht“ aus dem Beispiel lighting-app.

  1. Führen Sie ZAP aus dem Matter-Repository connectedhomeip aus.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. Klicken Sie auf Endpunkt – 1 und dann auf BEARBEITEN.

  3. Optional: Matter unterstützt verschiedene Gerätetypen. In Gerät öffnen, geben Sie matter ein, um Ihr Gerät zu ändern. Klicken Sie auf SPEICHERN.

    ZAP-Gerät auswählen

Weitere Informationen finden Sie unter Geräte und Endpunkte in der Matter Primer App.

Cluster

Vordefinierte Cluster, Attribute und Berichtsoptionen sind in Endpoint – 1 standardmäßig aktiviert.

Wenn Sie nur aktivierte Cluster aufrufen möchten, klicken Sie auf Endpunkt – 1 und wählen Sie Aktivierte Cluster aus der Anzeige . Sie können auch nach dem Namen von -Clustern suchen, z. B. on.

Cluster mit aktiviertem ZAP

Um einen Cluster als Client, Server oder Client & Server, verwenden Sie im Drop-down-Menü Aktivieren. Sie können auch Nicht aktiviert auswählen, um vorkonfigurierten Cluster, der nicht zu Ihrem Gerätetyp passt.

ZAP Disable Cluster

Weitere Informationen finden Sie unter Cluster in der Matter Primer App ansehen.

Attribute und Befehle

Führen Sie die folgenden Schritte aus, um Attribute und Befehle zu konfigurieren:

  1. Suchen Sie den Cluster On/Off.
  2. Klicken Sie in derselben Zeile auf das Symbol „Konfigurieren“

    ZAP konfigurieren

Hier können Sie Attribute aktivieren oder deaktivieren, verschiedene Attributoptionen festlegen und nach Attributen suchen .

ZAP-Attribute

Klicken Sie auf Befehle, um Aktionen für diesen Cluster zu konfigurieren. Für Der Cluster An/Aus einer Lampe umfasst beispielsweise An, Aus, und Toggle verwenden. Einige Cluster, wie dem Cluster Temperature Measurement, hat möglicherweise keine verknüpften Befehle.

ZAP-Befehle

Weitere Informationen finden Sie unter Attribute und Befehle in der Matter Primer App ansehen.

ZAP-Quelldateien generieren

Matter Beispiele verwenden von ZAP generierten Quellcode, verfügbar im Verzeichnis connectedhomeip/zzz_generated. Einige Dateien sind anwendungsspezifisch, während andere ZAP-Dateien in app-common gruppiert sind.

#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>

Sobald Ihre Endpunkte konfiguriert sind, können Sie Quelldateien für die Integration generieren in Ihr Projekt integrieren.

  1. Klicken Sie auf Erstellen.
  2. Wählen Sie einen Ordner aus, in dem die ZAP-Ausgabe gespeichert werden soll. Rufen Sie beispielsweise connectedhomeip/zzz_generated/lighting-app/zap-generated für lighting-app auf.
  3. Optional: Öffnen Sie die Dateien in Ihrer bevorzugten IDE.

ZAP generiert Definitionen, Funktionen und anderen Quellcode, der an Ihre Gerätetyp und ZAP-Konfiguration.

Von ZAP generierte Dateien

Beispielsweise enthält callback-stub.cpp eine Cluster-Callback-Methode, die enthält nur die Cluster, die Sie aktiviert haben:

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

ZAP-Quelldateien verwenden

Gängige ZAP-Quelldateien, z. B. Attributes.h in zzz_generated/app-common/app-common/zap-generated/ids/, kann für Folgendes verwendet werden: Attribute für Gerätetypen abrufen und festlegen:

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");
    }
}

Sobald Sie wissen, wie ZAP-Dateien in Matter verwendet werden können Quellcodes gibt es mehrere Möglichkeiten, ZAP zu integrieren:

  • Verwenden Sie die vorhandenen zzz_generated-Dateien, um neue, eindeutige Beispiele für Gerätetypen aus.
  • Erstellen Sie benutzerdefinierte .zap-Dateien für Ihre Projekte.

Anpassen

ZAP-Dateien werden aus ZAP generiert Vorlagen. Wenn Sie ZAP mit run_zaptool.sh starten, übergibt dieses Skript Folgendes: Vorlagen:

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 definiert den Namen der Matter-Vorlage und die entsprechende Ausgabedatei, die in Matter-Beispielen verwendet wird.

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

Es gibt mehrere Möglichkeiten, Ihre Matter-Lösungen anzupassen. Schritte, die Sie bei der Arbeit mit ZAP ausführen können:

Ressourcen

Weitere ZAP-Ressourcen finden Sie in der ZAP-Repository (zap) auf GitHub.