ZCL Advanced Platform (ZAP)

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

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

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

نصب

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

  2. نسخه منتشرشده با برچسب «آخرین» را پیدا کنید (اکثر آن‌ها برچسب «پیش‌انتشار» دارند).

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

اجرا کردن

  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 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

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

خوشه‌ها

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

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

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

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

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

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

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

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

  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 مراجعه کنید.