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

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

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

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

ইনস্টল করুন

  1. জ্যাপ রিলিজ পৃষ্ঠায় যান।

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

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

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

    sudo dpkg -i path/to/zap_installation_package

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

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. ম্যাটার রিপোজিটরির রুট ডিরেক্টরি থেকে ( connectedhomeip ), run_zaptool.sh র্যাপার স্ক্রিপ্টটি চালান, এটিকে .zap ফাইলের পাথ দিয়ে যান।

যেমন:

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.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. Optional: Matter supports various device types. ডিভাইসের ড্রপডাউনে, আপনার ডিভাইস পরিবর্তন করতে 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 ডিরেক্টরিতে পাওয়া যায়। Some files are app-specific, while other generic ZAP files are grouped in 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. Al চ্ছিক । আপনার পছন্দের আইডিইতে ফাইলগুলি খুলুন।

ZAP আপনার ডিভাইসের প্রকার এবং ZAP কনফিগারেশনের জন্য কাস্টম সংজ্ঞায়িত, ফাংশন এবং অন্যান্য সোর্স কোড তৈরি করে।

ZAP জেনারেটেড ফাইল

উদাহরণস্বরূপ, callback-stub.cpp একটি ক্লাস্টার কলব্যাক পদ্ধতি অন্তর্ভুক্ত করে যেটিতে শুধুমাত্র সেই ক্লাস্টারগুলি অন্তর্ভুক্ত রয়েছে যা আপনি সক্ষম করেছেন:

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

ZAP উৎস ফাইল ব্যবহার করুন

Common ZAP source files, for example Attributes.h in zzz_generated/app-common/app-common/zap-generated/ids/ , can be used to get and set device type 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 ) দেখুন।