ZCL Advanced Platform (ZAP), node.js टेंप्लेट इंजन है. यह Matter क्लस्टर पर आधारित है.
ZAP, Matter ऐप्लिकेशन और एसडीके के लिए ये सुविधाएं उपलब्ध कराता है:
- GUI इंटरफ़ेस से Matter एंडपॉइंट, क्लस्टर, एट्रिब्यूट, और डिवाइस की अन्य सुविधाएं कॉन्फ़िगर करें.
- ऐसे टेंप्लेट बनाएं जो डेटा मॉडल की परिभाषाएं, कॉलबैक, और अन्य Matter सोर्स कोड अपने-आप जनरेट करते हैं.
- अपने एसडीके टूल में शामिल करने के लिए, पहले से कॉन्फ़िगर की गई ZAP फ़ाइलें बनाएं और उनका इस्तेमाल करें.
इंस्टॉल करें
ZAP रिलीज़ पेज पर जाएं.
"Latest" के तौर पर टैग की गई रिलीज़ ढूंढें. ज़्यादातर रिलीज़ "प्री-रिलीज़" के तौर पर टैग की गई होंगी.
इस रिलीज़ में, ऐसेट हेडिंग में जाकर, अपने ऑपरेटिंग सिस्टम के लिए तय किया गया पैकेज चुनें और उसे डाउनलोड करें.
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.
connectedhomeip/examples/all-clusters-app/all-clusters-common में मौजूद all-clusters-app.zap फ़ाइल में, सामान्य 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 Clusters Configurator में कस्टम ZCL क्लस्टर या कमांड जोड़ने के लिए, एक्सटेंशन पर क्लिक करें.
इस्तेमाल करें
एंडपॉइंट
lighting-app.zap फ़ाइल में, Matter रूट नोड (एंडपॉइंट - 0) और Matter डिमेबल लाइट (एंडपॉइंट - 1) पहले से कॉन्फ़िगर किए गए हैं.
एंडपॉइंट - 0 में ऐसे सामान्य क्लस्टर शामिल होते हैं जो पूरे नोड के लिए काम के होते हैं. उदाहरण के लिए, नेटवर्किंग, कमीशनिंग, डिस्क्रिप्टर, ऑपरेशनल क्रेडेंशियल, और ओटीए क्लस्टर.
अगले चरणों में, आपको उदाहरण lighting-app से एंडपॉइंट - 1
Matter डिमेबल लाइट की समीक्षा करनी होगी और उसे कॉन्फ़िगर करना होगा.
Matter रेपो
connectedhomeipसे, ZAP चलाएं.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapएंडपॉइंट - 1 पर क्लिक करें. इसके बाद, बदलाव करें पर क्लिक करें.
ज़रूरी नहीं: Matter कई तरह के डिवाइसों पर काम करता है. डिवाइस ड्रॉपडाउन में,
matterटाइप करके अपना डिवाइस बदलें. इसके बाद, सेव करें पर क्लिक करें.
ज़्यादा जानने के लिए, Matter प्राइमर में डिवाइस और एंडपॉइंट देखें.
क्लस्टर
पहले से तय किए गए क्लस्टर, एट्रिब्यूट, और रिपोर्टिंग के विकल्प, एंडपॉइंट - 1 में डिफ़ॉल्ट रूप से चालू होते हैं.
सिर्फ़ चालू किए गए क्लस्टर दिखाने के लिए, एंडपॉइंट - 1 पर क्लिक करें. इसके बाद, दिखाएं मेन्यू से चालू किए गए क्लस्टर चुनें. क्लस्टर
को नाम से भी खोजा जा सकता है. उदाहरण के लिए, on.
किसी क्लस्टर को क्लाइंट, सर्वर या क्लाइंट और सर्वर के तौर पर चालू करने के लिए, चालू करें ड्रॉपडाउन का इस्तेमाल करें. आपके पास चालू नहीं है विकल्प चुनने का भी विकल्प होता है. इससे, पहले से कॉन्फ़िगर किए गए ऐसे क्लस्टर को बंद किया जा सकता है जो आपके डिवाइस टाइप पर लागू नहीं होता.
ज़्यादा जानने के लिए, Matter प्राइमर में क्लस्टर सेक्शन देखें.
एट्रिब्यूट और निर्देश
एट्रिब्यूट और कमांड कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
On/Offक्लस्टर ढूंढें.उसी लाइन में, कॉन्फ़िगर करें आइकॉन पर क्लिक करें.
यहां एट्रिब्यूट चालू या बंद किए जा सकते हैं. साथ ही, एट्रिब्यूट के अलग-अलग विकल्प सेट किए जा सकते हैं. इसके अलावा, नाम के हिसाब से एट्रिब्यूट खोजे जा सकते हैं.
इस क्लस्टर के लिए कार्रवाइयां कॉन्फ़िगर करने के लिए, कमांड पर क्लिक करें. उदाहरण के लिए, लाइट के लिए चालू/बंद करें क्लस्टर में चालू करें, बंद करें, और टॉगल करें कमांड शामिल होंगी. ऐसा हो सकता है कि कुछ क्लस्टर, जैसे कि Temperature Measurement क्लस्टर से कोई कमांड जुड़ी न हो.
ज़्यादा जानने के लिए, Matter Primer में ऐट्रिब्यूट और कमांड देखें.
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. अपनी पसंद के IDE में फ़ाइलें खोलें.
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 के साथ काम करते समय कई अगले चरण पूरे किए जा सकते हैं:
संसाधन
ज़ैप के अन्य संसाधनों के लिए, GitHub पर ज़ैप रेपो
(zap) देखें.