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

ZCL Advanced Platform (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 का यूज़र इंटरफ़ेस कॉन्फ़िगर किया जा सकता है. इसमें, हल्के या गहरे रंग वाली थीम की अपनी पसंद के साथ-साथ डेवलपर टूल को चालू या बंद करना भी शामिल है.

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

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

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

अपनी बिड को ऑटोमेट और ऑप्टिमाइज़ करने के लिए,

एंडपॉइंट

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

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

ZAP एंडपॉइंट 0

अगले चरणों में, Endpoint - 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 Primer में डिवाइस और एंडपॉइंट देखें.

क्लस्टर

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

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

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

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

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

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

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

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

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

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

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

ZAP विशेषताएं

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

ज़ैप से जनरेट की गई फ़ाइलें

उदाहरण के लिए, 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");
    }
}

जब आपको यह समझ आ जाता है कि ZAP फ़ाइलों को Matter सोर्स कोड में कैसे इस्तेमाल किया जा सकता है, तो 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 रेपो (zap) देखें.