«پلاتفرم پیشرفته ZCL» (ZAP) موتور الگوی node.js است که براساس Matter خوشهها ساخته شده است.
ZAP ویژگیهای زیر را برای برنامههای Matter و کیتهای توسعه نرمافزار ارائه میدهد:
- Matter نقطههای پایانی، خوشهها، مشخصهها، و دیگر ویژگیهای دستگاه را از میانای گرافیکی کاربر پیکربندی کنید.
- الگوهایی بسازید که بهطور خودکار تعریفهای «مدل داده»، بازخوانها، و دیگر کد منبع Matter را تولید کنند.
- فایلهای ZAP ازپیش پیکربندیشدهای بسازید و از آنها برای افزودن به کیتهای توسعه نرمافزارتان استفاده کنید.
نصب
به صفحه انتشارهای ZAP بروید.
نسخه منتشرشده با برچسب «آخرین» را پیدا کنید (اکثر آنها برچسب «پیشانتشار» دارند).
در این نسخه، در زیر عنوان داراییها، بسته مشخصشده برای سیستم عامل خود را انتخاب و آن را بارگیری کنید.
در دستگاهی که Debian یا Ubuntu اجرا میکند، ZAP را با اجرای این دستور نصب کنید:
sudo dpkg -i path/to/zap_installation_package
در Debian یا Ubuntu Linux، باینری 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)، دستورگان پوششrun_zaptool.shرا اجرا کنید و مسیر فایل.zapرا به آن ارسال کنید.
برای مثال:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zapراهاندازی
در تنظیمات میتوانید میانای کاربر ZAP را پیکربندی کنید، ازجمله انتخاب زمینه روشن یا تیره، و فعال یا غیرفعال کردن ابزارهای توسعهدهندگان.
با کلیک کردن روی گزینهها میتوانید محصول سازنده، خطمشی پاسخ پیشفرض، و فعال یا غیرفعال کردن «کشف فرمان» را انتخاب کنید.
برای افزودن خوشههای ZCL سفارشی یا فرمانها به «پیکربندیکننده خوشههای Zigbee»، روی افزونهها کلیک کنید.
استفاده کردن
نقطههای پایانی
فایل lighting-app.zap با Matter
«گره ریشه» (نقطه پایان - ۰) و Matter «چراغ کمنورشدنی»
(نقطه پایان - ۱) ازپیش پیکربندی شده است.
نقطه پایان - ۰ شامل «خوشههای» کلی است که به کل گره مربوط میشود، برای مثال «خوشههای» «شبکهسازی»، «راهاندازی»، «توصیفگر»، «اطلاعات اعتباری عملیاتی»، و «OTA».
در مراحل بعدی، نقطه پایان - ۱
Matter چراغ کمنورشدنی را از مثال lighting-app مرور و پیکربندی خواهید کرد.
از مخزن Matter
connectedhomeip، ZAP را اجرا کنید.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapروی نقطه پایان - ۱ و سپس ویرایش کلیک کنید.
اختیاری: Matter از انواع مختلف دستگاه پشتیبانی میکند. در منو کرکرهای دستگاه، شروع به تایپ کردن
matterبرای تغییر دستگاه کنید، سپس روی ذخیره کلیک کنید.
برای کسب اطلاعات بیشتر، به دستگاهها و نقطههای پایانی در Matter Primer مراجعه کنید.
خوشهها
«خوشههای ازپیشتعریفشده»، «مشخصهها»، و گزینههای «گزارشدهی» بهطور پیشفرض در نقطه پایانی - ۱ فعال است.
برای نمایش فقط «خوشههای» فعال، روی نقطه پایانی - ۱ کلیک کنید و
خوشههای فعال را از منو نمایش
انتخاب کنید. همچنین میتوانید خوشه را
با نام جستجو کنید، برای مثال on.
برای فعال کردن هر «خوشه» بهعنوان کارخواه، سرور، یا کارخواه و سرور، از منو کرکرهای فعال کردن استفاده کنید. همچنین میتوانید فعال نیست را انتخاب کنید تا «خوشه» پیشپیکربندیشدهای را که برای نوع دستگاهتان اعمال نمیشود غیرفعال کنید.
برای اطلاعات بیشتر، به خوشهها در Matter Primer مراجعه کنید.
مشخصهها و فرمانها
برای پیکربندی «ویژگیها و فرمانها»، مراحل زیر را تکمیل کنید:
- «خوشه»
On/Offرا پیدا کنید. در همان ردیف، روی نماد «پیکربندی» کلیک کنید.
در اینجا میتوانید «مشخصهها» را فعال یا غیرفعال کنید، گزینههای مختلف «مشخصهها» را تنظیم کنید، و مشخصهها را براساس نام جستجو کنید .
برای پیکربندی کنشهای این «خوشه»، روی فرمانها کلیک کنید. برای مثال، «خوشه روشن/خاموش» برای چراغ شامل فرمانهای روشن، خاموش، و روشن/خاموش کردن میشود. برخیاز «خوشهها»، مثل
«خوشه Temperature Measurement»، ممکن است هیچ «فرمانی» منسوبی نداشته باشند.
برای کسب اطلاعات بیشتر، به ویژگیها و فرمانها در Matter Primer مراجعه کنید.
تولید فایلهای منبع 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 انتخاب کنید. برای مثال، به
connectedhomeip/zzz_generated/lighting-app/zap-generatedبرایlighting-appپیمایش کنید. - اختیاری. فایلها را در 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 مشترک، برای مثال Attributes.h در
zzz_generated/app-common/app-common/zap-generated/ids/، میتواند برای
دریافت و تنظیم «مشخصههای» نوع دستگاه استفاده شود:
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");
}
}
وقتی متوجه شدید که چگونه میتوان از فایلهای 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 در کیت توسعه نرمافزار.
منابع
برای منابع اضافی ZAP، به
مخزن ZAP
(zap)
در GitHub مراجعه کنید.