Platform Lanjutan ZCL (ZAP)

ZCL Advanced Platform (ZAP) adalah mesin template node.js yang didasarkan pada Cluster Matter.

ZAP menyediakan fitur berikut untuk aplikasi dan SDK Matter:

  • Konfigurasi Endpoint, Cluster, Atribut, dan fitur perangkat lainnya dari antarmuka GUI.Matter
  • Buat template yang secara 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

Instal

  1. Buka halaman Rilis ZAP.

  2. Cari rilis yang diberi tag "Terbaru" (sebagian besar akan diberi tag "Pra-rilis").

  3. Dalam rilis ini, di bagian Aset, pilih paket yang ditujukan untuk sistem operasi Anda, lalu download.

  4. Di komputer yang menjalankan Debian atau Ubuntu, instal ZAP dengan menjalankan:

    sudo dpkg -i path/to/zap_installation_package

Di Debian atau Ubuntu Linux, biner zap diinstal di /usr/bin/. Di sistem operasi lain, biner dapat diinstal di tempat lain. Bagaimanapun, periksa untuk memastikan lokasi file yang dapat dieksekusi ada di variabel lingkungan PATH Anda.

File ZAP

ZAP menggunakan file template 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 dalam connectedhomeip/examples/lighting-app/lighting-common.

File all-clusters-app.zap, yang ditemukan di connectedhomeip/examples/all-clusters-app/all-clusters-common, telah dikonfigurasi sebelumnya dengan Cluster Matter umum dan tiga Endpoint, termasuk Jenis Perangkat Matter Secondary Network Commissioning. Ini adalah contoh yang baik untuk menjelajahi berbagai konfigurasi Cluster.

Jalankan

  1. Pilih file ZAP dari salah satu contoh Matter.
  2. Dari direktori root repositori Matter (connectedhomeip), jalankan skrip wrapper run_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 Opsi, Anda dapat memilih Produsen Produk, Kebijakan Respons Default, serta mengaktifkan atau menonaktifkan Penemuan Perintah.

Opsi Global ZAP

Klik Ekstensi untuk menambahkan cluster atau perintah ZCL kustom ke Zigbee Clusters Configurator.

Gunakan

Endpoint

File lighting-app.zap telah dikonfigurasi sebelumnya dengan Matter Root Node (Endpoint - 0) dan Matter Dimmable Light (Endpoint - 1).

Endpoint - 0 mencakup Cluster umum yang relevan dengan seluruh node, misalnya Cluster Jaringan, Penyiapan, Deskriptor, Kredensial Operasional, dan OTA.

Endpoint ZAP 0

Pada langkah berikutnya, Anda akan meninjau dan mengonfigurasi Endpoint - 1 Matter Dimmable Light dari contoh lighting-app.

  1. Dari repo Matter connectedhomeip, jalankan ZAP.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. Klik Endpoint - 1, lalu EDIT.

  3. Opsional: Matter mendukung berbagai jenis perangkat. Di dropdown Perangkat, mulai ketik matter untuk mengubah perangkat, lalu klik SIMPAN.

    ZAP Select Device

Untuk mempelajari lebih lanjut, lihat Perangkat dan Endpoint dalam Pengantar Matter.

Cluster

Opsi Pelaporan, Atribut, dan Cluster standar diaktifkan di Endpoint - 1 secara default.

Untuk menampilkan hanya Cluster yang diaktifkan, klik Endpoint - 1, lalu pilih Enabled Clusters dari menu Show. Anda juga dapat menelusuri cluster berdasarkan nama, misalnya on.

Cluster yang Kompatibel dengan ZAP

Untuk mengaktifkan Cluster sebagai Klien, Server, atau Klien & Server, gunakan dropdown Aktifkan. Anda juga dapat memilih Tidak Diaktifkan untuk menonaktifkan Cluster yang telah dikonfigurasi sebelumnya dan tidak berlaku untuk jenis perangkat Anda.

ZAP Disable Cluster

Untuk mempelajari lebih lanjut, lihat Cluster di Primer Matter.

Atribut dan Perintah

Untuk mengonfigurasi Atribut dan Perintah, selesaikan langkah-langkah berikut:

  1. Cari Cluster On/Off.
  2. Di baris yang sama, klik ikon Konfigurasi .

    Konfigurasi ZAP

Di sini, Anda dapat mengaktifkan atau menonaktifkan Atribut, menyetel berbagai opsi Atribut, dan Menelusuri atribut menurut nama.

Atribut ZAP

Klik Commands untuk mengonfigurasi tindakan untuk Cluster ini. Misalnya, Cluster Aktif/nonaktif untuk lampu akan mencakup perintah Aktif, Nonaktif, dan Alihkan. Beberapa Cluster, seperti Cluster Temperature Measurement, mungkin tidak memiliki Perintah terkait.

Perintah ZAP

Untuk mempelajari lebih lanjut, lihat Atribut dan Perintah dalam 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, sementara 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 Endpoints dikonfigurasi, Anda dapat membuat file sumber untuk diintegrasikan ke dalam project Anda.

  1. Klik Buat.
  2. Pilih folder untuk menyimpan output ZAP. Misalnya, buka connectedhomeip/zzz_generated/lighting-app/zap-generated untuk lighting-app.
  3. Opsional. Buka file di IDE pilihan Anda.

ZAP membuat definisi, fungsi, dan kode sumber lainnya yang khusus untuk jenis perangkat dan konfigurasi ZAP Anda.

File yang Dibuat ZAP

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 di 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 file ZAP dapat digunakan 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 dibuat 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 yang sesuai 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 selanjutnya yang dapat Anda lakukan saat menggunakan ZAP:

Resource

Untuk referensi ZAP tambahan, lihat repo ZAP (zap) di GitHub.