ZCL Advanced Platform (ZAP), Matter kümelerini temel alan bir node.js şablon motorudur.
ZAP, Matter uygulamaları ve SDK'ları için aşağıdaki özellikleri sunar:
- Matter uç noktalarını, kümelerini, özelliklerini 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 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şturup kullanın.
Yükle
ZAP sürümleri sayfasına gidin.
"En son" olarak etiketlenen sürümü bulun (çoğu "Yayın öncesi" 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 programı /usr/bin/ dizinine yüklenir. 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ı, ö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 dizininde bulunan all-clusters-app.zap dosyası, yaygın Matter kümeleri ve Matter ikincil ağ devreye alma cihaz türü de dahil olmak üzere üç 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 örneklerinden bir ZAP dosyası seçin.
- Matter deposunun (
connectedhomeip) kök dizinindenrun_zaptool.shsarmalayıcı komut dosyasını çalıştırın ve.zapdosyasının yolunu iletin.
Örneğin:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zapKur
Ayarlar'da, açık veya koyu tema seçiminizi 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 Üreticisi ve Varsayılan Yanıt Politikası'nı seçebilir, Komut Keşfi'ni 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ı, bir Matter kök düğüm (uç nokta - 0) ve bir Matter kısılabilir ışık (uç nokta - 1) ile önceden yapılandırılmıştır.
Uç nokta - 0, düğümün tamamıyla alakalı genel kümeleri içerir (ör. Ağ, Devreye Alma, Tanımlayıcı, İşletim Kimlik Bilgileri ve OTA Kümeleri).
Sonraki adımlarda, örnekteki lighting-app Uç nokta - 1
Matter Kısılabilir Işık'ı inceleyip yapılandıracaksınız.
Matter deposundan
connectedhomeipZAP'ı çalıştırın.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapUç 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
matteryazmaya başlayın, ardından KAYDET'i tıklayın.
Daha fazla bilgi edinmek için Matter Temel Bilgiler'deki 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 etkinleştirilmiş kümeleri görüntülemek için Uç nokta - 1'i tıklayın ve Göster menüsünden Etkinleştirilmiş kümeler'i seçin. kümelerini ada göre de arayabilirsiniz (ör. 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 edinmek için Matter Temel Bilgiler bölümündeki Kümeler konusuna bakın.
Özellikler ve Komutlar
Özellikleri ve komutları yapılandırmak için aşağıdaki adımları uygulayın:
On/Offkü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 ada göre arayabilirsiniz .
Bu küme için işlemleri yapılandırmak üzere Komutlar'ı tıklayın. Örneğin, bir ışık için Açma/kapatma kümesi Aç, Kapat ve Değiştir komutlarını içerir. Temperature Measurement kümesi gibi bazı kümelerin ilişkili komutları 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şturulmuş kaynak kodu kullanılır. Bazı dosyalar uygulamaya özeldir, diğer genel ZAP dosyaları ise app-common klasöründe 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ı kaydetmek için bir klasör seçin. Örneğin,
lighting-appiçinconnectedhomeip/zzz_generated/lighting-app/zap-generatedsayfası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ı 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
Cihaz türü özelliklerini almak ve ayarlamak için zzz_generated/app-common/app-common/zap-generated/ids/ içindeki Attributes.h gibi yaygın ZAP kaynak dosyaları 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 anladıktan sonra ZAP'ı entegre etmenin birkaç yolu vardır:
- Cihaz türlerinize özgü yeni örnekler oluşturmak için mevcut
zzz_generateddosyalarını kullanın. - Projeleriniz için özel
.zapdosyaları 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:
- ZAP şablonları oluşturun.
- ZAP'ı SDK'nıza entegre edin.
Kaynaklar
Ek ZAP kaynakları için GitHub'daki ZAP deposuna (zap) göz atın.