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

ZCL Advanced Platform (ज़ेडएपी), node.js टेंप्लेट इंजन है. यह Matter Clusters पर आधारित है.

ज़ेडएपी, Matter ऐप्लिकेशन और एसडीके के लिए ये सुविधाएं उपलब्ध कराता है:

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

इंस्टॉल करें

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

  2. ऐसी रिलीज़ ढूंढें जिसे "सबसे नया" टैग किया गया हो. ज़्यादातर रिलीज़ को "प्री-रिलीज़" टैग किया जाता है.

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

  4. Debian या Ubuntu पर चलने वाली मशीन पर, ज़ेडएपी इंस्टॉल करने के लिए यह निर्देश चलाएं:

    sudo dpkg -i path/to/zap_installation_package

Debian या Ubuntu Linux पर, zap बाइनरी, /usr/bin/ में इंस्टॉल होती है. अन्य ऑपरेटिंग सिस्टम पर, बाइनरी कहीं और इंस्टॉल हो सकती है. किसी भी मामले में, यह पक्का करें कि एक्ज़ीक्यूटेबल की जगह, आपके PATH एनवायरमेंट वैरिएबल में हो.

ज़ेडएपी फ़ाइलें

ज़ेडएपी, टेंप्लेट फ़ाइलों का इस्तेमाल करता है. इन्हें ज़ेडएपी फ़ाइलें कहा जाता है. ज़ेडएपी फ़ाइल, JSON फ़ाइल होती है. इसमें एंडपॉइंट, निर्देश, एट्रिब्यूट, और डिवाइस की अन्य सुविधाओं की जानकारी होती है. ज़ेडएपी फ़ाइलों के नाम, .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
  2. Matter के डेटाबेस (connectedhomeip) की रूट डायरेक्ट्री से, run_zaptool.sh रैपर स्क्रिप्ट चलाएं. साथ ही, इसे .zap फ़ाइल का पाथ पास करें.

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

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

सेट अप करें

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

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

ZAP Global Options

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

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

एंडपॉइंट

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

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

ZAP एंडपॉइंट 0

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

  1. Matter रेपो connectedhomeip से, ज़ेडएपी चलाएं.

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

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

    ZAP Select Device

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

क्लस्टर

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

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

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

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

ZAP Disable Cluster

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

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

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

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

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

यहां एट्रिब्यूट को चालू या बंद किया जा सकता है. साथ ही, अलग-अलग एट्रिब्यूट के विकल्प सेट किए जा सकते हैं. इसके अलावा, नाम से एट्रिब्यूट खोजें जा सकते हैं.

ZAP एट्रिब्यूट

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

ZAP कमांड

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

ज़ेडएपी की सोर्स फ़ाइलें जनरेट करना

Matter उदाहरणों में, ज़ेडएपी से जनरेट किया गया सोर्स कोड इस्तेमाल किया जाता है. यह कोड, connectedhomeip/zzz_generated डायरेक्ट्री में उपलब्ध होता है. कुछ फ़ाइलें, ऐप्लिकेशन के हिसाब से होती हैं. वहीं, अन्य सामान्य ज़ेडएपी फ़ाइलें, app-common में ग्रुप की जाती हैं.

#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>

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

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

ज़ेडएपी, परिभाषाएं, फ़ंक्शन, और अन्य सोर्स कोड जनरेट करता है. यह कोड, आपके डिवाइस टाइप और ज़ेडएपी के कॉन्फ़िगरेशन के हिसाब से होता है.

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

उदाहरण के लिए, callback-stub.cpp में, क्लस्टर कॉलबैक का एक ऐसा तरीका शामिल होता है जिसमें सिर्फ़ वे क्लस्टर शामिल होते हैं जिन्हें आपने चालू किया है:

void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
    switch (clusterId)
    {
     ...
     case ZCL_ON_OFF_CLUSTER_ID :
        emberAfOnOffClusterInitCallback(endpoint);
        break;
     ...
    }
}

ज़ेडएपी की सोर्स फ़ाइलें इस्तेमाल करना

ज़ेडएपी की सामान्य सोर्स फ़ाइलें, जैसे कि 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 सोर्स कोड में, ज़ेडएपी फ़ाइलों का इस्तेमाल करने का तरीका समझने के बाद, ज़ेडएपी को इंटिग्रेट करने के कई तरीके हैं:

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

संसाधन

ज़ेडएपी के अन्य संसाधनों के लिए, GitHub पर ज़ेडएपी का डेटाबेस ज़ेडएपी का डेटाबेस (zap) देखें.