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 yayınları 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 ZAP'yi yüklemek için şu komutu çalıştırın:
sudo dpkg -i path/to/zap_installation_package
Debian veya Ubuntu Linux'ta zap ikili dosyası /usr/bin/ içine 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.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ç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
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 Primer'daki 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 kümeleri
ada göre de arayabilirsiniz. Örneğin on.
Herhangi bir kümeyi istemci, sunucu veya istemci 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/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 ışığın Açma/kapatma kümesinde Aç, Kapat ve Değiştir komutları yer alır. Temperature Measurement kümesi gibi bazı kümelerle ilişkili komut olmayabilir.
Daha fazla bilgi edinmek için Matter Başlangıç Kılavuzu'ndaki Ö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-appiçinconnectedhomeip/zzz_generated/lighting-app/zap-generatedadresine 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_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 ö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ç sonraki 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.