Piattaforma avanzata ZCL (ZAP)

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.
Strumento ZAP

Installa

  1. Vai alle release di Zap .

  2. Cerca la release con il tag "Ultima" (la maggior parte avrà il tag "Pre-release").

  3. In questa release, sotto l'intestazione Risorse, seleziona il pacchetto designata per il sistema operativo e scaricarlo.

  4. 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

  1. Scegli un file ZAP da uno degli esempi di Matter.
  2. Dalla directory root del repository Matter (connectedhomeip), esegui lo script wrapper run_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.

Opzioni ZAP Global

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.

Endpoint ZAP 0

Nei passaggi successivi, esaminerai e configurerai Endpoint - 1 Matter Luce dimmerabile nell'esempio lighting-app.

  1. Esegui ZAP dal repository Matter connectedhomeip.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. Fai clic su Endpoint - 1, quindi MODIFICA.

  3. Facoltativo:Matter supporta diversi tipi di dispositivi. Nel menu a discesa Dispositivo, inizia a digitare matter per cambiare dispositivo, quindi fai clic su SALVA.

    Selezione dispositivo ZAP

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 cluster per nome, ad esempio on.

Cluster abilitati per ZAP

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.

Disabilitazione cluster ZAP

Per saperne di più, consulta: Cluster nel Primer di Matter.

Attributi e comandi

Per configurare Attributi e Comandi, completa i seguenti passaggi:

  1. Individua il cluster On/Off.
  2. Nella stessa riga, fai clic sull'icona Configura .

    Configurazione ZAP

Qui puoi attivare o disattivare gli attributi, impostare varie opzioni degli attributi e cercare gli attributi per nome.

Attributi ZAP

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.

Comandi ZAP

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.

  1. Fai clic su Genera.
  2. Seleziona una cartella in cui salvare l'output ZAP. Ad esempio, vai a connectedhomeip/zzz_generated/lighting-app/zap-generated per il lighting-app.
  3. 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.

File generati 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.