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.
Installer
Accéder aux versions de ZAP .
Recherchez la version intitulée "Les plus récents". (la plupart portent la mention "Version préliminaire").
Sous cette version, sous Éléments, sélectionnez le package. correspondant à votre système d'exploitation, puis téléchargez-la.
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
- Choisissez un fichier ZAP dans l'un des exemples Matter.
- Dans le répertoire racine du dépôt Matter (
connectedhomeip
), exécutez la commande suivante : le script wrapperrun_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.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.
Au cours des étapes suivantes, vous allez examiner et configurer Point de terminaison 1.
Matter Éclairage à intensité variable 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 MODIFIER
.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.
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 on
.
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.
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:
- 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 Recherchez les attributs
par nom.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.
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.
- Cliquez sur Générer.
- Sélectionnez un dossier dans lequel enregistrer la sortie ZAP. Par exemple, accédez à
connectedhomeip/zzz_generated/lighting-app/zap-generated
pour lelighting-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 adaptés à votre le type d'appareil et la configuration du 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:
- Créez des modèles ZAP.
- Intégrez ZAP à votre SDK.
Ressources
Pour obtenir d'autres ressources concernant le provisionnement sans contact, consultez
Dépôt ZAP
(zap
)
sur GitHub.