ZCL Gelişmiş Platform (ZAP)

ZCL Advanced Platform (ZAP), Matter kümelerine dayalı bir Node.js şablon motorudur.

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

  • Matter Endpoints, Clusters, Attributes ve diğer cihaz özelliklerini bir GUI arayüzünden 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ıza eklemek için önceden yapılandırılmış ZAP dosyaları oluşturun ve kullanın.
ZAP Aracı

Yükle

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

  2. "En yeni" olarak etiketlenmiş sürümü bulun (çoğu "Yayın öncesi sürüm" olarak etiketlenir).

  3. Bu sürümde, Öğeler başlığı altında işletim sisteminiz için belirlenen paketi seçip indirin.

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

    sudo dpkg -i path/to/zap_installation_package

Debian veya Ubuntu Linux'ta zap ikili dosyası /usr/bin/ konumuna yüklenir. Diğer işletim sistemlerinde ikili dosya 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ı, Özellikleri ve diğer cihaz özelliklerini tanımlayan bir JSON dosyasıdır. ZAP dosyalarının adları .zap ile biter. Ö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ı, Matter İkincil Ağda Kullanıma Alma Cihaz Türü de dahil olmak üzere yaygın Matter kümeleri ve üç uç nokta ile ö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 örneklerden birinde ZAP dosyası seçin.
  2. Matter deposunun kök dizininden (connectedhomeip), run_zaptool.sh sarmalayıcı komut dosyasını çalıştırın ve .zap dosyasının yolunu iletin.

Örneğin:

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

Kur

Ayarlar'da açık veya koyu tema seçimi ve geliştirici araçlarını etkinleştirme ya da devre dışı bırakma gibi ZAP kullanıcı arayüzünü yapılandırabilirsiniz.

Seçenekler'i tıkladığınızda Ürün Üreticisi'ni ve Varsayılan Yanıt Politikası'nı seçebilir, ayrıca Komut Keşfi'ni etkinleştirebilir veya devre dışı bırakabilirsiniz.

ZAP Genel Seçenekleri

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

Kullan

Uç noktalar

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

Uç nokta - 0, tüm düğümle alakalı genel kümeleri (ör. ağ iletişimi, devreye alma, tanımlayıcı, operasyonel kimlik bilgileri ve OTA kümeleri) içerir.

ZAP Uç Noktası 0

Sonraki adımlarda, lighting-app örneğindeki Endpoint - 1 Matter kısılabilir ışığı inceleyip yapılandıracaksınız.

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

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

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

    ZAP Cihaz Seçimi

Daha fazla bilgi edinmek için Matter Başlangıç Kılavuzu'ndaki Cihazlar ve Uç Noktalar bölümüne bakın.

Kümeler

Önceden tanımlanmış kümeler, özellikler ve raporlama seçenekleri varsayılan olarak Uç nokta - 1'de etkindir.

Yalnızca etkinleştirilen kümeleri görüntülemek için Uç nokta - 1'i tıklayın ve Göster menüsünden Etkinleştirilen Kümeler'i seçin. Ayrıca kümeleri ada göre de arayabilirsiniz. Örneğin on.

ZAP Etkinleştirilmiş 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. Cihaz türünüz 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 Disable Cluster

Daha fazla bilgi için Matter Primer'daki Gruplar 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ırması

Burada özellikleri etkinleştirebilir veya devre dışı bırakabilir, çeşitli özellik seçeneklerini ayarlayabilir ve özellikleri adına göre arayabilirsiniz .

ZAP Özellikleri

Bu küme için işlemleri yapılandırmak üzere Komutlar'ı tıklayın. Örneğin, bir ışığın Açma/kapatma kümesi , Kapat ve Değiştir komutlarını içerir. Temperature Measurement kümesi gibi bazı kümelerle ilişkili komut olmayabilir.

ZAP Komutları

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

ZAP kaynak dosyaları oluşturma

Matter örneklerinde, connectedhomeip/zzz_generated dizininde bulunan ZAP tarafından oluşturulan kaynak kodu kullanılır. Bazı dosyalar uygulamaya özeldir. Diğer genel ZAP dosyaları ise 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 sayfasına gidin.
  3. İsteğe bağlı. 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 diğer kaynak kodlarını 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ı kullanma

Yaygın ZAP kaynak dosyaları (ör. Attributes.h in zzz_generated/app-common/app-common/zap-generated/ids/), 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'ı entegre etmenin çeşitli yolları 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'ı başlatmak için run_zaptool.sh'ı kullandığınızda bu komut dosyası aşağıdaki şablonları iletir:

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 örneklerinde kullanılan Matter şablon adını ve karşılık gelen çıktı 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 uygulayabileceğiniz birkaç adım vardır:

Kaynaklar

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