ZCL Advanced Platform (ZAP) è un motore di modelli node.js basato su Matter cluster.
ZAP offre le seguenti funzionalità per le app Matter e SDK:
- Configura Matter endpoint, cluster, attributi e le altre funzionalità del dispositivo da un'interfaccia GUI.
- Creare modelli che generano automaticamente definizioni di modelli di dati, callback e altro codice sorgente Matter.
- Crea e utilizza file ZAP preconfigurati da includere con i tuoi SDK.
Installa
Vai alle release di Zap .
Cerca la release con il tag "Ultima" (la maggior parte avrà il tag "Pre-release").
In questa release, sotto l'intestazione Risorse, seleziona il pacchetto designata per il sistema operativo e scaricarlo.
Su una macchina con Debian o Ubuntu, installa ZAP eseguendo:
sudo dpkg -i path/to/zap_installation_package
Su Debian o Ubuntu Linux, il programma binario zap
è installato in /usr/bin/
. Su
altri sistemi operativi, il file binario potrebbe essere installato altrove. In ogni caso,
verifica che la posizione dell'eseguibile sia nel tuo ambiente PATH
.
File ZAP
ZAP utilizza file modello chiamati file ZAP. Un file ZAP è un file JSON
che definisce endpoint, comandi, attributi e altri dispositivi
le funzionalità di machine learning. 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 cluster Matter comuni e tre
endpoint, tra cui un tipo di dispositivo di commissioning della rete
Matter secondaria. Questo è un buon esempio per esplorare vari cluster
configurazioni.
Esegui
- Scegli un file ZAP da uno degli esempi di Matter.
- Dalla directory root del repository Matter (
connectedhomeip
), esegui lo script wrapperrun_zaptool.sh
, passando il percorso al 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, nonché attivare o disattivare gli strumenti per sviluppatori.Se fai clic su
Opzioni puoi selezionare il prodotto Manufacturer Center, Criterio di risposta predefinito e attivare o disattivare il comando Scoperta.Fai clic su
Estensioni per aggiungere o i comandi ZCL a Zigbee Clusters Configurator.Usa
Endpoint
Il file lighting-app.zap
è preconfigurato con un Matter
Nodo radice (endpoint - 0) e luce dimmerabile Matter
(Endpoint - 1).
Endpoint - 0 include i cluster generali che sono pertinenti all'intero nodo, ad esempio Networking, Commissioning, Descriptor, credenziali operative e cluster OTA.
Nei passaggi successivi, esaminerai e configurerai Endpoint - 1
Matter Luce dimmerabile nell'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, quindi
MODIFICA.Facoltativo:Matter supporta diversi tipi di dispositivi. Nel menu a discesa Dispositivo, inizia a digitare
matter
per cambiare dispositivo, quindi fai clic su SALVA.
Per saperne di più, consulta la sezione Dispositivi e endpoint nel MatterPrimer.
Cluster
Le opzioni Cluster, attributi e report predefiniti sono abilitate in Endpoint: 1 per impostazione predefinita.
Per visualizzare solo i cluster abilitati, fai clic su Endpoint - 1 e seleziona
Cluster abilitati dal programma
o dal menu Fogli Google. Puoi anche cercare on
.
Per abilitare qualsiasi cluster come Client, Server o Cliente e di sicurezza, utilizza dal menu a discesa Attiva. Puoi anche selezionare Non abilitato per disattivare una Cluster preconfigurato che non si applica al tipo di dispositivo.
Per saperne di più, consulta: Cluster nel Primer di Matter.
Attributi e comandi
Per configurare Attributi e 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 degli attributi e cercare gli attributi
per nome.Fai clic su Comandi per configurare le azioni per questo cluster. Per
esempio, il cluster On/off per una luce includerà i comandi On, Off e On/off. Alcuni cluster, come
nel cluster Temperature Measurement
, potrebbe non essere presente alcun comando associato.
Per saperne di più, consulta: Attributi e comandi nel Primer di Matter.
Generare file di origine ZAP
Matter esempi utilizzano il codice sorgente generato ZAP, disponibile
nella directory connectedhomeip/zzz_generated
. Alcuni file sono specifici dell'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>
Dopo aver configurato gli endpoint, puoi generare i file di origine 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
per illighting-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 configurazione ZAP.
Ad esempio, callback-stub.cpp
include un metodo di callback 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
File di origine ZAP comuni, ad esempio Attributes.h
in
zzz_generated/app-common/app-common/zap-generated/ids/
, può essere utilizzato per
recupera e imposta 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 i file ZAP possono essere utilizzati nel Matter codice sorgente, esistono diversi modi per integrare ZAP:
- Utilizza i file
zzz_generated
esistenti per creare nuovi esempi, univoci per i tipi di dispositivo. - Crea file
.zap
personalizzati per i tuoi progetti.
Personalizza
I file ZAP vengono generati dai modelli ZAP.
Quando utilizzi run_zaptool.sh
per avviare ZAP, questo script trasmette quanto segue:
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
file di output corrispondente usato in Matter esempi.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
Per personalizzare le tue soluzioni Matter, quando utilizzi ZAP puoi seguire diversi passaggi:
Risorse
Per ulteriori risorse ZAP, consulta il
repository ZAP
(zap
)
su GitHub.