پلتفرم پیشرفته ZCL (ZAP) یک موتور الگوی node.js است که بر پایه Matter Cluster ها ساخته شده است.
ZAP ویژگی های زیر را برای برنامه ها و SDK های Matter ارائه می دهد:
- Matter Endpoints، Clusters، Attributes و دیگر ویژگیهای دستگاه را از رابط رابط کاربری گرافیکی پیکربندی کنید.
- الگوهایی ایجاد کنید که بهطور خودکار تعاریف مدل داده، تماسهای برگشتی و سایر کدهای منبع Matter را ایجاد کنند.
- فایل های ZAP از پیش پیکربندی شده را ایجاد و استفاده کنید تا با SDK های خود اضافه کنید.
نصب کنید
به صفحه انتشارات ZAP بروید.
به دنبال نسخه با برچسب "آخرین" بگردید (بیشتر آنها "پیش انتشار" را نشان خواهند داد).
در این نسخه، تحت عنوان Assets ، بسته تعیین شده برای سیستم عامل خود را انتخاب کرده و آن را دانلود کنید.
در ماشینی که دبیان یا اوبونتو دارد، ZAP را با اجرای زیر نصب کنید:
sudo dpkg -i path/to/zap_installation_package
در لینوکس دبیان یا اوبونتو، باینری zap
در /usr/bin/
نصب شده است. در سیستم عامل های دیگر، باینری ممکن است در جای دیگری نصب شود. در هر صورت، بررسی کنید که مکان فایل اجرایی در متغیر محیطی PATH
شما باشد.
فایل های ZAP
ZAP از فایل های قالب به نام فایل های ZAP استفاده می کند. فایل ZAP یک فایل JSON است که نقاط پایانی، دستورات، ویژگیها و سایر ویژگیهای دستگاه را تعریف میکند. فایلهای ZAP دارای نامهایی هستند که به .zap
ختم میشوند. برای مثال، lighting-app.zap
در connectedhomeip/examples/lighting-app/lighting-common
.
فایل all-clusters-app.zap
، که در connectedhomeip/examples/all-clusters-app/all-clusters-common
یافت میشود، با خوشههای Matter رایج و سه نقطه پایانی، از جمله نوع دستگاه راهاندازی شبکه ثانویه Matter ، از پیش پیکربندی شده است. این یک مثال خوب برای کاوش در تنظیمات مختلف Cluster است.
اجرا کنید
- یک فایل ZAP را از یکی از نمونه های Matter انتخاب کنید.
- از دایرکتوری ریشه مخزن Matter (
connectedhomeip
)، اسکریپت wrapperrun_zaptool.sh
را اجرا کنید و مسیر را به فایل.zap
ارسال کنید.
به عنوان مثال:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
راه اندازی کنید
در تنظیمات
میتوانید رابط کاربری ZAP را پیکربندی کنید، از جمله تم روشن یا تیره را انتخاب کنید و ابزارهای توسعهدهنده را فعال یا غیرفعال کنید.با کلیک کردن روی گزینههای
، میتوانید سازنده محصول ، خطمشی پاسخگویی پیشفرض خود را انتخاب کنید و Command Discovery را فعال یا غیرفعال کنید.برای افزودن کلاسترها یا دستورات سفارشی ZCL به پیکربندی خوشه Zigbee روی
Extensions کلیک کنید.استفاده کنید
نقاط پایانی
فایل lighting-app.zap
با یک گره ریشه Matter ( نقطه پایانی - 0 ) و یک نور قابل کاهش Matter ( نقطه پایانی - 1 ) از قبل پیکربندی شده است.
نقطه پایانی - 0 شامل خوشه های کلی است که به کل گره مربوط می شود، به عنوان مثال شبکه، راه اندازی، توصیفگر، اعتبار عملیاتی و خوشه OTA.
در مراحل بعدی، Endpoint - 1 Matter Dimmable Light را از مثال lighting-app
مرور و پیکربندی خواهید کرد.
از Matter
connectedhomeip
، ZAP را اجرا کنید.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
روی Endpoint - 1 کلیک کنید، سپس ویرایش
.اختیاری: Matter از انواع مختلف دستگاه پشتیبانی می کند. در منوی کشویی Device ، شروع به تایپ
matter
برای تغییر دستگاه خود کنید، سپس روی ذخیره کلیک کنید.
برای کسب اطلاعات بیشتر، به Devices and Endpoints in the Matter Primer مراجعه کنید.
خوشه ها
خوشه های از پیش تعریف شده، ویژگی ها و گزینه های گزارش به طور پیش فرض در Endpoint - 1 فعال هستند.
برای نمایش فقط خوشه های فعال، روی نقطه پایانی - 1 کلیک کنید و از منوی نمایش، خوشه های فعال را انتخاب کنید. همچنین میتوانید خوشههای on
.
برای فعال کردن هر خوشه به عنوان Client ، Server یا Client & Server ، از منوی کشویی Enable استفاده کنید. همچنین می توانید برای غیرفعال کردن یک خوشه از پیش پیکربندی شده که برای نوع دستگاه شما اعمال نمی شود، گزینه Not Enabled را انتخاب کنید.
برای کسب اطلاعات بیشتر، به Clusters in the Matter Primer مراجعه کنید.
صفات و دستورات
برای پیکربندی ویژگی ها و دستورات، مراحل زیر را انجام دهید:
- خوشه
On/Off
را پیدا کنید. در همان ردیف، روی Configure icon
کلیک کنید.
در اینجا میتوانید ویژگیها را فعال یا غیرفعال کنید، گزینههای مختلف ویژگی را تنظیم کنید و ویژگیهای جستجو را براساس نام
. برای پیکربندی اقدامات برای این خوشه روی Commands کلیک کنید. به عنوان مثال، خوشه روشن/خاموش برای یک چراغ شامل دستورات روشن ، خاموش ، و تعویض است. برخی از خوشه ها، مانند خوشه 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>
هنگامی که نقاط پایانی شما پیکربندی شدند، می توانید فایل های منبع را برای ادغام در پروژه خود ایجاد کنید.
- روی Generate کلیک کنید.
- پوشه ای را برای ذخیره خروجی ZAP انتخاب کنید. برای مثال، برای
lighting-app
بهconnectedhomeip/zzz_generated/lighting-app/zap-generated
بروید. - اختیاری فایل ها را در IDE دلخواه خود باز کنید.
ZAP تعاریف، توابع و کد منبع دیگری را تولید می کند که با نوع دستگاه و پیکربندی ZAP شما مطابقت دارد.
به عنوان مثال، callback-stub.cpp
شامل یک روش Cluster callback است که فقط شامل Cluster هایی است که شما فعال کرده اید:
void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
switch (clusterId)
{
...
case ZCL_ON_OFF_CLUSTER_ID :
emberAfOnOffClusterInitCallback(endpoint);
break;
...
}
}
از فایل های منبع ZAP استفاده کنید
فایلهای منبع رایج ZAP، برای مثال Attributes.h
در zzz_generated/app-common/app-common/zap-generated/ids/
، میتوانند برای دریافت و تنظیم ویژگیهای نوع دستگاه استفاده شوند:
صفات.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");
}
}
هنگامی که متوجه شدید که چگونه فایل های ZAP را می توان در کد منبع Matter استفاده کرد، چندین راه وجود دارد که می توانید ZAP را ادغام کنید:
- از فایل های
zzz_generated
موجود برای ایجاد نمونه های جدید، منحصر به فرد برای انواع دستگاه خود استفاده کنید. - برای پروژه های خود فایل های
.zap
سفارشی ایجاد کنید.
سفارشی کنید
فایل های ZAP از قالب های ZAP تولید می شوند. هنگامی که از run_zaptool.sh
برای راه اندازی ZAP استفاده می کنید، این اسکریپت در قالب های زیر ارسال می شود:
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 را ایجاد کنید.
- ZAP را در SDK خود ادغام کنید .
منابع
برای منابع اضافی ZAP، به مخزن ZAP ( zap
) در GitHub مراجعه کنید.