پلتفرم پیشرفته ZCL (ZAP)

پلتفرم پیشرفته ZCL (ZAP) یک موتور الگوی node.js است که بر پایه Matter Cluster ها ساخته شده است.

ZAP ویژگی های زیر را برای برنامه ها و SDK های Matter ارائه می دهد:

  • Matter Endpoints، Clusters، Attributes و دیگر ویژگی‌های دستگاه را از رابط رابط کاربری گرافیکی پیکربندی کنید.
  • الگوهایی ایجاد کنید که به‌طور خودکار تعاریف مدل داده، تماس‌های برگشتی و سایر کدهای منبع Matter را ایجاد کنند.
  • فایل های ZAP از پیش پیکربندی شده را ایجاد و استفاده کنید تا با SDK های خود اضافه کنید.
ابزار ZAP

نصب

  1. به صفحه انتشارات ZAP بروید.

  2. به دنبال نسخه با برچسب "آخرین" بگردید (بیشتر آنها "پیش انتشار" را نشان خواهند داد).

  3. در این نسخه، تحت عنوان Assets ، بسته تعیین شده برای سیستم عامل خود را انتخاب کرده و آن را دانلود کنید.

  4. در ماشینی که دبیان یا اوبونتو دارد، 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 است.

اجرا کن

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

مثلا:

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

برپایی

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

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

ZAP Global Options

برای افزودن کلاسترها یا دستورات سفارشی ZCL به پیکربندی خوشه Zigbee روی Extensions کلیک کنید.

استفاده کنید

نقاط پایانی

فایل lighting-app.zap با یک گره ریشه Matter ( نقطه پایانی - 0 ) و یک نور قابل کاهش Matter ( نقطه پایانی - 1 ) از قبل پیکربندی شده است.

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

نقطه پایانی ZAP 0

در مراحل بعدی، Endpoint - 1 Matter Dimmable Light را از مثال lighting-app مرور و پیکربندی خواهید کرد.

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

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

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

    ZAP دستگاه را انتخاب کنید

برای کسب اطلاعات بیشتر، به Devices and Endpoints in the Matter Primer مراجعه کنید.

خوشه ها

خوشه های از پیش تعریف شده، ویژگی ها و گزینه های گزارش به طور پیش فرض در Endpoint - 1 فعال هستند.

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

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

برای فعال کردن هر خوشه به عنوان Client ، Server یا Client & Server ، از منوی کشویی Enable استفاده کنید. همچنین می توانید برای غیرفعال کردن یک خوشه از پیش پیکربندی شده که برای نوع دستگاه شما اعمال نمی شود ، گزینه Not Enabled را انتخاب کنید.

ZAP غیرفعال کردن خوشه

برای کسب اطلاعات بیشتر، به Clusters in the Matter Primer مراجعه کنید.

صفات و دستورات

برای پیکربندی ویژگی ها و دستورات، مراحل زیر را انجام دهید:

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

    ZAP پیکربندی

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

ویژگی های ZAP

برای پیکربندی اقدامات برای این خوشه روی Commands کلیک کنید. به عنوان مثال، خوشه روشن/خاموش برای یک چراغ شامل دستورات روشن ، خاموش ، و تعویض است. برخی از خوشه ها، مانند خوشه 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. روی Generate کلیک کنید.
  2. پوشه ای را برای ذخیره خروجی ZAP انتخاب کنید. برای مثال، برای lighting-app به connectedhomeip/zzz_generated/lighting-app/zap-generated بروید.
  3. اختیاری . فایل ها را در IDE دلخواه خود باز کنید.

ZAP تعاریف، توابع و کد منبع دیگری را تولید می کند که با نوع دستگاه و پیکربندی 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 ( zap ) در GitHub مراجعه کنید.