ZCL Advanced Platform (ZAP), node.js टेंप्लेट इंजन है. यह Matter क्लस्टर पर आधारित है.
Matter ऐप्लिकेशन और एसडीके के लिए, ZAP की ये सुविधाएं उपलब्ध हैं:
- जीयूआई इंटरफ़ेस से, Matter एंडपॉइंट, क्लस्टर, एट्रिब्यूट, और डिवाइस की अन्य सुविधाएं कॉन्फ़िगर करना.
- ऐसे टेंप्लेट बनाना जिनसे डेटा मॉडल की परिभाषाएं, कॉलबैक, और अन्य Matter सोर्स कोड अपने-आप जनरेट हो जाता है.
- अपने एसडीके के साथ शामिल करने के लिए, पहले से कॉन्फ़िगर की गई 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 के यूज़र इंटरफ़ेस (यूआई) को कॉन्फ़िगर किया जा सकता है. इसमें हल्के या गहरे रंग वाली थीम चुनना और डेवलपर टूल को चालू या बंद करना शामिल है.
ट्यून विकल्प पर क्लिक करके, प्रॉडक्ट बनाने वाली कंपनी, डिफ़ॉल्ट रिस्पॉन्स पॉलिसी चुनी जा सकती है. साथ ही, कमांड डिस्कवरी को चालू या बंद किया जा सकता है.
कस्टम ZCL क्लस्टर या कमांड को Zigbee Clusters Configurator में जोड़ने के लिए, एक्सटेंशन पर क्लिक करें.
इस्तेमाल करें
एंडपॉइंट
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टाइप करना शुरू करें. इसके बाद, सेव करें पर क्लिक करें.
ज़्यादा जानने के लिए, Primer में डिवाइस और एंडपॉइंट देखें. Matter
क्लस्टर
पहले से तय क्लस्टर, एट्रिब्यूट, और रिपोर्टिंग के विकल्प, एंडपॉइंट - 1 में डिफ़ॉल्ट रूप से चालू होते हैं.
सिर्फ़ चालू क्लस्टर दिखाने के लिए, एंडपॉइंट - 1 पर क्लिक करें. इसके बाद, दिखाएं मेन्यू से चालू क्लस्टर चुनें. क्लस्टर को नाम से भी खोजा जा सकता है. उदाहरण के लिए, on.
किसी भी क्लस्टर को क्लाइंट, सर्वर या क्लाइंट और सर्वर के तौर पर चालू करने के लिए, चालू करें ड्रॉपडाउन का इस्तेमाल करें. पहले से कॉन्फ़िगर किए गए किसी ऐसे क्लस्टर को बंद करने के लिए, चालू नहीं किया गया को भी चुना जा सकता है जो आपके डिवाइस के टाइप पर लागू नहीं होता.
ज़्यादा जानने के लिए, Matter Primer में क्लस्टर देखें.
एट्रिब्यूट और निर्देश
एट्रिब्यूट और निर्देश कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
On/Offक्लस्टर ढूंढें.उसी लाइन में, कॉन्फ़िगर करें आइकॉन पर क्लिक करें.
यहां एट्रिब्यूट को चालू या बंद किया जा सकता है. साथ ही, अलग-अलग एट्रिब्यूट के विकल्प सेट किए जा सकते हैं. इसके अलावा, नाम डालकर एट्रिब्यूट खोजें जा सकते हैं.
इस क्लस्टर के लिए कार्रवाइयां कॉन्फ़िगर करने के लिए, निर्देश पर क्लिक करें. उदाहरण के लिए, लाइट के लिए On/off क्लस्टर में 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पर जाएं. - ज़रूरी नहीं. अपनी पसंद के आईडीई में फ़ाइलें खोलें.
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 के Matter सोर्स कोड में, ZAP फ़ाइलों का इस्तेमाल करने का तरीका समझने के बाद, ZAP को इंटिग्रेट करने के कई तरीके हैं:
- अपने डिवाइस के टाइप के हिसाब से नए उदाहरण बनाने के लिए, मौजूदा
zzz_generatedफ़ाइलों का इस्तेमाल करें. - अपने प्रोजेक्ट के लिए, कस्टम
.zapफ़ाइलें बनाएं.
कस्टमाइज़ करें
ZAP फ़ाइलें, ZAP
टेंप्लेट से जनरेट की जाती हैं.
run_zaptool.sh का इस्तेमाल करके ZAP लॉन्च करने पर, यह स्क्रिप्ट इन टेंप्लेट को पास करती है:
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 के डेटाबेस (zap) पर जाएं.