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.
Yükle
ZAP sürümleri sayfasına gidin.
"En son" etiketli sürümü arayın (çoğu, "Yayın öncesi" şeklinde etiketlenir).
Bu sürümün altında, Öğeler başlığı altında işletim sisteminiz için atanan paketi seçin ve indirin.
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
- Matter örneklerinden birinden bir ZAP dosyası seçin.
- Matter deposunun (
connectedhomeip
) kök dizinindenrun_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.
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.
Sonraki adımlarda Uç nokta - 1 öğesini inceleyip yapılandıracaksınız.
Matter lighting-app
örneğindeki karartılabilir ışık.
Matter kod deposundan
connectedhomeip
, ZAP'yi çalıştırın.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
Uç nokta - 1, ardından
DÜZENLE'yi tıklayın.İ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.
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. on
).
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.
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:
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 ada göre
Arama özellikleri belirleyebilirsiniz.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.
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.
- 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
adresine gidin. - 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.
Ö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:
- ZAP şablonları oluşturun.
- ZAP'yi SDK'nıza entegre edin.
Kaynaklar
Daha fazla ZAP kaynakları için GitHub'daki ZAP deposuna (zap
) bakın.