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

ইনস্টল করুন
ZAP রিলিজ পৃষ্ঠায় যান।
'Latest' ট্যাগযুক্ত রিলিজটি খুঁজুন (বেশিরভাগই 'Pre-release' ট্যাগযুক্ত থাকবে)।
এই রিলিজের অধীনে, 'Assets' শিরোনামের আওতায়, আপনার অপারেটিং সিস্টেমের জন্য নির্ধারিত প্যাকেজটি নির্বাচন করে ডাউনলোড করুন।
ডেবিয়ান বা উবুন্টু চালিত মেশিনে, নিম্নলিখিত কমান্ডটি চালিয়ে 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 সেকেন্ডারি নেটওয়ার্ক কমিশনিং ডিভাইস টাইপ অন্তর্ভুক্ত। বিভিন্ন ক্লাস্টার কনফিগারেশন অন্বেষণ করার জন্য এটি একটি ভালো উদাহরণ।
দৌড়
- Matter এর উদাহরণগুলো থেকে একটি ZAP ফাইল বেছে নিন।
- Matter রিপোজিটরির রুট ডিরেক্টরি (
connectedhomeip) থেকে,.zapফাইলের পাথটি পাস করেrun_zaptool.shর্যাপার স্ক্রিপ্টটি চালান।
উদাহরণস্বরূপ:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zapসেট আপ
আপনি ZAP ইউজার ইন্টারফেস কনফিগার করতে পারেন, যার মধ্যে রয়েছে লাইট বা ডার্ক থিম নির্বাচন এবং ডেভেলপার টুলস চালু বা বন্ধ করার সুবিধা ।
অপশনস- এ ক্লিক করলে আপনি আপনার প্রোডাক্ট ম্যানুফ্যাকচারার , ডিফল্ট রেসপন্স পলিসি নির্বাচন করতে এবং কমান্ড ডিসকভারি চালু বা বন্ধ করতে পারবেন।

জিগবি ক্লাস্টার কনফিগুরেটরে কাস্টম ZCL ক্লাস্টার বা কমান্ড যোগ করতে -এ ক্লিক করুন।
ব্যবহার
এন্ডপয়েন্ট
lighting-app.zap ফাইলটি একটি Matter রুট নোড ( এন্ডপয়েন্ট - 0 ) এবং একটি Matter ডিমেবল লাইট ( এন্ডপয়েন্ট - 1 ) দিয়ে আগে থেকেই কনফিগার করা আছে।
এন্ডপয়েন্ট - ০-এর মধ্যে এমন সাধারণ ক্লাস্টারগুলো অন্তর্ভুক্ত রয়েছে যা সম্পূর্ণ নোডটির জন্য প্রাসঙ্গিক, যেমন নেটওয়ার্কিং, কমিশনিং, ডেসক্রিপ্টর, অপারেশনাল ক্রেডেনশিয়ালস এবং ওটিএ ক্লাস্টার।

পরবর্তী ধাপগুলোতে, আপনি উদাহরণ lighting-app থেকে এন্ডপয়েন্ট - ১ Matter ডিমেবল লাইট পর্যালোচনা ও কনফিগার করবেন।
Matter রিপো-র
connectedhomeipথেকে ZAP চালান।scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapএন্ডপয়েন্ট - 1 এ ক্লিক করুন, তারপর EDIT ।
ঐচ্ছিক: Matter বিভিন্ন ধরনের ডিভাইস সমর্থন করে। আপনার ডিভাইস পরিবর্তন করতে, ডিভাইস ড্রপডাউনে
matterটাইপ করা শুরু করুন, তারপর ‘SAVE’ ক্লিক করুন।
আরও জানতে, ‘ডিভাইসেস অ্যান্ড এন্ডপয়েন্টস ইন দ্য Matter প্রাইমার’ দেখুন।
ক্লাস্টার
এন্ডপয়েন্ট - ১- এ পূর্বনির্ধারিত ক্লাস্টার, অ্যাট্রিবিউট এবং রিপোর্টিং অপশনগুলো ডিফল্টরূপে সক্রিয় থাকে।
শুধুমাত্র সক্রিয় ক্লাস্টারগুলি প্রদর্শন করতে, এন্ডপয়েন্ট - ১-এ ক্লিক করুন এবং ' শো' মেনু থেকে 'এনাবলড ক্লাস্টারস' নির্বাচন করুন। এছাড়াও আপনি নাম দিয়ে ক্লাস্টার করতে পারেন, on , .

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

আরও জানতে, ‘ক্লাস্টারস ইন দ্য Matter প্রাইমার’ দেখুন।
বৈশিষ্ট্য এবং কমান্ড
অ্যাট্রিবিউট এবং কমান্ড কনফিগার করতে, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:
-
On/Offক্লাস্টারটি সনাক্ত করুন। একই সারিতে, সেটিংস কনফিগার ক্লিক করুন।

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

এই ক্লাস্টারের জন্য অ্যাকশন কনফিগার করতে কমান্ডস-এ ক্লিক করুন। উদাহরণস্বরূপ, একটি লাইটের অন/অফ ক্লাস্টারে অন , অফ এবং টগল কমান্ড অন্তর্ভুক্ত থাকবে। কিছু ক্লাস্টার, যেমন Temperature Measurement ক্লাস্টার, এর সাথে কোনো কমান্ড যুক্ত নাও থাকতে পারে।

আরও জানতে, 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>
আপনার এন্ডপয়েন্টগুলো কনফিগার করা হয়ে গেলে, আপনি আপনার প্রোজেক্টে একীভূত করার জন্য সোর্স ফাইল তৈরি করতে পারবেন।
- জেনারেট করতে ক্লিক করুন।
- ZAP আউটপুট সংরক্ষণ করার জন্য একটি ফোল্ডার নির্বাচন করুন। উদাহরণস্বরূপ,
lighting-appএর জন্যconnectedhomeip/zzz_generated/lighting-app/zap-generatedএ যান। - ঐচ্ছিক । আপনার পছন্দের IDE-তে ফাইলগুলো খুলুন।
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
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 টেমপ্লেট তৈরি করুন।
- আপনার SDK-তে ZAP অন্তর্ভুক্ত করুন ।
সম্পদ
অতিরিক্ত ZAP রিসোর্সের জন্য, GitHub-এ থাকা ZAP রিপো ( zap ) দেখুন।