ZCL Advanced Platform (ZAP), एक Node.js टेंप्लेट इंजन है. यह Matter क्लस्टर पर आधारित है.
ZAP, Matter ऐप्लिकेशन और एसडीके के लिए ये सुविधाएं उपलब्ध कराता है:
- जीयूआई इंटरफ़ेस से, Matter एंडपॉइंट, क्लस्टर, एट्रिब्यूट, और डिवाइस की अन्य सुविधाओं को कॉन्फ़िगर करें.
- ऐसे टेंप्लेट बनाएं जो डेटा मॉडल की परिभाषाएं, कॉलबैक, और अन्य Matter सोर्स कोड अपने-आप जनरेट करते हों.
- अपने SDK टूल में शामिल करने के लिए, पहले से कॉन्फ़िगर की गई ZAP फ़ाइलें बनाएं और उनका इस्तेमाल करें.
इंस्टॉल करें
ZAP रिलीज़ पेज पर जाएं.
"नया" टैग वाली रिलीज़ देखें. ज़्यादातर रिलीज़ को "रिलीज़ से पहले" टैग किया जाएगा.
इस रिलीज़ में, ऐसेट हेडिंग में जाकर, अपने ऑपरेटिंग सिस्टम के लिए तय किया गया पैकेज चुनें और उसे डाउनलोड करें.
Debian या Ubuntu पर चलने वाली मशीन पर, ZAP इंस्टॉल करने के लिए:
sudo dpkg -i path/to/zap_installation_package
Debian या Ubuntu Linux पर, zap
बाइनरी /usr/bin/
में इंस्टॉल होती है. अन्य ऑपरेटिंग सिस्टम पर, बाइनरी को कहीं और इंस्टॉल किया जा सकता है. किसी भी मामले में, यह देख लें कि PATH
एनवायरमेंट वैरिएबल में, एक्सीक्यूटेबल की जगह मौजूद हो.
ZAP फ़ाइलें
ZAP, ZAP फ़ाइलों नाम की टेंप्लेट फ़ाइलों का इस्तेमाल करता है. ZAP फ़ाइल एक JSON फ़ाइल होती है, जिसमें एंडपॉइंट, निर्देश, एट्रिब्यूट, और डिवाइस की अन्य सुविधाओं के बारे में जानकारी होती है. ZAP फ़ाइलों के नाम .zap
पर खत्म होते हैं. उदाहरण के लिए, connectedhomeip/examples/lighting-app/lighting-common
में lighting-app.zap
.
all-clusters-app.zap
फ़ाइल, connectedhomeip/examples/all-clusters-app/all-clusters-common
में मिलती है. इसे सामान्य Matter क्लस्टर और तीन एंडपॉइंट के साथ पहले से कॉन्फ़िगर किया जाता है. इनमें Matter सेकंडरी नेटवर्क कमिशनिंग डिवाइस टाइप भी शामिल है. यह क्लस्टर के अलग-अलग कॉन्फ़िगरेशन को एक्सप्लोर करने का एक अच्छा उदाहरण है.
चलाएं
- Matter के उदाहरणों में से कोई एक ZAP फ़ाइल चुनें.
- Matter रिपॉज़िटरी (
connectedhomeip
) की रूट डायरेक्ट्री से,run_zaptool.sh
रैपर स्क्रिप्ट को चलाएं. इसके लिए,.zap
फ़ाइल का पाथ डालें.
उदाहरण के लिए:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
सेट अप करें
सेटिंग में जाकर, ZAP के यूज़र इंटरफ़ेस को कॉन्फ़िगर किया जा सकता है. इसमें, हल्के या गहरे रंग वाली थीम चुनने के साथ-साथ, डेवलपर टूल चालू या बंद करने का विकल्प भी शामिल है.
विकल्प पर क्लिक करके, प्रॉडक्ट मैन्युफ़ैक्चरर और डिफ़ॉल्ट जवाब की नीति चुनी जा सकती है. साथ ही, कमांड डिस्कवरी को चालू या बंद किया जा सकता है.
Zigbee क्लस्टर कॉन्फ़िगरर में कस्टम ZCL क्लस्टर या निर्देश जोड़ने के लिए,
एक्सटेंशन पर क्लिक करें.इस्तेमाल करें
एंडपॉइंट
lighting-app.zap
फ़ाइल को पहले से Matter
रूट नोड (एंडपॉइंट - 0) और Matter डायम किए जा सकने वाले लाइट (एंडपॉइंट - 1) के साथ कॉन्फ़िगर किया गया है.
एंडपॉइंट - 0 में ऐसे सामान्य क्लस्टर शामिल होते हैं जो पूरे नोड के लिए काम के होते हैं. जैसे, नेटवर्किंग, कमीशनिंग, डिस्क्रिप्टर, ऑपरेशनल क्रेडेंशियल, और ओटीए क्लस्टर.
अगले चरणों में, आपको उदाहरण lighting-app
में दिए गए एंडपॉइंट - 1
Matter मंद की जा सकने वाली लाइट की समीक्षा करनी होगी और उसे कॉन्फ़िगर करना होगा.
Matter repo
connectedhomeip
से, ZAP चलाएं.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
एंडपॉइंट - 1 पर क्लिक करें. इसके बाद,
बदलाव करें पर क्लिक करें.ज़रूरी नहीं: Matter कई तरह के डिवाइसों पर काम करता है. डिवाइस ड्रॉपडाउन में, अपना डिवाइस बदलने के लिए
matter
लिखना शुरू करें. इसके बाद, सेव करें पर क्लिक करें.
ज़्यादा जानने के लिए, MatterPrimer में डिवाइस और एंडपॉइंट देखें.
क्लस्टर
पहले से तय क्लस्टर, एट्रिब्यूट, और रिपोर्टिंग के विकल्प, डिफ़ॉल्ट रूप से एंडपॉइंट - 1 में चालू होते हैं.
सिर्फ़ चालू किए गए क्लस्टर देखने के लिए, एंडपॉइंट - 1 पर क्लिक करें. इसके बाद, दिखाएं मेन्यू से चालू किए गए क्लस्टर चुनें. on
.
किसी क्लस्टर को क्लाइंट, सर्वर या क्लाइंट और सर्वर के तौर पर चालू करने के लिए, चालू करें ड्रॉपडाउन का इस्तेमाल करें. आपके पास पहले से कॉन्फ़िगर किए गए ऐसे क्लस्टर को बंद करने का विकल्प भी होता है जो आपके डिवाइस टाइप पर लागू नहीं होता. इसके लिए, चालू नहीं है को चुनें.
ज़्यादा जानने के लिए, Matter प्राइमर में क्लस्टर देखें.
एट्रिब्यूट और निर्देश
एट्रिब्यूट और निर्देशों को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
On/Off
क्लस्टर ढूंढें.उसी लाइन में, कॉन्फ़िगर करें आइकॉन पर क्लिक करें
.
यहां एट्रिब्यूट चालू या बंद किए जा सकते हैं, एट्रिब्यूट के अलग-अलग विकल्प सेट किए जा सकते हैं, और नाम के हिसाब से एट्रिब्यूट खोजे
जा सकते हैं.इस क्लस्टर के लिए कार्रवाइयां कॉन्फ़िगर करने के लिए, कमांड पर क्लिक करें. उदाहरण के लिए, किसी लाइट के लिए चालू/बंद क्लस्टर में, चालू, बंद, और टॉगल निर्देश शामिल होंगे. हो सकता है कि Temperature Measurement
क्लस्टर जैसे कुछ क्लस्टर में कोई भी कमांड न हो.
ज़्यादा जानने के लिए, Matter प्राइमर में एट्रिब्यूट और कमांड देखें.
ZAP सोर्स फ़ाइलें जनरेट करना
Matter के उदाहरणों में, ZAP से जनरेट किए गए सोर्स कोड का इस्तेमाल किया गया है. यह कोड, connectedhomeip/zzz_generated
डायरेक्ट्री में उपलब्ध है. कुछ फ़ाइलें ऐप्लिकेशन के हिसाब से होती हैं, जबकि अन्य सामान्य ZAP फ़ाइलों को app-common
में ग्रुप किया जाता है.
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
एंडपॉइंट कॉन्फ़िगर होने के बाद, अपने प्रोजेक्ट में इंटिग्रेट करने के लिए सोर्स फ़ाइलें जनरेट की जा सकती हैं.
- जनरेट करें पर क्लिक करें.
- ZAP आउटपुट को सेव करने के लिए कोई फ़ोल्डर चुनें. उदाहरण के लिए,
lighting-app
के लिएconnectedhomeip/zzz_generated/lighting-app/zap-generated
पर जाएं. - Optional. फ़ाइलों को अपने पसंदीदा आईडीई में खोलें.
ZAP, आपके डिवाइस टाइप और ZAP कॉन्फ़िगरेशन के हिसाब से, तय करता है, फ़ंक्शन और अन्य सोर्स कोड जनरेट करता है.
उदाहरण के लिए, callback-stub.cpp
में क्लस्टर कॉलबैक का एक तरीका शामिल है, जिसमें सिर्फ़ वे क्लस्टर शामिल होते हैं जिन्हें आपने चालू किया है:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
ZAP सोर्स फ़ाइलों का इस्तेमाल करना
डिवाइस टाइप के एट्रिब्यूट पाने और सेट करने के लिए, सामान्य ZAP सोर्स फ़ाइलों का इस्तेमाल किया जा सकता है. उदाहरण के लिए, zzz_generated/app-common/app-common/zap-generated/ids/
में Attributes.h
:
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");
}
}
Matter सोर्स कोड में ZAP फ़ाइलों का इस्तेमाल करने का तरीका जानने के बाद, ZAP को इंटिग्रेट करने के कई तरीके हैं:
- अपने डिवाइस टाइप के हिसाब से नए उदाहरण बनाने के लिए, मौजूदा
zzz_generated
फ़ाइलों का इस्तेमाल करें. - अपने प्रोजेक्ट के लिए कस्टम
.zap
फ़ाइलें बनाएं.
कस्टमाइज़ करें
ZAP फ़ाइलें, ZAP टेंप्लेट से जनरेट होती हैं.
ZAP लॉन्च करने के लिए run_zaptool.sh
का इस्तेमाल करने पर, यह स्क्रिप्ट इन टेंप्लेट में पास होती है:
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 टेंप्लेट के नाम और Matter के उदाहरणों में इस्तेमाल की गई उस आउटपुट फ़ाइल के बारे में बताता है.
{
"path": "templates/app/callback-stub-src.zapt",
"name": "ZCL callback-stub source",
"output": "callback-stub.cpp"
}
अपने Matter समाधानों को पसंद के मुताबिक बनाने के लिए, ZAP के साथ काम करते समय ये कार्रवाइयां की जा सकती हैं:
संसाधन
ZAP के बारे में ज़्यादा संसाधनों के लिए, GitHub पर ZAP repo (zap
) देखें.