ZCL অ্যাডভান্সড প্ল্যাটফর্ম (ZAP)

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

ZAP Matter অ্যাপ এবং SDK-এর জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদান করে:

  • একটি GUI ইন্টারফেস থেকে Matter এন্ডপয়েন্ট, ক্লাস্টার, অ্যাট্রিবিউট এবং অন্যান্য ডিভাইস বৈশিষ্ট্য কনফিগার করুন।
  • টেমপ্লেট তৈরি করুন যা স্বয়ংক্রিয়ভাবে ডেটা মডেল সংজ্ঞা, কলব্যাক এবং অন্যান্য Matter সোর্স কোড তৈরি করে।
  • আপনার SDK এর সাথে অন্তর্ভুক্ত করার জন্য আগে থেকে কনফিগার করা ZAP ফাইলগুলি তৈরি করুন এবং ব্যবহার করুন৷
ZAP টুল

ইনস্টল করুন

  1. ZAP প্রকাশের পৃষ্ঠায় যান।

  2. "সর্বশেষ" ট্যাগ করা রিলিজটি দেখুন (বেশিরভাগ "প্রি-রিলিজ" ট্যাগ করা হবে)।

  3. এই রিলিজের অধীনে, সম্পদ শিরোনামের অধীনে, আপনার অপারেটিং সিস্টেমের জন্য মনোনীত প্যাকেজটি নির্বাচন করুন এবং এটি ডাউনলোড করুন।

  4. ডেবিয়ান বা উবুন্টু চালানোর একটি মেশিনে, চালিয়ে ZAP ইনস্টল করুন:

    sudo dpkg -i path/to/zap_installation_package
    

ডেবিয়ান বা উবুন্টু লিনাক্সে, zap বাইনারি /usr/bin/ এ ইনস্টল করা আছে। অন্যান্য অপারেটিং সিস্টেমে, বাইনারি অন্য কোথাও ইনস্টল করা হতে পারে। যাই হোক না কেন, এক্সিকিউটেবলের অবস্থান আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলে রয়েছে তা নিশ্চিত করতে পরীক্ষা করুন।

ZAP ফাইল

ZAP ZAP ফাইল নামক টেমপ্লেট ফাইল ব্যবহার করে। একটি ZAP ফাইল হল একটি JSON ফাইল যা এন্ডপয়েন্ট, কমান্ড, অ্যাট্রিবিউট এবং অন্যান্য ডিভাইসের বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে৷ ZAP ফাইলের নাম .zap দিয়ে শেষ হয়। উদাহরণস্বরূপ, connectedhomeip/examples/lighting-app/lighting-commonlighting-app.zap

connectedhomeip/examples/all-clusters-app/all-clusters-common এ পাওয়া all-clusters-app.zap ফাইলটি একটি Matter সেকেন্ডারি নেটওয়ার্ক কমিশনিং ডিভাইস টাইপ সহ সাধারণ Matter ক্লাস্টার এবং তিনটি এন্ডপয়েন্টের সাথে প্রি-কনফিগার করা হয়েছে। বিভিন্ন ক্লাস্টার কনফিগারেশন অন্বেষণ করার জন্য এটি একটি ভাল উদাহরণ।

চালান

  1. Matter উদাহরণগুলির মধ্যে একটি থেকে একটি ZAP ফাইল চয়ন করুন।
  2. ম্যাটার রিপোজিটরির রুট ডিরেক্টরি থেকে ( connectedhomeip ), run_zaptool.sh র্যাপার স্ক্রিপ্টটি চালান, এটিকে .zap ফাইলের পাথ দিয়ে যান।

উদাহরণ স্বরূপ:

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

সেট আপ করুন

সেটিংসে আপনি ZAP ব্যবহারকারী ইন্টারফেস কনফিগার করতে পারেন, আপনার পছন্দের হালকা বা অন্ধকার থিম সহ, এবং বিকাশকারী সরঞ্জামগুলিকে সক্ষম বা অক্ষম করা।

বিকল্পগুলিতে ক্লিক করলে আপনি আপনার পণ্য প্রস্তুতকারক , ডিফল্ট প্রতিক্রিয়া নীতি নির্বাচন করতে পারবেন এবং কমান্ড আবিষ্কার সক্ষম বা নিষ্ক্রিয় করতে পারবেন৷

ZAP গ্লোবাল অপশন

Zigbee ক্লাস্টার কনফিগারেশনে কাস্টম ZCL ক্লাস্টার বা কমান্ড যোগ করতে এক্সটেনশনে ক্লিক করুন।

ব্যবহার করুন

শেষবিন্দু

lighting-app.zap ফাইলটি একটি Matter রুট নোড ( এন্ডপয়েন্ট - 0 ) এবং একটি Matter ডিমেবল লাইট ( এন্ডপয়েন্ট - 1 ) দিয়ে প্রি-কনফিগার করা হয়েছে।

এন্ডপয়েন্ট - 0 সাধারণ ক্লাস্টারগুলি অন্তর্ভুক্ত করে যা সমগ্র নোডের সাথে প্রাসঙ্গিক, উদাহরণস্বরূপ নেটওয়ার্কিং, কমিশনিং, বর্ণনাকারী, অপারেশনাল শংসাপত্র এবং OTA ক্লাস্টার।

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

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

  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 বৈশিষ্ট্য

এই ক্লাস্টারের জন্য অ্যাকশন কনফিগার করতে কমান্ডে ক্লিক করুন। উদাহরণস্বরূপ, আলোর জন্য চালু/বন্ধ ক্লাস্টারে অন , অফ এবং টগল কমান্ড অন্তর্ভুক্ত থাকবে। কিছু ক্লাস্টার, যেমন 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. ঐচ্ছিক আপনার পছন্দের আইডিইতে ফাইলগুলি খুলুন।

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 , ডিভাইসের ধরন বৈশিষ্ট্যগুলি পেতে এবং সেট করতে ব্যবহার করা যেতে পারে:

গুণাবলী.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 ) দেখুন।