ZCL Advanced Platform (ZAP)

ZCL Advanced Platform (ZAP) est un moteur de création de modèles Node.js basé sur des clusters Matter.

ZAP fournit les fonctionnalités suivantes pour les applications et les SDK Matter:

  • Configurez des points de terminaison, des clusters, des attributs Matter et d'autres fonctionnalités de l'appareil à partir d'une interface IUG.
  • Créez des modèles qui génèrent automatiquement des définitions de modèles de données, des rappels et d'autres codes source Matter.
  • Créez et utilisez des fichiers ZAP préconfigurés à inclure dans vos SDK.
Outil ZAP

Installer

  1. Accédez à la page Versions de ZAP.

  2. Recherchez la version avec le libellé "Dernière mise à jour" (la plupart sont marquées comme "Pré-sortie").

  3. Sous cette version, sous l'en-tête Éléments, sélectionnez le package désigné pour votre système d'exploitation et téléchargez-le.

  4. Sur une machine exécutant Debian ou Ubuntu, installez ZAP en exécutant la commande suivante:

    sudo dpkg -i path/to/zap_installation_package
    

Sous Debian ou Ubuntu Linux, le binaire zap est installé dans /usr/bin/. Sur d'autres systèmes d'exploitation, il est possible que le binaire soit installé ailleurs. Dans tous les cas, vérifiez que l'emplacement de l'exécutable se trouve dans votre variable d'environnement PATH.

Fichiers ZAP

ZAP utilise des fichiers de modèle appelés fichiers ZAP. Un fichier ZAP est un fichier JSON qui définit les points de terminaison, les commandes, les attributs et d'autres fonctionnalités de l'appareil. Le nom des fichiers ZAP se termine par .zap. Par exemple, lighting-app.zap dans connectedhomeip/examples/lighting-app/lighting-common.

Le fichier all-clusters-app.zap, qui se trouve dans connectedhomeip/examples/all-clusters-app/all-clusters-common, est préconfiguré avec des clusters Matter communs et trois points de terminaison, y compris un appareil de mise en service du réseau secondaire Matter. Ceci est un bon exemple pour explorer différentes configurations de cluster.

Exécuter

  1. Choisissez un fichier ZAP à partir de l'un des exemples Matter.
  2. À partir du répertoire racine du dépôt Matter (connectedhomeip), exécutez le script wrapper run_zaptool.sh en lui transmettant le chemin d'accès au fichier .zap.

Exemple :

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap

Configuration

Dans Paramètres , vous pouvez configurer l'interface utilisateur ZAP, y compris le choix du thème clair ou sombre, et l'activation ou la désactivation des outils pour les développeurs.

Cliquez sur Options pour sélectionner votre fabricant de produits, votre stratégie de réponse par défaut, et activer ou désactiver la détection des commandes.

Options globales ZAP

Cliquez sur Extensions pour ajouter des commandes ou des clusters ZCL personnalisés à l'outil de configuration des clusters Zigbee.

Utilisation

Points de terminaison

Le fichier lighting-app.zap est préconfiguré avec un nœud racine Matter (point de terminaison - 0) et un voyant réglable Matter (point de terminaison - 1).

Le champ Point de terminaison - 0 inclut les clusters généraux pertinents pour l'ensemble du nœud, par exemple la mise en réseau, la mise en service, le descripteur, les identifiants opérationnels et les clusters OTA.

Point de terminaison ZAP 0

Au cours des prochaines étapes, vous allez examiner et configurer le point de terminaison 1 Matter Dimmable Light à partir de l'exemple lighting-app.

  1. À partir du dépôt Matter connectedhomeip, exécutez ZAP.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
    
  2. Cliquez sur Point de terminaison - 1, puis sur MODIFIER.

  3. Facultatif:Matter est compatible avec différents types d'appareils. Dans le menu déroulant Appareil, commencez à saisir matter pour changer d'appareil, puis cliquez sur ENREGISTRER.

    ZAP Select Device

Pour en savoir plus, consultez la section Appareils et points de terminaison dans le guide Matter.

Clusters

Les options "Clusters prédéfinis", "Attributs" et "Création de rapports" sont activées par défaut dans le point de terminaison 1.

Pour n'afficher que les clusters activés, cliquez sur Point de terminaison - 1, puis sélectionnez Clusters activés dans le menu Afficher. Vous pouvez également rechercher des clusters par nom, par exemple on.

Clusters sur lesquels ZAP est activé

Pour activer un cluster en tant que client, serveur ou client et serveur, utilisez la liste déroulante Activer. Vous pouvez également sélectionner Non activé pour désactiver un cluster préconfiguré qui ne s'applique pas à votre type d'appareil.

ZAP Désactiver le cluster

Pour en savoir plus, consultez la section Clusters dans le guide Matter.

Attributs et commandes

Pour configurer les attributs et les commandes, procédez comme suit:

  1. Recherchez le cluster On/Off.
  2. Sur la même ligne, cliquez sur l'icône Configurer .

    Configurer ZAP

Ici, vous pouvez activer ou désactiver les attributs, définir diverses options d'attribut et Rechercher des attributs par nom.

Attributs ZAP

Cliquez sur Commandes pour configurer les actions pour ce cluster. Par exemple, le cluster Activé/Désactivé d'une ampoule comprendra des commandes d'activation, de désactivation et d'activation/désactivation. Certains clusters, tels que le cluster Temperature Measurement, peuvent ne pas être associés à des commandes.

Commandes ZAP

Pour en savoir plus, consultez la section Attributs et commandes dans le guide Matter.

Générer les fichiers sources ZAP

Les exemples Matter utilisent le code source généré par ZAP, disponible dans le répertoire connectedhomeip/zzz_generated. Certains fichiers sont spécifiques à une application, tandis que d'autres fichiers ZAP génériques sont regroupés dans app-common.

#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>

Une fois vos points de terminaison configurés, vous pouvez générer des fichiers sources à intégrer à votre projet.

  1. Cliquez sur Générer.
  2. Sélectionnez un dossier dans lequel enregistrer la sortie ZAP. Par exemple, accédez à connectedhomeip/zzz_generated/lighting-app/zap-generated pour lighting-app.
  3. Facultatif. Ouvrez les fichiers dans l'IDE de votre choix.

ZAP génère des définitions, des fonctions et d'autres codes source personnalisés en fonction de votre type d'appareil et de votre configuration ZAP.

Fichiers générés par ZAP

Par exemple, callback-stub.cpp inclut une méthode de rappel de cluster qui n'inclut que ceux du cluster que vous avez activés:

void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
    switch (clusterId)
    {
     ...
     case ZCL_ON_OFF_CLUSTER_ID :
        emberAfOnOffClusterInitCallback(endpoint);
        break;
     ...
    }
}

Utiliser les fichiers sources ZAP

Les fichiers sources ZAP courants, par exemple Attributes.h dans zzz_generated/app-common/app-common/zap-generated/ids/, peuvent être utilisés pour obtenir et définir les attributs de type d'appareil:

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");
    }
}

Une fois que vous comprenez comment les fichiers ZAP peuvent être utilisés dans le code source Matter, vous pouvez intégrer ZAP de plusieurs façons:

  • Utilisez les fichiers zzz_generated existants pour créer des exemples propres à vos types d'appareils.
  • Créez des fichiers .zap personnalisés pour vos projets.

Personnaliser

Les fichiers ZAP sont générés à partir de modèles ZAP. Lorsque vous utilisez run_zaptool.sh pour lancer ZAP, ce script transmet les modèles suivants:

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 définit le nom du modèle Matter et le fichier de sortie correspondant utilisé dans les exemples Matter.

{
    "path": "templates/app/callback-stub-src.zapt",
    "name": "ZCL callback-stub source",
    "output": "callback-stub.cpp"
}

Pour personnaliser vos solutions Matter, vous pouvez suivre plusieurs étapes lorsque vous utilisez ZAP:

Ressources

Pour obtenir des ressources ZAP supplémentaires, consultez le dépôt ZAP (zap) sur GitHub.