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

ZCL बेहतर प्लैटफ़ॉर्म (ZAP) एक node.js टेंप्लेट इंजन है, जो Matter क्लस्टर पर आधारित है.

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

  • किसी जीयूआई इंटरफ़ेस से Matter एंडपॉइंट, क्लस्टर, एट्रिब्यूट, और डिवाइस की दूसरी सुविधाओं को कॉन्फ़िगर करें.
  • ऐसे टेंप्लेट बनाएं जो अपने-आप डेटा मॉडल की परिभाषाएं, कॉलबैक, और अन्य 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.

connectedhomeip/examples/all-clusters-app/all-clusters-common में मौजूद all-clusters-app.zap फ़ाइल को सामान्य 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 यूज़र इंटरफ़ेस को कॉन्फ़िगर किया जा सकता है. इसमें हल्के या गहरे रंग वाली थीम को चुना जा सकता है और डेवलपर टूल को चालू या बंद किया जा सकता है.

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

ZAP के ग्लोबल विकल्प

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

बिक्री और आय बढ़ाने के लिए,

एंडपॉइंट

lighting-app.zap फ़ाइल को Matter रूट नोड (एंडपॉइंट - 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 Select डिवाइस

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

क्लस्टर

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

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

ZAP की सुविधा वाले क्लस्टर

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

ZAP बंद करें क्लस्टर

ज़्यादा जानने के लिए, Matter Primer में क्लस्टर देखें.

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

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

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

    ZAP कॉन्फ़िगर करें

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

ZAP एट्रिब्यूट

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

ZAP निर्देश

ज़्यादा जानने के लिए, 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>

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

  1. जनरेट करें पर क्लिक करें.
  2. ZAP आउटपुट को सेव करने के लिए कोई फ़ोल्डर चुनें. उदाहरण के लिए, lighting-app के लिए connectedhomeip/zzz_generated/lighting-app/zap-generated पर जाएं.
  3. Optional. अपने पसंदीदा IDE में फ़ाइलें खोलें.

ZAP आपके डिवाइस टाइप और 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"
}

ZAP के साथ काम करते समय, Matter सलूशन को पसंद के मुताबिक बनाने के लिए, ये कदम उठाए जा सकते हैं:

संसाधन

ZAP के अन्य संसाधनों के लिए, GitHub पर ZAP रेपो (zap) देखें.