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 Matter-SDKs:
- Matter-Endpunkte, ‑Cluster, ‑Attribute und andere Gerätefunktionen über eine Benutzeroberfläche konfigurieren
- Vorlagen erstellen, mit denen automatisch Datenmodelldefinitionen, Callbacks und anderer Matter-Quellcode generiert werden
- Erstellen und verwenden Sie vorkonfigurierte ZAP-Dateien, die Sie in Ihre SDKs einbinden.
Installieren
Rufen Sie die Seite ZAP-Releases auf.
Suche nach dem Release mit dem Tag „Latest“ (die meisten haben das Tag „Pre-release“).
Wählen Sie unter dieser Version unter der Überschrift Assets das für Ihr Betriebssystem vorgesehene Paket aus und laden Sie es herunter.
Installieren Sie ZAP auf einem Computer mit Debian oder Ubuntu mit dem Befehl:
sudo dpkg -i path/to/zap_installation_package
Unter Debian oder Ubuntu Linux wird die zap
-Binärdatei in /usr/bin/
installiert. Unter anderen Betriebssystemen ist das Binärprogramm möglicherweise an anderer Stelle installiert. Prüfen Sie in jedem Fall, ob sich der Speicherort der ausführbaren Datei in der Umgebungsvariable PATH
befindet.
ZAP-Dateien
ZAP verwendet Vorlagendateien, die ZAP-Dateien genannt werden. 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
unter connectedhomeip/examples/all-clusters-app/all-clusters-common
ist mit gängigen Matter-Clustern und drei Endpunkten vorkonfiguriert, einschließlich eines Matter-Gerätetyps für die Inbetriebnahme des sekundären Netzwerks. Dies ist ein gutes Beispiel, um verschiedene Clusterkonfigurationen zu untersuchen.
Ausführen
- Wählen Sie eine ZAP-Datei aus einem der Matter Beispiele aus.
- Führen Sie im Stammverzeichnis des Matter-Repositorys (
connectedhomeip
) dasrun_zaptool.sh
-Wrapper-Script aus und übergeben Sie ihm 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 eines hellen oder dunklen Designs und der Aktivierung oder Deaktivierung der Entwicklertools.Wenn Sie auf
Optionen klicken, können Sie den Hersteller des Produkts und die Standardantwortrichtlinie auswählen und die Befehlserkennung aktivieren oder deaktivieren.Klicken Sie auf
Erweiterungen, um dem Zigbee Clusters Configurator benutzerdefinierte ZCL-Cluster oder ‑Befehle hinzuzufügen.Verwenden
Endpunkte
Die lighting-app.zap
-Datei ist mit einem Matter-Stammknoten (Endpunkt – 0) und einer Matter-Dimmerlampe (Endpunkt – 1) vorkonfiguriert.
Endpunkt – 0 umfasst allgemeine Cluster, die für den gesamten Knoten relevant sind, z. B. Networking, Inbetriebnahme, Descriptor, Betriebsanmeldedaten und OTA-Cluster.
In den nächsten Schritten überprüfen und konfigurieren Sie Endpunkt 1
Matter Dimmbares Licht aus dem Beispiel lighting-app
.
Führen Sie ZAP im Matter-Repository
connectedhomeip
aus.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Klicken Sie auf Endpunkt – 1 und dann auf
BEARBEITEN.Optional:Matter unterstützt verschiedene Gerätetypen. Geben Sie im Drop-down-Menü Gerät die Zeichenfolge
matter
ein, um das Gerät zu ändern, und klicken Sie dann auf SPEICHERN.
Weitere Informationen finden Sie im Matter-Einstiegsleitfaden unter Geräte und Endpunkte.
Cluster
Vordefinierte Cluster, Attribute und Berichtsoptionen sind in Endpunkt – 1 standardmäßig aktiviert.
Wenn Sie nur aktivierte Cluster sehen möchten, klicken Sie auf Endpunkt – 1 und wählen Sie im Menü Anzeigen die Option Aktivierte Cluster aus. Sie können auch nach dem Namen von on
.
Wenn Sie einen Cluster als Client, Server oder Client und Server aktivieren möchten, verwenden Sie das Drop-down-Menü Aktivieren. Sie können auch Nicht aktiviert auswählen, um einen vorkonfigurierten Cluster zu deaktivieren, der nicht für Ihren Gerätetyp gilt.
Weitere Informationen finden Sie im Matter-Einstiegsleitfaden unter Cluster.
Attribute und Befehle
So konfigurieren Sie Attribute und Befehle:
- Suchen Sie den
On/Off
-Cluster. Klicken Sie in derselben Zeile auf das Symbol „Konfigurieren“
.
Hier können Sie Attribute aktivieren oder deaktivieren, verschiedene Attributoptionen festlegen und nach Attributen suchen
.Klicken Sie auf Befehle, um Aktionen für diesen Cluster zu konfigurieren. Der Cluster An/Aus für eine Lampe enthält beispielsweise die Befehle An, Aus und Umschalten. Einige Cluster, z. B. der Temperature Measurement
-Cluster, haben möglicherweise keine zugehörigen Befehle.
Weitere Informationen finden Sie im Matter-Einstiegsleitfaden unter Attribute und Befehle.
ZAP-Quelldateien generieren
In den Matter-Beispielen wird ZAP-generierter Quellcode verwendet, der im Verzeichnis connectedhomeip/zzz_generated
verfügbar ist. Einige Dateien sind app-spezifisch, während andere allgemeine ZAP-Dateien in app-common
gruppiert sind.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
Sobald die Endpunkte konfiguriert sind, können Sie Quelldateien generieren, die Sie in Ihr Projekt einbinden.
- Klicken Sie auf Erstellen.
- 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ürlighting-app
auf. - Optional: Öffnen Sie die Dateien in Ihrer bevorzugten IDE.
ZAP generiert Definitionen, Funktionen und anderen Quellcode, der auf Ihren Gerätetyp und Ihre ZAP-Konfiguration zugeschnitten ist.
callback-stub.cpp
enthält beispielsweise eine Cluster-Callback-Methode, die nur die Cluster enthält, die Sie aktiviert haben:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
ZAP-Quelldateien verwenden
Mit gängigen ZAP-Quelldateien, z. B. Attributes.h
in zzz_generated/app-common/app-common/zap-generated/ids/
, können Gerätetypattribute abgerufen und festgelegt 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");
}
}
Sobald 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 zu erstellen, die speziell für Ihre Gerätetypen geeignet sind. - Erstellen Sie benutzerdefinierte
.zap
-Dateien für Ihre Projekte.
Anpassen
ZAP-Dateien werden aus ZAP-Vorlagen generiert.
Wenn Sie ZAP mit run_zaptool.sh
starten, werden über dieses Script die folgenden Vorlagen übergeben:
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"
}
Wenn Sie Ihre Matter-Lösungen anpassen möchten, haben Sie bei der Arbeit mit ZAP mehrere Möglichkeiten:
Ressourcen
Weitere ZAP-Ressourcen finden Sie im ZAP-Repository (zap
) auf GitHub.