ZCL Gelişmiş Platform (ZAP)

ZCL Advanced Platform (ZAP), şunu temel alan bir node.js şablon motorudur: Matter küme.

ZAP, Matter uygulamaları ve SDK'lar:

  • Matter Uç Noktalarını, Kümelerini, Özelliklerini ve GUI arayüzünden diğer cihaz özelliklerini kullanır.
  • Otomatik olarak Veri Modeli tanımlarını oluşturan şablonlar, geri çağırmalar ve diğer Matter kaynak kodları.
  • SDK'larınıza dahil edilecek önceden yapılandırılmış ZAP dosyaları oluşturup kullanın.
ZAP Aracı

Yükle

  1. ZAP sürümleri'ne gidin sayfasını ziyaret edin.

  2. "En son" olarak etiketlenmiş yayını bulun (çoğu "Yayın öncesi" olarak etiketlenir).

  3. Bu sürümün altında, Öğeler başlığı altında paketi seçin. işletim sisteminize uygun bir sürüm 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 programı /usr/bin/ ürününe yüklenir. Şu tarihte: kullanıyorsanız ikili program başka bir yere yüklenebilir. Her koşulda, yürütülebilir dosyanın konumunun PATH ortamınızda olduğundan emin olun değişkenine eklenmelidir.

ZAP dosyaları

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

all-clusters-app.zap dosyası, connectedhomeip/examples/all-clusters-app/all-clusters-common, ortak Matter Küme ve üç küme ile önceden yapılandırılmıştır Matter İkincil Ağ dahil olmak üzere uç noktalar Cihaz Türünü Devreye Getirme. Bu, çeşitli kümeleri keşfetmek için iyi bir örnek. yapılandırmanın üç yolu vardır.

Çalıştır

  1. Matter örnekten birinden bir ZAP dosyası seçin.
  2. Matter deposunun kök dizininden (connectedhomeip) şu komutu çalıştırın: run_zaptool.sh sarmalayıcı komut dosyasını .zap dosyasına iletir.

Örneğin:

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

Kur

Ayarlar bölümünde yapılandırabilirsiniz. Açık veya koyu tema seçiminiz de dahil olmak üzere ZAP kullanıcı arayüzü ve geliştirici araçlarını etkinleştirme veya devre dışı bırakma.

Seçenekler'ı tıkladığınızda Ürününüzü Üretici, Varsayılan Yanıt Politikası ve komut etkinleştirme veya devre dışı bırakma Keşif:

ZAP Global Seçenekleri

Özel eklemek için Uzantılar'ı tıklayın ZCL kümelerini veya komutlarını Zigbee Küme Yapılandırıcısı'na gönderebilirsiniz.

Kullan

Uç noktalar

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

Uç Nokta - 0 ağ iletişimi, devreye alma, tanımlayıcı, işe alım ve sorumluluk gibi Operasyonel Kimlik Bilgileri ve OTA Kümeleri.

ZAP Uç Noktası 0

Sonraki adımlarda Uç Nokta - 1'i inceleyip yapılandıracaksınız. Matter lighting-app örneğindeki Kısılabilir Işık.

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

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

  3. İsteğe bağlı: Matter çeşitli cihaz türlerini destekler. İçinde 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çin

Daha fazla bilgi edinmek için: Cihazlar ve Uç noktalar Matter Primer.

Kümeler

Önceden Tanımlanmış Kümeler, Özellikler ve Raporlama seçenekleri Varsayılan olarak Uç nokta - 1.

Yalnızca etkin Kümeleri görüntülemek için Uç Nokta - 1 seçeneğini tıklayıp seçim yapın Show (Göster) bölümünden Etkin Kümeler. tıklayın. kümeyi de arayabilirsiniz ada göre (örneğin, on) girin.

ZAP'nin Etkin Olduğu Kümeler

Herhangi bir Kümeyi İstemci, Sunucu veya İstemci ve Server, use Etkinleştir açılır menüsünü tıklayın. Ayrıca bir ayarı devre dışı bırakmak için Etkin Değil'i sizin için geçerli olmayan önceden yapılandırılmış bir kümeden oluşur.

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

Daha fazla bilgi edinmek için: Kümeler Matter Primer'da.

Ö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 özelliklerini adına göre arayın.

ZAP Özellikleri

Bu Kümeye yönelik işlemleri yapılandırmak için Komutlar'ı tıklayın. Örneğin, Örneğin, bir ışığın Açık/Kapalı kümesinde Açık, Kapalı ve ve Toggle komutlarını kullanabilirsiniz. Örneğin, Temperature Measurement kümesiyle ilişkilendirilmiş komut bulunmayabilir.

ZAP Komutları

Daha fazla bilgi edinmek için: Özellikler ve Komutlar Matter Primer'da.

ZAP kaynak dosyaları oluşturma

Matter örnek, ZAP tarafından oluşturulan kaynak kodunu kullanır (mevcut) connectedhomeip/zzz_generated dizininde bulabilirsiniz. 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, entegrasyon için kaynak dosyaları projenize ekleyin.

  1. Oluştur'u tıklayın.
  2. ZAP çıkışını kaydetmek için bir klasör seçin. Örneğin, Şu tarih için connectedhomeip/zzz_generated/lighting-app/zap-generated: lighting-app.
  3. İsteğe bağlı. Dosyaları tercih ettiğiniz IDE'de açın.

ZAP, kendi uygulamanıza özel tanımlar, işlevler ve diğer kaynak kodlarını cihaz türü ve ZAP yapılandırmasına göre değişiyor.

ZAP Tarafından Oluşturulan Dosyalar

Örneğin callback-stub.cpp, bir küme geri çağırma yöntemi içerir. yalnızca etkinleştirdiğiniz Kümeleri 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ı, örneğin Attributes.h zzz_generated/app-common/app-common/zap-generated/ids/, şunlar için kullanılabilir: cihaz türü Özellikleri alma ve ayarlama:

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 ürününde nasıl kullanılabileceğini anladıktan sonra başka kaynak kodu varsa ZAP'yi entegre etmenin birkaç yolu vardır:

  • Şuna özel yeni örnekler oluşturmak için mevcut zzz_generated dosyalarını kullanın: kullanmanızı öneririz.
  • Projeleriniz için özel .zap dosyaları oluşturun.

Özelleştir

ZAP dosyaları ZAP'den oluşturulur şablonları ekleyin. ZAP'yi başlatmak için run_zaptool.sh kullandığınızda bu komut dosyası aşağıdaki şablonlar:

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ı tanımlar ve karşılık gelen çıkış dosyası olarak Matter örnekte kullanılmıştır.

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

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

Kaynaklar

Ek ZAP kaynakları için ZAP deposu (zap) bulabilirsiniz.