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

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

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-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 ইউজার ইন্টারফেস কনফিগার করতে পারেন, যার মধ্যে আপনার পছন্দের হালকা বা অন্ধকার থিমের তালিকা এবং ডেভেলপার টুলগুলি সক্ষম বা নিষ্ক্রিয় করা অন্তর্ভুক্ত রয়েছে।

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

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

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

ব্যবহার করুন

শেষবিন্দু

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

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

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

পরবর্তী ধাপগুলিতে, আপনি example lighting-app থেকে Endpoint - 1 Matter Dimmable Light পর্যালোচনা এবং কনফিগার করবেন।

  1. Matter repo connectedhomeip থেকে, ZAP চালান।

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

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

    ZAP ডিভাইস নির্বাচন করুন

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

ক্লাস্টার

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

শুধুমাত্র সক্রিয় ক্লাস্টারগুলি প্রদর্শন করতে, Endpoint - 1 এ ক্লিক করুন এবং Show মেনু থেকে Enabled Clusters নির্বাচন করুন। আপনি নাম অনুসারে ক্লাস্টারগুলিও অনুসন্ধান করতে পারেন, উদাহরণস্বরূপ on

ZAP সক্ষম ক্লাস্টার

যেকোনো ক্লাস্টারকে Client , Server অথবা Client & Server হিসেবে সক্ষম করতে, Enable ড্রপডাউনটি ব্যবহার করুন। আপনার ডিভাইসের ধরণের ক্ষেত্রে প্রযোজ্য নয় এমন একটি পূর্ব-কনফিগার করা ক্লাস্টার অক্ষম করতে আপনি Not Enabled নির্বাচন করতে পারেন।

ZAP ক্লাস্টার নিষ্ক্রিয় করুন

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

বৈশিষ্ট্য এবং কমান্ড

বৈশিষ্ট্য এবং কমান্ড কনফিগার করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

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

    ZAP কনফিগার করুন

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

ZAP বৈশিষ্ট্য

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

প্রধান.সিপিপি

#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 ) দেখুন।