ZCL Advanced Platform (ZAP)

‫ZCL Advanced Platform (ZAP)‎ یک موتور الگوی node.js است که براساس Matter Clusters است.

ZAP ویژگی‌های زیر را برای برنامه‌ها و کیت‌های توسعه نرم‌افزار Matter ارائه می‌دهد:

  • Matter «نقطه‌های پایانی»، «خوشه‌ها»، «مشخصه‌ها»، و دیگر ویژگی‌های دستگاه را از میانای GUI پیکربندی کنید.
  • الگوهایی ایجاد کنید که به‌طور خودکار تعاریف مدل داده، فراخوانی‌های برگشتی، و دیگر کدهای منبع Matter را تولید می‌کنند.
  • فایل‌های ZAP ازپیش‌پیکربندی‌شده را برای گنجاندن در کیت‌های توسعه نرم‌افزارتان ایجاد و استفاده کنید.
ابزار ZAP

نصب

  1. به صفحه نسخه‌های پخش ZAP بروید.

  2. به‌دنبال نسخه‌ای بگردید که برچسب «Latest» (جدیدترین) دارد (اکثر نسخه‌ها برچسب «Pre-release» (پیش‌انتشار) دارند).

  3. در این نسخه، در زیر عنوان دارایی‌ها، بسته‌ای را که برای سیستم‌عامل شما تعیین شده است انتخاب و بارگیری کنید.

  4. در دستگاهی که 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. این نمونه خوبی برای کاوش پیکربندی‌های مختلف «خوشه» است.

اجرا کردن

  1. فایل ZAP را از یکی از Matter مثال انتخاب کنید.
  2. از دایرکتوری ریشه مخزن Matter‏ (connectedhomeip)، اسکریپت پوشاننده run_zaptool.sh را اجرا کنید و مسیر فایل .zap را به آن بدهید.

برای مثال:

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap

تنظیم کردن

در تنظیمات می‌توانید میانای کاربر ZAP را پیکربندی کنید، ازجمله انتخاب طرح زمینه روشن یا تیره، و فعال یا غیرفعال کردن ابزارهای توسعه‌دهنده.

با کلیک کردن روی گزینه‌ها می‌توانید سازنده محصول، خط‌مشی پاسخ پیش‌فرض را انتخاب کنید و «کاوش فرمان» را فعال یا غیرفعال کنید.

گزینه‌های جهانی ZAP

روی افزونه‌ها کلیک کنید تا خوشه‌ها یا فرمان‌های ZCL سفارشی را به «پیکربندی‌ساز خوشه‌های Zigbee» اضافه کنید.

استفاده کردن

نقاط پایانی

فایل lighting-app.zap ازقبل با یک Matter «گره ریشه» (نقطه پایانی - ۰) و یک Matter «چراغ با نور کاهنده» (نقطه پایانی - ۱) پیکربندی شده است.

نقطه پایانی - ۰ شامل «خوشه‌های» عمومی است که به کل گره مربوط می‌شوند، برای مثال «خوشه‌های» «شبکه‌سازی»، «راه‌اندازی»، «توصیف‌گر»، «اعتبارنامه‌های عملیاتی»، و OTA.

ZAP Endpoint 0

در مراحل بعدی، نقطه پایانی - ۱ Matter چراغ با نور قابل‌تنظیم از نمونه lighting-app را مرور و پیکربندی خواهید کرد.

  1. از مخزن Matter connectedhomeip،‏ ZAP را اجرا کنید.

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. روی نقطه پایانی - ۱، سپس ویرایش کلیک کنید.

  3. اختیاری: Matter از انواع مختلف دستگاه پشتیبانی می‌کند. در منو کرکره‌ای دستگاه، شروع به تایپ کردن matter کنید تا دستگاهتان را تغییر دهید، سپس روی ذخیره کلیک کنید.

    ZAP Select Device

برای کسب اطلاعات بیشتر، به دستگاه‌ها و نقاط پایانی در Matter Primer مراجعه کنید.

دسته‌ها

گزینه‌های «خوشه‌ها»، «مشخصه‌ها»، و «گزارش‌دهی» ازپیش‌تعریف‌شده به‌طور پیش‌فرض در پایانه - ۱ فعال هستند.

برای نمایش فقط «خوشه‌های» فعال‌شده، روی نقطه پایانی - ۱ کلیک کنید و خوشه‌های فعال‌شده را از منو نمایش انتخاب کنید. همچنین می‌توانید خوشه‌های را براساس نام جستجو کنید، برای مثال on.

خوشه‌های فعال‌شده ZAP

برای فعال کردن هر «خوشه» به‌عنوان کارخواه، سرور، یا کارخواه و سرور، از منو کرکره‌ای فعال کردن استفاده کنید. همچنین می‌توانید فعال نیست را انتخاب کنید تا «خوشه» ازپیش پیکربندی‌شده‌ای را که برای نوع دستگاهتان کاربرد ندارد غیرفعال کنید.

ZAP Disable Cluster

برای کسب اطلاعات بیشتر، به خوشه‌ها در «کتاب راهنمای» Matter مراجعه کنید.

مشخصه‌ها و فرمان‌ها

برای پیکربندی «مشخصه‌ها» و «فرمان‌ها»، مراحل زیر را تکمیل کنید:

  1. خوشه On/Off را پیدا کنید.
  2. در همان ردیف، روی نماد «پیکربندی» کلیک کنید.

    پیکربندی ZAP

در اینجا می‌توانید «مشخصه‌ها» را فعال یا غیرفعال کنید، گزینه‌های مختلف «مشخصه» را تنظیم کنید، و مشخصه‌ها را براساس نام جستجو کنید .

مشخصه‌های ZAP

برای پیکربندی کنش‌های این «خوشه»، روی فرمان‌ها کلیک کنید. برای مثال، «خوشه» روشن/خاموش برای چراغ شامل فرمان‌های روشن، خاموش، و تغییر وضعیت خواهد بود. برخی‌از «خوشه‌ها»، مثل «خوشه» Temperature Measurement، ممکن است هیچ «فرمان» مرتبطی نداشته باشند.

فرمان‌های ZAP

برای کسب اطلاعات بیشتر، به مشخصه‌ها و فرمان‌ها در 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>

پس‌از پیکربندی «نقاط پایانی»، می‌توانید فایل‌های منبع را برای ادغام در پروژه‌تان تولید کنید.

  1. روی تولید کلیک کنید.
  2. پوشه‌ای را برای ذخیره کردن برونداد ZAP انتخاب کنید. برای مثال، به connectedhomeip/zzz_generated/lighting-app/zap-generated برای lighting-app بروید.
  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، برای مثال 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) در GitHub مراجعه کنید.