ZCL Advanced Platform (ZAP)

ZCL Advanced Platform (ZAP) হল একটি node.js টেমপ্লেট ইঞ্জিন যা Matter ক্লাস্টার-এর উপর ভিত্তি করে তৈরি।

ZAP Matter অ্যাপ ও SDK-এর জন্য নিম্নলিখিত ফিচার প্রদান করে:

  • GUI ইন্টারফেস থেকে 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 সেকেন্ডারি নেটওয়ার্ক কমিশনিং ডিভাইস টাইপও আছে। বিভিন্ন Cluster কনফিগারেশন এক্সপ্লোর করার জন্য এটি একটি ভালো উদাহরণ।

চালান

  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 রুট নোড (এন্ডপয়েন্ট - ০) এবং Matter ডিম করা যায় এমন আলো (এন্ডপয়েন্ট - ১) দিয়ে আগে থেকেই কনফিগার করা আছে।

এন্ডপয়েন্ট - ০-এ সাধারণ ক্লাস্টার অন্তর্ভুক্ত থাকে যা সম্পূর্ণ নোডের সাথে সম্পর্কিত, যেমন নেটওয়ার্কিং, কমিশনিং, ডেসক্রিপ্টর, অপারেশনাল ক্রেডেনশিয়াল ও OTA ক্লাস্টার।

ZAP এন্ডপয়েন্ট ০

পরবর্তী ধাপে, আপনি Endpoint - 1 Matter উদাহরণ lighting-app থেকে ডিম করা যায় এমন আলো পর্যালোচনা ও কনফিগার করবেন।

  1. Matter রিপোজিটরি connectedhomeip থেকে, ZAP রান করান।

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. এন্ডপয়েন্ট - ১ বিকল্পে ক্লিক করুন, তারপর এডিট করুন বিকল্পে ক্লিক করুন।

  3. ঐচ্ছিক: Matter বিভিন্ন ধরনের ডিভাইসে কাজ করে। ডিভাইস ড্রপডাউনে, আপনার ডিভাইস পরিবর্তন করতে matter টাইপ করা শুরু করুন, তারপর সেভ করুন বিকল্পে ক্লিক করুন।

    ZAP ডিভাইস বেছে নিন

আরও জানতে, Matter প্রাইমারের ডিভাইস ও এন্ডপয়েন্ট দেখুন।

ক্লাস্টার

আগে থেকে নির্ধারিত ক্লাস্টার, অ্যাট্রিবিউট ও রিপোর্টিং বিকল্প ডিফল্ট হিসেবে এন্ডপয়েন্ট - ১-এ চালু করা থাকে।

শুধুমাত্র চালু থাকা ক্লাস্টার দেখাতে, এন্ডপয়েন্ট - ১ বিকল্পে ক্লিক করুন এবং দেখুন মেনু থেকে চালু থাকা ক্লাস্টার বিকল্প বেছে নিন। এছাড়াও, আপনি ক্লাস্টার নাম দিয়ে সার্চ করতে পারেন, যেমন on।

ZAP চালু করা ক্লাস্টার

যেকোনও ক্লাস্টারকে ক্লায়েন্ট, সার্ভার বা ক্লায়েন্ট ও সার্ভার হিসেবে চালু করতে, চালু করুন ড্রপডাউন ব্যবহার করুন। এছাড়াও, আপনার ডিভাইসের ধরনের সাথে মানানসই নয় এমন আগে থেকে কনফিগার করা ক্লাস্টার বন্ধ করতে, চালু করা নেই বিকল্প বেছে নিতে পারেন।

ZAP Disable Cluster

আরও জানতে, Matter প্রাইমারের ক্লাস্টার দেখুন।

অ্যাট্রিবিউট ও কমান্ড

অ্যাট্রিবিউট ও কমান্ড কনফিগার করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. On/Off ক্লাস্টার খুঁজে বের করুন।
  2. একই সারিতে, 'কনফিগার করুন' আইকনে ক্লিক করুন ।

    ZAP কনফিগার করা

এখানে আপনি অ্যাট্রিবিউট চালু বা বন্ধ করতে, বিভিন্ন অ্যাট্রিবিউট বিকল্প সেট করতে এবং নাম দিয়ে অ্যাট্রিবিউট সার্চ করতে পারবেন।

ZAP অ্যাট্রিবিউট

এই ক্লাস্টারের জন্য অ্যাকশন কনফিগার করতে কমান্ড বিকল্পে ক্লিক করুন। যেমন, আলোর জন্য চালু/বন্ধ ক্লাস্টারে চালু, বন্ধ, এবং টগল কমান্ড অন্তর্ভুক্ত থাকবে। 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 আউটপুট সেভ করার জন্য একটি ফোল্ডার বেছে নিন। যেমন, lighting-app-এর জন্য connectedhomeip/zzz_generated/lighting-app/zap-generated-এ নেভিগেট করুন।
  3. ঐচ্ছিক। আপনার পছন্দের 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 সোর্স ফাইল, যেমন Attributes.h in 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 রিসোর্সের জন্য, GitHub-এ ZAP রিপো (zap) দেখুন।