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 uç noktalarını, kümelerini, özelliklerini ve diğer cihaz özelliklerini GUI arayüzünden yapılandırın.
  • Veri modeli tanımlarını, geri çağırma işlevlerini ve diğer Matter kaynak kodlarını otomatik olarak oluşturan şablonlar oluşturun.
  • SDK'larınıza dahil etmek 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 son" etiketli sürümü arayın (çoğu "Ön sürüm" etiketlidir).

  3. Bu sürümün altındaki Öğeler başlığı altında, işletim sisteminiz için belirtilen paketi seçin ve 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'te zap ikili dosyası /usr/bin/'e yüklenir. Diğer işletim sistemlerinde ikili program başka bir yere yüklenmiş olabilir. Her durumda, yürütülebilir dosyanın konumunun PATH ortam değişkeninizde bulunduğundan emin olun.

ZAP dosyaları

ZAP, ZAP dosyaları adlı şablon dosyaları 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çindeki lighting-app.zap.

connectedhomeip/examples/all-clusters-app/all-clusters-common konumunda bulunan all-clusters-app.zap dosyası, yaygın Matter kümeleriyle ve Matter ikincil ağ devreye alma cihaz türü de dahil olmak üzere üç 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 örneklerden birini kullanarak bir 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 bölümünde, açık veya koyu tema seçiminiz ve geliştirici araçlarını etkinleştirme ya da devre dışı bırakma dahil olmak üzere ZAP kullanıcı arayüzünü yapılandırabilirsiniz.

Seçenekler'i tıklayarak Ürün Üreticinizi, Varsayılan Yanıt Politikanızı seçebilir ve Komut Keşfi'ni etkinleştirebilir veya devre dışı bırakabilirsiniz.

ZAP Global Seçenekleri

Zigbee Küme Yapılandırıcı'ya özel ZCL kümeleri veya komutlar eklemek için Uzantılar'ı tıklayın.

Kullan

Uç noktalar

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

Uç noktası - 0, düğümün tamamıyla alakalı genel kümeleri (ör. ağ iletişimi, devreye alma, tanımlayıcı, işlevsel kimlik bilgileri ve OTA kümeleri) içerir.

ZAP Uç Noktası 0

Sonraki adımlarda, lighting-app örneğindeki Uç Nokta - 1 Matter Karartılabilir Işık'ı 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 menüsünde, cihazınızı değiştirmek için matter yazmaya başlayın ve ardından KAYDET'i tıklayın.

    ZAP Cihaz Seçin

Daha fazla bilgi edinmek için Matter Primer'deki 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 Bitiş noktası - 1'de etkindir.

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

ZAP Etkin Kümeler

Bir kümeyi İstemci, Sunucu veya İstemci ve Sunucu olarak etkinleştirmek için Etkinleştir açılır menüsünü kullanın. Cihaz türünüz için geçerli olmayan önceden yapılandırılmış bir kümeyi devre dışı bırakmak üzere Etkin Değil'i de seçebilirsiniz.

ZAP Kümeyi Devre Dışı Bırakma

Daha fazla bilgi edinmek için Matter Primer'deki 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 ada 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 Açık, Kapalı ve Aç/Kapat komutlarını içerir. Temperature Measurement Kümesi gibi bazı kümelerde ilişkili komut olmayabilir.

ZAP Komutları

Daha fazla bilgi edinmek için Matter Primer'deki Ö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 özeldir, diğer genel ZAP dosyaları ise app-common altında 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 klasörü seçin. Örneğin, lighting-app için connectedhomeip/zzz_generated/lighting-app/zap-generated bölümüne 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ı oluşturur.

ZAP Tarafından Oluşturulan Dosyalar

Örneğin, callback-stub.cpp yalnızca etkinleştirdiğiniz kümeleri içeren bir Cluster 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

Cihaz türü özelliklerini almak ve ayarlamak için yaygın ZAP kaynak dosyaları (ör. zzz_generated/app-common/app-common/zap-generated/ids/ içindeki Attributes.h) 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 kaynak kodunda nasıl kullanılabileceğini anladıktan sonra ZAP'ı entegre etmenin birkaç yolu vardır:Matter

  • Cihaz türlerinize özgü 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 şablon adını ve Matter örneklerinde 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 uygulayabileceğiniz birkaç adım vardır:

Kaynaklar

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