ZCL Advanced Platform (ZAP) adalah mesin template node.js yang didasarkan pada Cluster Matter.
ZAP menyediakan fitur berikut untuk aplikasi dan SDK Matter:
- Mengonfigurasi Matter Endpoint, Cluster, Atribut, dan fitur perangkat lainnya dari antarmuka GUI.
- Buat template yang otomatis menghasilkan definisi Model Data, callback, dan kode sumber Matter lainnya.
- Buat dan gunakan file ZAP yang telah dikonfigurasi sebelumnya untuk disertakan dengan SDK Anda.
![Alat ZAP](https://developers.home.google.com/static/tools/images/zap-overview.png?hl=id)
Menginstal
Buka halaman rilis ZAP.
Cari rilis yang diberi tag "Terbaru" (sebagian besar akan diberi tag "Pra-rilis").
Di bawah rilis ini, di bawah judul Assets, pilih paket yang ditetapkan untuk sistem operasi Anda dan download.
Pada komputer yang menjalankan Debian atau Ubuntu, instal ZAP dengan menjalankan:
sudo dpkg -i path/to/zap_installation_package
Pada Debian atau Ubuntu Linux, biner zap
diinstal di /usr/bin/
. Pada
sistem operasi lain, biner dapat diinstal di tempat lain. Dalam situasi apa pun, pastikan lokasi file yang dapat dieksekusi ada di variabel lingkungan PATH
Anda.
File ZAP
ZAP menggunakan file {i>template<i} yang disebut file ZAP. File ZAP adalah file JSON yang menentukan Endpoint, Perintah, Atribut, dan fitur perangkat lainnya. File ZAP memiliki nama yang diakhiri dengan .zap
. Misalnya,
lighting-app.zap
di connectedhomeip/examples/lighting-app/lighting-common
.
File all-clusters-app.zap
, yang ada di
connectedhomeip/examples/all-clusters-app/all-clusters-common
, telah dikonfigurasi sebelumnya dengan Cluster Matter umum dan tiga
Endpoint, termasuk Matter Jenis Perangkat
Komisi Jaringan Sekunder. Ini adalah contoh yang baik untuk mempelajari berbagai konfigurasi
Cluster.
Jalankan
- Pilih file ZAP dari salah satu contoh Matter.
- Dari direktori utama repositori Matter (
connectedhomeip
), jalankan skrip wrapperrun_zaptool.sh
, dengan meneruskan jalur ke file.zap
.
Contoh:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
Siapkan
Di
Settings, Anda dapat mengonfigurasi antarmuka pengguna ZAP, termasuk pilihan tema terang atau gelap, dan mengaktifkan atau menonaktifkan alat developer.Dengan mengklik
Options, Anda dapat memilih Product Manufacturer, Default Response Policy, serta mengaktifkan atau menonaktifkan Command Discovery.![Opsi Global ZAP](https://developers.home.google.com/static/tools/images/zap-global-options.png?hl=id)
Klik
Extensions untuk menambahkan cluster atau perintah ZCL kustom ke Zigbee Clusters Configurator.Gunakan
Endpoint
File lighting-app.zap
telah dikonfigurasi sebelumnya dengan Node Root
Matter (Endpoint - 0) dan Matter Dimmable Light
(Endpoint - 1).
Endpoint - 0 mencakup Cluster umum yang relevan dengan seluruh node, misalnya Networking, Commissioning, Descriptor, Kredensial Operasional, dan Cluster OTA.
![Endpoint ZAP 0](https://developers.home.google.com/static/tools/images/zap-endpoint-0.png?hl=id)
Pada langkah berikutnya, Anda akan meninjau dan mengonfigurasi Endpoint - 1
Matter Cahaya yang Dapat Diredupkan dari contoh lighting-app
.
Dari repo Matter
connectedhomeip
, jalankan ZAP.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Klik Endpoint - 1, lalu
EDIT.Opsional: Matter mendukung berbagai jenis perangkat. Di menu dropdown Device, mulai ketik
matter
untuk mengubah perangkat, lalu klik SAVE.
Untuk mempelajari lebih lanjut, lihat Perangkat dan Endpoint di Matter Primer.
Cluster
Opsi Cluster, Atribut, dan Pelaporan Standar diaktifkan di Endpoint - 1 secara default.
Untuk menampilkan Cluster yang diaktifkan saja, klik Endpoint - 1, lalu pilih
Enabled Clusters dari menu
Show. Anda juga dapat menelusuri cluster on
.
![Cluster yang Diaktifkan ZAP](https://developers.home.google.com/static/tools/images/zap-enabled-clusters.png?hl=id)
Untuk mengaktifkan Cluster sebagai Klien, Server, atau Klien & Server, gunakan menu dropdown Aktifkan. Anda juga dapat memilih Not Enabled untuk menonaktifkan Cluster yang telah dikonfigurasi sebelumnya yang tidak berlaku untuk jenis perangkat Anda.
![Cluster Nonaktifkan ZAP](https://developers.home.google.com/static/tools/images/zap-disable-cluster.png?hl=id)
Untuk mempelajari lebih lanjut, lihat Cluster di Primer Matter.
Atribut dan Perintah
Untuk mengonfigurasi Atribut dan Perintah, selesaikan langkah-langkah berikut:
- Temukan Cluster
On/Off
. Pada baris yang sama, klik ikon Konfigurasi
.
Di sini, Anda dapat mengaktifkan atau menonaktifkan Atribut, menetapkan berbagai opsi Atribut, dan Telusuri atribut
berdasarkan nama.![Atribut ZAP](https://developers.home.google.com/static/tools/images/zap-attributes.png?hl=id)
Klik Commands untuk mengonfigurasi tindakan untuk Cluster ini. Misalnya, Cluster On/off untuk lampu akan menyertakan perintah On, Off,
dan Switch. Beberapa Cluster, seperti
Cluster Temperature Measurement
, mungkin tidak memiliki Perintah terkait.
![Perintah ZAP](https://developers.home.google.com/static/tools/images/zap-commands.png?hl=id)
Untuk mempelajari lebih lanjut, lihat Atribut dan Perintah di Primer Matter.
Membuat file sumber ZAP
Contoh Matter menggunakan kode sumber yang dihasilkan ZAP, yang tersedia
di direktori connectedhomeip/zzz_generated
. Beberapa file bersifat khusus aplikasi,
sedangkan file ZAP generik lainnya dikelompokkan dalam app-common
.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
Setelah Endpoint dikonfigurasi, Anda dapat menghasilkan file sumber untuk diintegrasikan ke dalam project.
- Klik Buat.
- Pilih folder untuk menyimpan output ZAP. Misalnya, buka
connectedhomeip/zzz_generated/lighting-app/zap-generated
untuklighting-app
. - Opsional. Buka file dalam IDE pilihan Anda.
ZAP menghasilkan definisi, fungsi, dan kode sumber lainnya yang disesuaikan untuk jenis perangkat dan konfigurasi ZAP Anda.
![File yang Dihasilkan ZAP](https://developers.home.google.com/static/tools/images/zap-gen.png?hl=id)
Misalnya, callback-stub.cpp
menyertakan metode callback Cluster yang
hanya menyertakan Cluster yang telah Anda aktifkan:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
Menggunakan file sumber ZAP
File sumber ZAP umum, misalnya Attributes.h
dalam
zzz_generated/app-common/app-common/zap-generated/ids/
, dapat digunakan untuk
mendapatkan dan menetapkan Atribut jenis perangkat:
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");
}
}
Setelah Anda memahami cara penggunaan file ZAP dalam kode sumber Matter, ada beberapa cara untuk mengintegrasikan ZAP:
- Gunakan file
zzz_generated
yang ada untuk membuat contoh baru yang unik untuk jenis perangkat Anda. - Buat file
.zap
kustom untuk project Anda.
Sesuaikan
File ZAP dihasilkan dari template
ZAP.
Saat Anda menggunakan run_zaptool.sh
untuk meluncurkan ZAP, skrip ini akan meneruskan template berikut:
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
menentukan nama template Matter dan
file output terkait yang digunakan dalam contoh Matter.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
Untuk menyesuaikan solusi Matter, ada beberapa langkah berikutnya yang dapat Anda ambil saat menggunakan ZAP:
Referensi
Untuk referensi ZAP tambahan, lihat repo ZAP (zap
) di GitHub.