ZCL Advanced Platform (ZAP) est un moteur de création de modèles Node.js basé sur Matter clusters.
Le ZAP fournit les fonctionnalités suivantes pour les applications et les SDK Matter:
- Configurez les points de terminaison, les clusters, les attributs et d'autres fonctionnalités de l'appareil Matter à 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 sources Matter.
- Créez et utilisez des fichiers ZAP préconfigurés à inclure dans vos SDK.
![Outil ZAP](https://developers.home.google.com/static/tools/images/zap-overview.png?authuser=1&hl=fr)
Installer
Accédez à la page des versions ZAP.
Recherchez la version avec la mention "Nouveauté" (la plupart sont intitulées "Version préliminaire").
Dans cette version, sous le titre Éléments, sélectionnez le package désigné pour votre système d'exploitation et téléchargez-le.
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/
. Sur d'autres systèmes d'exploitation, le binaire peut être installé ailleurs. Dans tous les cas, assurez-vous que l'emplacement du fichier exécutable se trouve dans la 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
, qui se trouve dans connectedhomeip/examples/all-clusters-app/all-clusters-common
, est préconfiguré avec des clusters Matter courants et trois points de terminaison, y compris un type d'appareil de mise en service de réseau secondaire Matter. Il s'agit d'un bon exemple pour explorer différentes configurations de cluster.
Exécuter
- Choisissez un fichier ZAP dans l'un des exemples Matter.
- Dans le répertoire racine du dépôt Matter (
connectedhomeip
), exécutez le script wrapperrun_zaptool.sh
en indiquant 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 activer ou désactiver les outils pour les développeurs.Cliquez sur Options
pour sélectionner le fabricant de votre produit et votre stratégie de réponse par défaut, puis activer ou désactiver la découverte de commandes.![Options générales ZAP](https://developers.home.google.com/static/tools/images/zap-global-options.png?authuser=1&hl=fr)
Cliquez sur
Extensions pour ajouter des commandes ou des clusters ZCL personnalisés à Zigbee Clusters Configurator.Utilisez l'
Points de terminaison
Le fichier lighting-app.zap
est préconfiguré avec un nœud racine Matter (Endpoint - 0) et un éclairage à variateur Matter (Endpoint - 1).
Endpoint - 0 inclut les clusters généraux pertinents pour l'ensemble du nœud, par exemple les clusters de mise en réseau, de mise en service, de descripteur, d'identifiants opérationnels et de clusters OTA.
![Point de terminaison ZAP 0](https://developers.home.google.com/static/tools/images/zap-endpoint-0.png?authuser=1&hl=fr)
Au cours des étapes suivantes, vous allez examiner et configurer Point de terminaison 1
Matter Lumière à intensité variable à partir de l'exemple lighting-app
.
À partir du dépôt Matter
connectedhomeip
, exécutez ZAP.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Cliquez sur Point de terminaison – 1, puis sur
MODIFIER.Facultatif:Matter est compatible avec différents types d'appareils. Dans le menu déroulant Device (Appareil), commencez à saisir
matter
pour changer d'appareil, puis cliquez sur SAVE (ENREGISTRER).
Pour en savoir plus, consultez la section Appareils et points de terminaison dans l'introduction Matter.
Clusters
Les options de clusters, d'attributs et de rapports prédéfinis sont activées par défaut dans Endpoint - 1.
Pour afficher uniquement les clusters activés, cliquez sur Endpoint - 1 et sélectionnez Clusters activés dans le menu Afficher. Vous pouvez également rechercher des clusters on
.
![Clusters compatibles avec le provisionnement sans contact](https://developers.home.google.com/static/tools/images/zap-enabled-clusters.png?authuser=1&hl=fr)
Pour activer l'option Client, Serveur ou Client et serveur pour un cluster, utilisez le menu déroulant Activer. Vous pouvez également sélectionner Not Enabled (Non activé) pour désactiver un cluster préconfiguré qui ne s'applique pas à votre type d'appareil.
![Désactivation du cluster ZAP](https://developers.home.google.com/static/tools/images/zap-disable-cluster.png?authuser=1&hl=fr)
Pour en savoir plus, consultez la section Clusters dans l'introduction sur Matter.
Attributs et commandes
Pour configurer les attributs et les commandes, procédez comme suit:
- Recherchez le cluster
On/Off
. Sur la même ligne, cliquez sur l'icône Configurer
.
Ici, vous pouvez activer ou désactiver des attributs, définir différentes options d'attribut et rechercher des attributs
par nom.![Attributs ZAP](https://developers.home.google.com/static/tools/images/zap-attributes.png?authuser=1&hl=fr)
Cliquez sur Commandes pour configurer les actions pour ce cluster. Par exemple, le cluster On/off d'une lumière inclut les commandes On (Activé), Off (Désactivé) et Toggle (Activer/Désactiver). Certains clusters, comme le cluster Temperature Measurement
, peuvent ne pas être associés à des commandes.
![Commandes ZAP](https://developers.home.google.com/static/tools/images/zap-commands.png?authuser=1&hl=fr)
Pour en savoir plus, consultez la section 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 à l'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.
- Cliquez sur Générer.
- Sélectionnez un dossier pour enregistrer la sortie du ZAP. Par exemple, accédez à
connectedhomeip/zzz_generated/lighting-app/zap-generated
pourlighting-app
. - 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 personnalisés en fonction de votre type d'appareil et de votre configuration ZAP.
![Fichiers générés par ZAP](https://developers.home.google.com/static/tools/images/zap-gen.png?authuser=1&hl=fr)
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 les fichiers sources du 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 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 le code source Matter, vous pouvez l'intégrer de plusieurs manières:
- Utilisez les fichiers
zzz_generated
existants pour créer des exemples spécifiques à 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 le 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 travaillez avec ZAP:
- Créez des modèles ZAP.
- Intégrez ZAP dans votre SDK.
Ressources
Pour obtenir des ressources ZAP supplémentaires, consultez le dépôt ZAP (zap
) sur GitHub.