ZCL Advanced Platform (ZAP)

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

Le provisionnement sans contact fournit les fonctionnalités suivantes pour les applications Matter et SDK:

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

Installer

  1. Accéder aux versions de ZAP .

  2. Recherchez la version intitulée "Les plus récents". (la plupart portent la mention "Version préliminaire").

  3. Sous cette version, sous Éléments, sélectionnez le package. correspondant à votre système d'exploitation, puis téléchargez-la.

  4. Sur un ordinateur 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/. Activé d’autres systèmes d’exploitation, le binaire peut être installé ailleurs. Dans tous les cas, vérifiez que l'emplacement de l'exécutable est défini dans votre variable d'environnement PATH.

Fichiers ZAP

Le 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, disponible dans connectedhomeip/examples/all-clusters-app/all-clusters-common, est préconfigurés avec des clusters Matter communs et trois Points de terminaison, y compris un réseau secondaire Matter Type d'appareil de mise en service. Il s'agit d'un bon exemple pour explorer différentes configurations de clusters.

Exécuter

  1. Choisissez un fichier ZAP dans l'un des exemples Matter.
  2. Dans le répertoire racine du dépôt Matter (connectedhomeip), exécutez la commande suivante : le script wrapper run_zaptool.sh, qui transmet le chemin d'accès au fichier .zap.

Exemple :

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

Configurer

Dans les paramètres , vous pouvez configurer l'interface utilisateur du ZAP, y compris votre choix de 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 Produit "Manufacturer", la stratégie de réponse par défaut, et activez ou désactivez la commande Découverte.

Options générales ZAP

Cliquez sur  Extensions pour ajouter des clusters ou des commandes ZCL personnalisés au configurateur de clusters Zigbee.

Utiliser

Points de terminaison

Le fichier lighting-app.zap est préconfiguré avec un Matter. Nœud racine (point de terminaison - 0) et éclairage à variateur Matter (Point de terminaison 1).

Point de terminaison - 0 inclut les clusters généraux qui sont pertinents pour l'ensemble du nœud, comme la mise en réseau, la mise en service, le descripteur Identifiants opérationnels et clusters OTA.

Point de terminaison ZAP 0

Au cours des étapes suivantes, vous allez examiner et configurer Point de terminaison 1. Matter Éclairage à intensité variable 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 MODIFIER .

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

    Sélectionner l'appareil ZAP

Pour en savoir plus, consultez Appareils et Cloud Endpoints dans le Primaire Matter.

Clusters

Les options de clusters, d'attributs et de rapports prédéfinis sont activées dans Point de terminaison 1 par défaut.

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 aussi rechercher clusters par son nom, par exemple on.

Clusters compatibles avec le provisionnement sans contact

Pour définir un cluster comme Client, Serveur ou Client et Google Cloud, utilisez le menu déroulant Activer. Vous pouvez également sélectionner Désactivé pour désactiver un cluster préconfiguré qui ne s'applique pas à votre type d'appareil.

Désactivation du cluster ZAP

Pour en savoir plus, consultez Clusters dans l'introduction sur 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

    Configuration du provisionnement sans contact

Ici, vous pouvez activer ou désactiver des attributs, définir différentes options d'attribut Recherchez les attributs par nom.

Attributs ZAP

Cliquez sur Commandes pour configurer les actions pour ce cluster. Pour Par exemple, le groupe Activé/Désactivé associé à une ampoule inclut Activé, Désactivé, et Toggle. Certains clusters, comme le cluster Temperature Measurement peut ne pas être associé à des commandes.

Commandes ZAP

Pour en savoir plus, consultez Attributs et commandes dans l'introduction sur Matter.

Générer les fichiers sources du 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 les 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 le lighting-app
  3. Facultatif. Ouvrez les fichiers dans l'IDE de votre choix.

Le ZAP génère des définitions, des fonctions et d'autres codes sources adaptés à votre le type d'appareil et la configuration du 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 les clusters que vous avez activés:

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

Utiliser des fichiers sources ZAP

Les fichiers sources ZAP courants, par exemple Attributes.h dans zzz_generated/app-common/app-common/zap-generated/ids/ permet d'effectuer les actions suivantes : Attributs get et set du 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 avez compris comment utiliser les fichiers ZAP dans Matter code source, il existe plusieurs façons d'intégrer ZAP:

  • Utilisez les fichiers zzz_generated existants pour créer des exemples uniques à 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 ZAP modèles de ML. Lorsque vous utilisez run_zaptool.sh pour lancer le ZAP, ce script transmet les éléments suivants : modèles:

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 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, plusieurs options s'offrent à vous étapes à suivre lorsque vous utilisez le provisionnement sans contact:

Ressources

Pour obtenir d'autres ressources concernant le provisionnement sans contact, consultez Dépôt ZAP (zap) sur GitHub.