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.
Installieren
Rufen Sie die Seite ZAP-Releases auf. Seite.
Suchen Sie nach dem Release mit dem Tag „Neueste“. (die meisten werden mit „Vorabveröffentlichung“ gekennzeichnet).
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.
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
- Wählen Sie eine ZAP-Datei aus einem der Matter-Beispiele aus.
- Führen Sie im Stammverzeichnis des Matter-Repositorys (
connectedhomeip
) den folgenden Befehl aus: Das Wrapper-Skriptrun_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.Klicken Sie auf
Erweiterungen, um benutzerdefinierte Erweiterungen hinzuzufügen. ZCL-Cluster oder Befehle an den Zigbee Cluster ConfiguratorVerwenden
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.
In den nächsten Schritten prüfen und konfigurieren Sie Endpunkt – 1
Matter „Dimmbares Licht“ aus dem Beispiel lighting-app
.
Führen Sie ZAP aus dem 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. In Gerät öffnen, geben Sie
matter
ein, um Ihr Gerät zu ändern. Klicken Sie auf SPEICHERN.
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 on
.
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.
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:
- Suchen Sie den Cluster
On/Off
. 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. 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.
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.
- 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 an Ihre Gerätetyp und ZAP-Konfiguration.
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.