ZCL बेहतर प्लैटफ़ॉर्म (ZAP)

ZCL Advanced Platform (ZAP) एक node.js टेंप्लेट इंजन है जो Matter क्लस्टर.

ZAP, Matter ऐप्लिकेशन के लिए ये सुविधाएं उपलब्ध कराता है और SDK टूल:

  • Matter एंडपॉइंट, क्लस्टर, एट्रिब्यूट, और कॉन्फ़िगर करें GUI इंटरफ़ेस की दूसरी डिवाइस सुविधाएं.
  • ऐसे टेंप्लेट बनाएं जो डेटा मॉडल की परिभाषाएं अपने-आप जनरेट करते हैं. कॉलबैक, और अन्य Matter सोर्स कोड.
  • अपने SDK टूल के साथ शामिल करने के लिए, पहले से कॉन्फ़िगर की गई ZAP फ़ाइलें बनाएं और उनका इस्तेमाल करें.
ZAP टूल

इंस्टॉल करें

  1. ZAP रिलीज़ पर जाएं करें.

  2. "सबसे नई" टैग की गई रिलीज़ खोजें (ज़्यादातर को "रिलीज़-पूर्व" के रूप में टैग किया जाएगा).

  3. इस रिलीज़ में, ऐसेट हेडिंग के नीचे मौजूद पैकेज को चुनें आपके ऑपरेटिंग सिस्टम के लिए तय किया गया है और इसे डाउनलोड करें.

  4. 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 सेकंडरी नेटवर्क भी शामिल है किस तरह का डिवाइस चालू किया जा रहा है. यह क्लस्टर के अलग-अलग कॉन्फ़िगरेशन को एक्सप्लोर करने का एक अच्छा उदाहरण है.

चलाएं

  1. Matter के उदाहरणों में से कोई एक ZAP फ़ाइल चुनें.
  2. Matter रिपॉज़िटरी (connectedhomeip) की रूट डायरेक्ट्री से, run_zaptool.sh रैपर स्क्रिप्ट चलाएं. इसके लिए, .zap फ़ाइल का पाथ डालें.

उदाहरण के लिए:

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap

सेट अप करें

सेटिंग में, कॉन्फ़िगर किया जा सकता है ZAP का यूज़र इंटरफ़ेस, जिसमें हल्के या गहरे रंग वाली थीम की आपकी पसंद शामिल है और डेवलपर टूल को चालू या बंद करना.

विकल्प पर क्लिक करने से, आपको अपना प्रॉडक्ट चुनने में मदद मिलती है Manufacturer में, जवाब देने की डिफ़ॉल्ट नीति और निर्देश चालू या बंद करें खोजना.

ज़ैप ग्लोबल ऑप्शन

कस्टम एक्सटेंशन जोड़ने के लिए, एक्सटेंशन पर क्लिक करें ZCL क्लस्टर या Zigbee Clusters Configurator को भेजने के लिए निर्देश.

इस्तेमाल करें

एंडपॉइंट

lighting-app.zap फ़ाइल, Matter की मदद से पहले से कॉन्फ़िगर की गई है रूट नोड (Endpoint - 0) और Matter की रोशनी कम करने वाली लाइट (एंडपॉइंट - 1).

एंडपॉइंट - 0 में ऐसे सामान्य क्लस्टर शामिल होते हैं जो पूरे नोड के लिए ज़रूरी है, जैसे कि नेटवर्किंग, कमीशन, डिस्क्रिप्टर, ऑपरेशनल क्रेडेंशियल और ओटीए क्लस्टर.

ZAP एंडपॉइंट 0

अगले चरणों में, आपको एंडपॉइंट - 1 की समीक्षा करके उसे कॉन्फ़िगर करना होगा Matter lighting-app के उदाहरण से धुंधली लाइट.

  1. Matter रेपो connectedhomeip से, ZAP चलाएं.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. एंडपॉइंट - 1 पर क्लिक करें, फिर बदलाव करें.

  3. ज़रूरी नहीं: Matter कई तरह के डिवाइस के साथ काम करता है. तय सीमा में डिवाइस ड्रॉपडाउन में, अपना डिवाइस बदलने के लिए matter टाइप करें. इसके बाद, सेव करें पर क्लिक करें.

    ZAP चुनिंदा डिवाइस

ज़्यादा जानकारी के लिए, यह लेख पढ़ें डिवाइस और एंडपॉइंट Matter प्राइमर.

क्लस्टर

पहले से तय क्लस्टर, एट्रिब्यूट, और रिपोर्टिंग विकल्प इनमें चालू हैं डिफ़ॉल्ट रूप से एंडपॉइंट - 1.

सिर्फ़ चालू किए गए क्लस्टर देखने के लिए, एंडपॉइंट - 1 पर क्लिक करें. इसके बाद, दिखाएं मेन्यू से चालू किए गए क्लस्टर चुनें. क्लस्टर भी खोजे जा सकते हैं नाम से, उदाहरण के लिए on.

ZAP चालू क्लस्टर

किसी क्लस्टर को क्लाइंट, सर्वर या क्लाइंट और सर्वर के तौर पर चालू करने के लिए, चालू करें ड्रॉपडाउन का इस्तेमाल करें. आप चाहें, तो चालू नहीं है को चुनकर, पहले से कॉन्फ़िगर किया गया क्लस्टर जो आपके डिवाइस टाइप पर लागू नहीं होता.

ZAP बंद करने वाला क्लस्टर

ज़्यादा जानकारी के लिए, यह लेख पढ़ें क्लस्टर Matter प्राइमर में.

एट्रिब्यूट और निर्देश

एट्रिब्यूट और कमांड कॉन्फ़िगर करने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. On/Off क्लस्टर ढूंढें.
  2. उसी लाइन में, 'कॉन्फ़िगर करें' आइकॉन पर क्लिक करें .

    ZAP कॉन्फ़िगर करना

यहां आप विशेषताओं को चालू या बंद कर सकते है, कई विशेषता विकल्प सेट कर सकते हैं, और नाम के हिसाब से एट्रिब्यूट खोजें .

ZAP विशेषताएं

इस क्लस्टर के लिए कार्रवाइयां कॉन्फ़िगर करने के लिए Commands पर क्लिक करें. इसके लिए उदाहरण के लिए, लाइट के लिए चालू/बंद क्लस्टर में चालू, बंद, और टॉगल कमांड इस्तेमाल करें. कुछ क्लस्टर, जैसे Temperature Measurement क्लस्टर में, हो सकता है कि उससे जुड़ा कोई निर्देश न हो.

ZAP कमांड

ज़्यादा जानकारी के लिए, यह लेख पढ़ें एट्रिब्यूट और निर्देश 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>

एंडपॉइंट कॉन्फ़िगर होने के बाद, इंटिग्रेट करने के लिए सोर्स फ़ाइलें जनरेट की जा सकती हैं को भी शामिल करें.

  1. जनरेट करें पर क्लिक करें.
  2. ZAP आउटपुट को सेव करने के लिए कोई फ़ोल्डर चुनें. उदाहरण के लिए, connectedhomeip/zzz_generated/lighting-app/zap-generated lighting-app.
  3. 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 सोर्स फ़ाइलें, जैसे कि Attributes.h zzz_generated/app-common/app-common/zap-generated/ids/ का इस्तेमाल इन कामों के लिए किया जा सकता है डिवाइस टाइप की विशेषताएं पाएं और सेट करें:

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 संसाधनों के लिए, यह देखें: ZAP रेपो (zap) GitHub पर.