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.

Yükle
ZAP sürümleri sayfasına gidin.
"En yeni" olarak etiketlenmiş sürümü bulun (çoğu "Yayın öncesi sürüm" olarak etiketlenir).
Bu sürümde, Öğeler başlığı altında işletim sisteminiz için belirlenen paketi seçip indirin.
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
- Matter örneklerden birinde ZAP dosyası seçin.
- 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.

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.

Sonraki adımlarda, lighting-app
örneğindeki Endpoint - 1
Matter kısılabilir ışığı inceleyip yapılandıracaksınız.
Matter deposundan
connectedhomeip
ZAP'ı çalıştırın.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Uç nokta - 1'i, ardından
DÜZENLE'yi tıklayın.İ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.
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 on
.

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.

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:
On/Off
Kümesini bulun.Aynı satırda Yapılandır simgesini
tıklayın.
Burada özellikleri etkinleştirebilir veya devre dışı bırakabilir, çeşitli özellik seçeneklerini ayarlayabilir ve özellikleri adına göre arayabilirsiniz
.
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ç, Kapat ve Değiştir komutlarını içerir. Temperature Measurement
kümesi gibi bazı kümelerle ilişkili komut olmayabilir.

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.
- Oluştur'u tıklayın.
- ZAP çıkışının kaydedileceği bir klasör seçin. Örneğin,
lighting-app
içinconnectedhomeip/zzz_generated/lighting-app/zap-generated
sayfasına gidin. - İ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.

Ö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:
- ZAP şablonları oluşturun.
- ZAP'yi SDK'nıza entegre edin.
Kaynaklar
Ek ZAP kaynakları için GitHub'daki ZAP deposuna
(zap
) bakın.