ZCL Advanced Platform (ZAP) è un motore di modelli Node.js basato su Matter cluster.
ZAP fornisce le seguenti funzionalità per le app e gli SDK Matter:
- Configura Matter endpoint, cluster, attributi e altre funzionalità del dispositivo da un'interfaccia GUI.
- Crea modelli che generano automaticamente definizioni di modelli di dati, callback e altro codice sorgente Matter.
- Crea e utilizza file ZAP preconfigurati da includere negli SDK.

Installa
Vai alla pagina Versioni ZAP.
Cerca la release con il tag "Latest" (la maggior parte avrà il tag "Pre-release").
In questa release, nella sezione Asset, seleziona il pacchetto designato per il tuo sistema operativo e scaricalo.
Su una macchina che esegue Debian o Ubuntu, installa ZAP eseguendo:
sudo dpkg -i path/to/zap_installation_package
Su Debian o Ubuntu Linux, il binario zap
viene installato in /usr/bin/
. Su
altri sistemi operativi, il binario potrebbe essere installato altrove. In ogni caso,
verifica che la posizione dell'eseguibile si trovi nella variabile di ambiente PATH
.
File ZAP
ZAP utilizza file modello chiamati file ZAP. Un file ZAP è un file JSON
che definisce endpoint, comandi, attributi e altre funzionalità
del dispositivo. I file ZAP hanno nomi che terminano con .zap
. Ad esempio,
lighting-app.zap
in connectedhomeip/examples/lighting-app/lighting-common
.
Il file all-clusters-app.zap
, che si trova in
connectedhomeip/examples/all-clusters-app/all-clusters-common
, è
preconfigurato con Matter cluster comuni e tre
endpoint, tra cui un Matter tipo di dispositivo di provisioning
della rete secondaria. Questo è un buon esempio per esplorare varie configurazioni
del cluster.
Esegui
- Scegli un file ZAP da uno degli esempi di Matter.
- Dalla directory principale del repository Matter (
connectedhomeip
), esegui lo script wrapperrun_zaptool.sh
, passandogli il percorso del file.zap
.
Ad esempio:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
Configura
In
Impostazioni puoi configurare l'interfaccia utente di ZAP, inclusa la scelta del tema chiaro o scuro, e l'attivazione o la disattivazione degli strumenti per sviluppatori.Se fai clic su
Opzioni, puoi selezionare il produttore del prodotto, le norme di risposta predefinite e attivare o disattivare la rilevazione dei comandi.
Fai clic su
Estensioni per aggiungere cluster o comandi ZCL personalizzati a Zigbee Clusters Configurator.Utilizza
Endpoint
Il file lighting-app.zap
è preconfigurato con un Matter
nodo principale (Endpoint - 0) e una Matter luce dimmerabile
(Endpoint - 1).
Endpoint - 0 include i cluster generali pertinenti all'intero nodo, ad esempio Networking, Commissioning, Descriptor, Operational Credentials e OTA Clusters.

Nei passaggi successivi, esaminerai e configurerai Endpoint - 1
Matter Dimmable Light dell'esempio lighting-app
.
Esegui ZAP dal repository Matter
connectedhomeip
.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Fai clic su Endpoint - 1, poi su
MODIFICA.(Facoltativo):Matter supporta vari tipi di dispositivi. Nel menu a discesa Dispositivo, inizia a digitare
matter
per cambiare dispositivo, poi fai clic su SALVA.
Per saperne di più, consulta Dispositivi ed endpoint nella guida introduttiva di Matter.
Cluster
Le opzioni predefinite per cluster, attributi e report sono abilitate in Endpoint - 1 per impostazione predefinita.
Per visualizzare solo i cluster abilitati, fai clic su Endpoint - 1 e seleziona
Cluster abilitati dal menu Mostra. Puoi anche cercare i cluster on
.

Per abilitare qualsiasi cluster come client, server o client e server, utilizza il menu a discesa Abilita. Puoi anche selezionare Non attivato per disattivare un cluster preconfigurato che non si applica al tuo tipo di dispositivo.

Per saperne di più, consulta Cluster nella guida introduttiva di Matter.
Attributi e comandi
Per configurare gli attributi e i comandi, completa i seguenti passaggi:
- Individua il cluster
On/Off
. Nella stessa riga, fai clic sull'icona Configura
.
Qui puoi attivare o disattivare gli attributi, impostare varie opzioni e cercare gli attributi
per nome.
Fai clic su Comandi per configurare le azioni per questo cluster. Ad esempio, il cluster On/off per una luce includerà i comandi On, Off e Toggle. Alcuni cluster, come
il cluster Temperature Measurement
, potrebbero non avere comandi associati.

Per saperne di più, consulta Attributi e comandi nella guida introduttiva di Matter.
Genera i file sorgente ZAP
Gli esempi di Matter utilizzano il codice sorgente generato da ZAP, disponibile
nella directory connectedhomeip/zzz_generated
. Alcuni file sono specifici per l'app,
mentre altri file ZAP generici sono raggruppati in app-common
.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
Una volta configurati gli endpoint, puoi generare i file sorgente da integrare nel tuo progetto.
- Fai clic su Genera.
- Seleziona una cartella in cui salvare l'output ZAP. Ad esempio, vai a
connectedhomeip/zzz_generated/lighting-app/zap-generated
perlighting-app
. - Facoltativo. Apri i file nel tuo IDE preferito.
ZAP genera definizioni, funzioni e altro codice sorgente personalizzato per il tuo tipo di dispositivo e la configurazione ZAP.

Ad esempio, callback-stub.cpp
include un metodo di callback del cluster che include solo i cluster che hai abilitato:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
Utilizzare i file di origine ZAP
I file di origine ZAP comuni, ad esempio Attributes.h
in
zzz_generated/app-common/app-common/zap-generated/ids/
, possono essere utilizzati per
ottenere e impostare gli attributi del tipo di dispositivo:
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");
}
}
Una volta compreso come possono essere utilizzati i file ZAP nel Matter codice sorgente, esistono diversi modi per integrare ZAP:
- Utilizza i file
zzz_generated
esistenti per creare nuovi esempi unici per i tuoi tipi di dispositivi. - Crea file
.zap
personalizzati per i tuoi progetti.
Personalizza
I file ZAP vengono generati a partire dai modelli
ZAP.
Quando utilizzi run_zaptool.sh
per avviare ZAP, questo script passa i seguenti
modelli:
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
definisce il nome del modello Matter e il file di output corrispondente utilizzato negli esempi Matter.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
Per personalizzare le tue soluzioni Matter, puoi seguire diversi passaggi quando lavori con ZAP:
- Crea modelli ZAP.
- Integra ZAP nell'SDK.
Risorse
Per ulteriori risorse ZAP, consulta il
repository ZAP
(zap
)
su GitHub.