ZCL Advanced Platform (ZAP)

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

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

  • Konfigurieren Sie Endpunkte, Cluster, Attribute und andere Gerätefunktionen von Matter über eine GUI-Oberfläche.
  • Erstellen Sie Vorlagen, die Datenmodelldefinitionen, Callbacks und anderer Matter-Quellcode automatisch generieren.
  • Erstellen und verwenden Sie vorkonfigurierte ZAP-Dateien, die Sie Ihren SDKs hinzufügen können.
ZAP-Tool

Installieren

  1. Rufen Sie die Seite ZAP-Releases auf.

  2. Suche nach der Veröffentlichung mit der Kennzeichnung „Neueste“ (meist mit „Vorabveröffentlichung“).

  3. Wählen Sie bei diesem Release unter der Überschrift Assets das für Ihr Betriebssystem vorgesehene Paket aus und laden Sie es herunter.

  4. Installieren Sie ZAP auf einem Computer mit Debian oder Ubuntu. Führen Sie dazu folgenden Befehl aus:

    sudo dpkg -i path/to/zap_installation_package
    

Unter Debian oder Ubuntu Linux ist das Binärprogramm zap in /usr/bin/ installiert. Unter anderen Betriebssystemen kann das Binärprogramm an anderer Stelle installiert werden. In jedem Fall müssen Sie prüfen, ob sich der Speicherort der ausführbaren Datei in der Umgebungsvariablen PATH befindet.

ZAP-Dateien

ZAP verwendet Vorlagendateien, sogenannte ZAP-Dateien. Eine ZAP-Datei ist eine JSON-Datei, die Endpunkte, Befehle, Attribute und andere Gerätefunktionen definiert. 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 in connectedhomeip/examples/all-clusters-app/all-clusters-common ist mit gängigen Matter-Clustern und drei Endpunkten vorkonfiguriert, einschließlich eines sekundären Matter-Gerätetyps für die Netzwerkinbetriebnahme. Dies ist ein gutes Beispiel für die Untersuchung verschiedener Clusterkonfigurationen.

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) das Wrapper-Skript run_zaptool.sh aus und übergeben Sie den Pfad zur Datei .zap.

Beispiel:

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

Einrichten

Unter Einstellungen können Sie die ZAP-Benutzeroberfläche konfigurieren, einschließlich der Auswahl zwischen hellem oder dunklem Design und Aktivierung oder Deaktivierung der Entwicklertools.

Wenn Sie auf Optionen klicken, können Sie Ihren Produkthersteller und Ihre Standardantwortrichtlinie auswählen und die Befehlserkennung aktivieren oder deaktivieren.

Globale ZAP-Optionen

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

Verwenden

Endpunkte

Die Datei lighting-app.zap ist mit einem Matter-Root-Knoten (Endpunkt – 0) und einem dimmbaren Matter-Licht (Endpunkt – 1) vorkonfiguriert.

Endpunkt – 0 umfasst allgemeine Cluster, die für den gesamten Knoten relevant sind, z. B. Netzwerk, Inbetriebnahme, Deskriptor, Betriebsanmeldedaten und OTA-Cluster.

ZAP-Endpunkt 0

In den nächsten Schritten überprü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. Beginnen Sie im Drop-down-Menü Gerät mit der Eingabe von matter, um Ihr Gerät zu ändern, und klicken Sie dann auf SPEICHERN.

    ZAP – Gerät auswählen

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

Cluster

Vordefinierte Cluster, Attribute und Optionen für Berichte sind in Endpunkt – 1 standardmäßig aktiviert.

Wenn nur aktivierte Cluster angezeigt werden sollen, klicken Sie auf Endpunkt – 1 und wählen Sie im Menü Anzeigen die Option Aktivierte Cluster aus. Sie können -Cluster auch nach Namen suchen, z. B. on.

ZAP-aktivierte Cluster

Verwenden Sie das Drop-down-Menü Aktivieren, um einen beliebigen Cluster als Client, Server oder Client und Server zu aktivieren. Sie können auch Nicht aktiviert auswählen, um einen vorkonfigurierten Cluster zu deaktivieren, der nicht für Ihren Gerätetyp gilt.

ZAP-Cluster deaktivieren

Weitere Informationen finden Sie in der Matter-Primer unter Cluster.

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

Hier können Sie Attribute aktivieren oder deaktivieren, verschiedene Attributoptionen festlegen und Attribute suchen anhand des Namens.

ZAP-Attribute

Klicken Sie auf Befehle, um Aktionen für diesen Cluster zu konfigurieren. Der Ein/Aus-Cluster für eine Lampe umfasst beispielsweise die Befehle Ein, Aus und Ein/Aus. Einige Cluster, wie der Cluster Temperature Measurement, haben möglicherweise keine verknüpften Befehle.

ZAP-Befehle

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

ZAP-Quelldateien generieren

In Matter-Beispielen wird ZAP-generierter Quellcode verwendet, der im Verzeichnis connectedhomeip/zzz_generated verfügbar ist. Einige Dateien sind anwendungsspezifisch, während andere allgemeine ZAP-Dateien in app-common gruppiert werden.

#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 generieren und in Ihr Projekt einbinden.

  1. Klicken Sie auf Erstellen.
  2. Wählen Sie einen Ordner aus, um die ZAP-Ausgabe zu speichern. Gehen Sie beispielsweise zu connectedhomeip/zzz_generated/lighting-app/zap-generated für lighting-app.
  3. Optional: Öffnen Sie die Dateien in einer IDE.

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

ZAP-generierte Dateien

Beispielsweise enthält callback-stub.cpp eine Cluster-Callback-Methode, die nur die von Ihnen aktivierten Cluster enthält:

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

ZAP-Quelldateien verwenden

Gängige ZAP-Quelldateien wie Attributes.h in zzz_generated/app-common/app-common/zap-generated/ids/ können zum Abrufen und Festlegen von Gerätetypattributen verwendet werden:

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

Wenn Sie wissen, wie ZAP-Dateien im Matter-Quellcode verwendet werden können, gibt es mehrere Möglichkeiten, ZAP zu integrieren:

  • Verwenden Sie die vorhandenen zzz_generated-Dateien, um neue Beispiele speziell für Ihre Gerätetypen zu erstellen.
  • Erstelle benutzerdefinierte .zap-Dateien für deine Projekte.

Anpassen

ZAP-Dateien werden aus ZAP-Vorlagen generiert. Wenn Sie ZAP mit run_zaptool.sh starten, übergibt dieses Skript die folgenden 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"
}

Zum Anpassen Ihrer Matter-Lösungen können Sie bei der Arbeit mit ZAP mehrere nächste Schritte ausführen:

Ressourcen

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