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 uç noktalarını, kümelerini, özelliklerini ve diğer cihaz özelliklerini GUI arayüzünden yapılandırın.
- Veri modeli tanımlarını, geri çağırma işlevlerini 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şturun ve kullanın.
Yükle
ZAP sürümleri sayfasına gidin.
"En son" etiketli sürümü arayın (çoğu "Ön sürüm" etiketlidir).
Bu sürümün altındaki Öğeler başlığı altında, işletim sisteminiz için belirtilen paketi seçin ve 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'te zap
ikili dosyası /usr/bin/
'e yüklenir. Diğer işletim sistemlerinde ikili program başka bir yere yüklenmiş olabilir. Her durumda, yürütülebilir dosyanın konumunun PATH
ortam değişkeninizde bulunduğundan emin olun.
ZAP dosyaları
ZAP, ZAP dosyaları adlı şablon dosyaları 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çindeki lighting-app.zap
.
connectedhomeip/examples/all-clusters-app/all-clusters-common
konumunda bulunan all-clusters-app.zap
dosyası, yaygın Matter kümeleriyle ve Matter ikincil ağ devreye alma cihaz türü de dahil olmak üzere üç 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 örneklerden birini kullanarak bir 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 bölümünde, açık veya koyu tema seçiminiz 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 Üreticinizi, Varsayılan Yanıt Politikanızı seçebilir ve Komut Keşfi'ni etkinleştirebilir veya devre dışı bırakabilirsiniz.
Zigbee Küme Yapılandırıcı'ya özel ZCL kümeleri veya komutlar eklemek için
Uzantılar'ı tıklayın.Kullan
Uç noktalar
lighting-app.zap
dosyası, bir Matter Kök Düğümü (Uç Noktası - 0) ve bir Matter Karartılabilir Işık (Uç Noktası - 1) ile önceden yapılandırılmıştır.
Uç noktası - 0, düğümün tamamıyla alakalı genel kümeleri (ör. ağ iletişimi, devreye alma, tanımlayıcı, işlevsel kimlik bilgileri ve OTA kümeleri) içerir.
Sonraki adımlarda, lighting-app
örneğindeki Uç Nokta - 1
Matter Karartılabilir Işık'ı 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 menüsünde, cihazınızı değiştirmek için
matter
yazmaya başlayın ve ardından KAYDET'i tıklayın.
Daha fazla bilgi edinmek için Matter Primer'deki 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 Bitiş noktası - 1'de etkindir.
Yalnızca etkin kümeleri görüntülemek için Uç Nokta - 1'i tıklayın ve Göster menüsünden Etkin Kümeler'i seçin. on
).
Bir kümeyi İstemci, Sunucu veya İstemci ve Sunucu olarak etkinleştirmek için Etkinleştir açılır menüsünü kullanın. Cihaz türünüz için geçerli olmayan önceden yapılandırılmış bir kümeyi devre dışı bırakmak üzere Etkin Değil'i de seçebilirsiniz.
Daha fazla bilgi edinmek için Matter Primer'deki 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 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ümesi Açık, Kapalı ve Aç/Kapat komutlarını içerir. Temperature Measurement
Kümesi gibi bazı kümelerde ilişkili komut olmayabilir.
Daha fazla bilgi edinmek için Matter Primer'deki Ö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 ö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 projenize entegre edilecek kaynak dosyalar oluşturabilirsiniz.
- Oluştur'u tıklayın.
- ZAP çıkışının kaydedileceği klasörü seçin. Örneğin,
lighting-app
içinconnectedhomeip/zzz_generated/lighting-app/zap-generated
bölümüne 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 Cluster 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 yaygın ZAP kaynak dosyaları (ör. zzz_generated/app-common/app-common/zap-generated/ids/
içindeki Attributes.h
) 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 kaynak kodunda nasıl kullanılabileceğini anladıktan sonra ZAP'ı entegre etmenin birkaç yolu vardır:Matter
- Cihaz türlerinize özgü 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 ş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
Daha fazla ZAP kaynağı için GitHub'daki ZAP deposuna (zap
) bakın.