ZCL Gelişmiş Platform (ZAP)

ZCL Gelişmiş Platform (ZAP), Matter Kümeleri'ni temel alan bir Node.js şablon motorudur.

ZAP, Matter uygulamaları ve SDK'ları için aşağıdaki özellikleri sunar:

  • Bir GUI arayüzünden Matter Uç Noktaları, Kümeler, Özellikler ve diğer cihaz özelliklerini yapılandırın.
  • Veri Modeli tanımlarını, geri çağırmaları ve diğer Matter kaynak kodunu otomatik olarak oluşturan şablonlar oluşturun.
  • SDK'larınızla eklemek üzere önceden yapılandırılmış ZAP dosyaları oluşturup kullanın.
ZAP Aracı

Yükle

  1. ZAP sürümleri sayfasına gidin.

  2. "En son" etiketli sürümü arayın (çoğu, "Yayın öncesi" şeklinde etiketlenir).

  3. Bu sürümün altında, Öğeler başlığı altında işletim sisteminiz için atanan paketi seçin ve indirin.

  4. Debian veya Ubuntu çalıştıran bir makinede aşağıdaki komutu çalıştırarak ZAP'yi yükleyin:

    sudo dpkg -i path/to/zap_installation_package
    

Debian veya Ubuntu Linux'ta zap ikili dosyası /usr/bin/ içinde yüklüdür. Diğer işletim sistemlerinde ikili program başka bir yere yüklenebilir. Her durumda, yürütülebilir dosyanın konumunun PATH ortam değişkeninizde olduğundan emin olun.

ZAP dosyaları

ZAP, ZAP dosyaları adı verilen şablon dosyalarını kullanır. ZAP dosyası; Uç Noktalar, Komutlar, Özellikler ve diğer cihaz özelliklerini tanımlayan bir JSON dosyasıdır. ZAP dosyalarının adları .zap ile biten. Örneğin, connectedhomeip/examples/lighting-app/lighting-common içinde lighting-app.zap.

connectedhomeip/examples/all-clusters-app/all-clusters-common içinde bulunan all-clusters-app.zap dosyası, ortak Matter Kümesi ve Matter İkincil Ağ Komisyonlu Cihaz Türü dahil üç uç noktayla önceden yapılandırılmıştır. Bu, çeşitli Küme yapılandırmalarını keşfetmek için iyi bir örnektir.

Çalıştır

  1. Matter örneklerinden birinden bir ZAP dosyası seçin.
  2. Matter deposunun (connectedhomeip) kök dizininden run_zaptool.sh sarmalayıcı komut dosyasını çalıştırarak .zap dosyasının yolunu iletin.

Örneğin:

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

Kurulum

Ayarlar bölümünde ZAP kullanıcı arayüzünü yapılandırabilirsiniz. Buna ek olarak açık veya koyu temayı da seçebilir ve geliştirici araçlarını etkinleştirebilir ya da devre dışı bırakabilirsiniz.

Seçenekler'i tıklayarak Ürün Üreticisi'ni ve Varsayılan Yanıt Politikanızı seçebilir ve Command Discovery'yi etkinleştirebilir veya devre dışı bırakabilirsiniz.

ZAP Genel Seçenekleri

Zigbee Clusters Configurator'a özel ZCL kümeleri veya komutları eklemek için Extensions'ı (Uzantılar) tıklayın.

Kullan

Uç noktalar

lighting-app.zap dosyası, Matter Kök Düğüm (Uç Nokta - 0) ve Matter Karartılabilir Işık (Uç Nokta - 1) ile önceden yapılandırılmıştır.

Uç Nokta - 0; ağ iletişimi, devreye alma, açıklayıcı, operasyonel kimlik bilgileri ve OTA kümeleri gibi düğümün tamamıyla ilgili genel kümeleri içerir.

ZAP Uç Noktası 0

Sonraki adımlarda Uç nokta - 1 öğesini inceleyip yapılandıracaksınız. Matter lighting-app örneğindeki karartılabilir ışık.

  1. Matter kod deposundan connectedhomeip, ZAP'yi çalıştırın.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
    
  2. Uç nokta - 1, ardından DÜZENLE'yi tıklayın.

  3. İsteğe bağlı: Matter, çeşitli cihaz türlerini destekler. Cihazınızı değiştirmek için Cihaz açılır menüsüne matter yazmaya başlayın, ardından KAYDET'i tıklayın.

    ZAP Cihaz Seçin

Daha fazla bilgi edinmek için Matter Primer'daki Cihazlar ve Uç Noktalar bölümüne bakın.

Kümeler

Önceden Tanımlanmış Kümeler, Özellikler ve Raporlama seçenekleri, Uç Nokta - 1'de varsayılan olarak etkindir.

Yalnızca etkin Kümeleri görüntülemek için Endpoint - 1 seçeneğini tıklayın ve Göster menüsünden Etkin Kümeler'i seçin. kümelerini ada göre de arayabilirsiniz (örneğin, on).

ZAP Etkin Kümeler

Herhangi bir Kümeyi İstemci, Sunucu veya İstemci ve Sunucu olarak etkinleştirmek için Etkinleştir açılır listesini kullanın. Ayrıca, cihazınızın türü için geçerli olmayan, önceden yapılandırılmış bir Kümeyi devre dışı bırakmak için Etkin Değil'i de seçebilirsiniz.

ZAP Kümesini Devre Dışı Bırak

Daha fazla bilgi edinmek için Matter Primer'daki Kümeler bölümüne bakın.

Özellikler ve Komutlar

Özellikleri ve Komutları yapılandırmak için aşağıdaki adımları tamamlayın:

  1. On/Off Kümesini bulun.
  2. Aynı satırda, Yapılandır simgesini tıklayın.

    ZAP Yapılandır

Burada Özellikleri etkinleştirebilir veya devre dışı bırakabilir, çeşitli Özellik seçeneklerini ayarlayabilir ve ada göre Arama özellikleri belirleyebilirsiniz.

ZAP Özellikleri

Bu kümenin işlemlerini yapılandırmak için Komutlar'ı tıklayın. Örneğin, bir ışığın Açık/Kapalı Kümesi Açık, Kapalı ve Geçiş komutlarını içerir. Temperature Measurement Kümesi gibi bazı Kümelerin ilişkili Komutları olmayabilir.

ZAP Komutları

Daha fazla bilgi için Matter Primer'daki Özellikler ve Komutlar bölümüne bakın.

ZAP kaynak dosyaları oluşturma

Matter örnekleri, connectedhomeip/zzz_generated dizininde bulunan ZAP tarafından oluşturulan kaynak kodunu kullanır. Bazı dosyalar uygulamaya özelken, diğer genel ZAP dosyaları app-common içinde gruplandırılır.

#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>

Uç noktalarınız yapılandırıldıktan sonra, projenize entegre edilecek kaynak dosyalar oluşturabilirsiniz.

  1. Oluştur'u tıklayın.
  2. ZAP çıkışının kaydedileceği bir klasör seçin. Örneğin, lighting-app için connectedhomeip/zzz_generated/lighting-app/zap-generated adresine gidin.
  3. Optional. Dosyaları tercih ettiğiniz IDE'de açın.

ZAP, cihaz türünüze ve ZAP yapılandırmanıza özel tanımlar, işlevler ve başka kaynak kodları oluşturur.

ZAP Tarafından Oluşturulan Dosyalar

Örneğin callback-stub.cpp, yalnızca etkinleştirdiğiniz Kümeleri içeren bir Küme geri çağırma yöntemi içerir:

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

ZAP kaynak dosyalarını kullan

Yaygın ZAP kaynak dosyaları (ör. zzz_generated/app-common/app-common/zap-generated/ids/ içindeki Attributes.h), cihaz türü özelliklerini almak ve ayarlamak için kullanılabilir:

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");
    }
}

ZAP dosyalarının Matter kaynak kodunda nasıl kullanılabileceğini öğrendikten sonra, ZAP'yi entegre etmenin birkaç yolu vardır:

  • Cihaz türlerinize özel yeni örnekler oluşturmak için mevcut zzz_generated dosyalarını kullanın.
  • Projeleriniz için özel .zap dosyaları oluşturun.

Özelleştir

ZAP dosyaları, ZAP şablonlarından oluşturulur. ZAP'yi başlatmak için run_zaptool.sh kullandığınızda bu komut dosyası aşağıdaki şablonlarda aktarılır:

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, Matter şablon adını ve Matter örnekte kullanılan ilgili çıkış dosyasını tanımlar.

{
    "path": "templates/app/callback-stub-src.zapt",
    "name": "ZCL callback-stub source",
    "output": "callback-stub.cpp"
}

Matter çözümlerinizi özelleştirmek için ZAP ile çalışırken atabileceğiniz sonraki adımlar vardır:

Kaynaklar

Daha fazla ZAP kaynakları için GitHub'daki ZAP deposuna (zap) bakın.