แพลตฟอร์มขั้นสูง ZCL (ZAP)

ZCL Advanced Platform (ZAP) คือเครื่องมือเทมเพลต node.js ที่อิงตามMatterคลัสเตอร์

ZAP มีฟีเจอร์ต่อไปนี้สำหรับแอปและ SDK ของ Matter

  • กำหนดค่าMatterปลายทาง คลัสเตอร์ แอตทริบิวต์ และ ฟีเจอร์อื่นๆ ของอุปกรณ์จากอินเทอร์เฟซ GUI
  • สร้างเทมเพลตที่สร้างคำจำกัดความของโมเดลข้อมูล การเรียกกลับ และMatterซอร์สโค้ดอื่นๆ โดยอัตโนมัติ
  • สร้างและใช้ไฟล์ ZAP ที่กำหนดค่าไว้ล่วงหน้าเพื่อรวมไว้กับ SDK
เครื่องมือ 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 คลัสเตอร์ทั่วไปและอุปกรณ์ปลายทาง 3 รายการ ซึ่งรวมถึงMatterประเภทอุปกรณ์การจัดสรรเครือข่ายรอง นี่เป็นตัวอย่างที่ดีในการสำรวจการกำหนดค่าคลัสเตอร์ต่างๆ

เรียกใช้

  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 ซึ่งรวมถึงการเลือกธีมสว่างหรือธีมมืด และ การเปิดหรือปิดใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์

การคลิก Options จะช่วยให้คุณเลือกProduct Manufacturer, Default Response Policy และเปิดหรือปิดใช้ Command Discovery ได้

ตัวเลือกส่วนกลางของ ZAP

คลิก Extensions เพื่อเพิ่มคลัสเตอร์หรือคำสั่ง ZCL ที่กำหนดเองลงใน Zigbee Clusters Configurator

ใช้

ปลายทาง

ไฟล์ lighting-app.zap ได้รับการกำหนดค่าล่วงหน้าด้วย Matter Root Node (Endpoint - 0) และ Matter Dimmable Light (Endpoint - 1)

Endpoint - 0 มีคลัสเตอร์ทั่วไปที่เกี่ยวข้องกับโหนดทั้งหมด เช่น คลัสเตอร์เครือข่าย การจัดสรร การอธิบาย ตัวเลือกการรับรองการปฏิบัติงาน และ OTA

ZAP Endpoint 0

ในขั้นตอนถัดไป คุณจะตรวจสอบและกำหนดค่า Endpoint - 1 Matter Dimmable Light จากตัวอย่าง lighting-app

  1. เรียกใช้ ZAP จากที่เก็บ Matter connectedhomeip

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
  2. คลิกอุปกรณ์ปลายทาง - 1 แล้วคลิก แก้ไข

  3. ไม่บังคับ: Matter รองรับอุปกรณ์ประเภทต่างๆ ในเมนูแบบเลื่อนลงอุปกรณ์ ให้เริ่มพิมพ์ matter เพื่อเปลี่ยนอุปกรณ์ แล้วคลิกบันทึก

    เลือกอุปกรณ์ ZAP

ดูข้อมูลเพิ่มเติมได้ที่อุปกรณ์และ อุปกรณ์ปลายทางใน Matter ฉบับเบื้องต้น

คลัสเตอร์

ระบบจะเปิดใช้ตัวเลือกคลัสเตอร์ แอตทริบิวต์ และการรายงานที่กำหนดไว้ล่วงหน้าใน Endpoint - 1 โดยค่าเริ่มต้น

หากต้องการแสดงเฉพาะคลัสเตอร์ที่เปิดใช้ ให้คลิกEndpoint - 1 แล้วเลือก คลัสเตอร์ที่เปิดใช้จากเมนูแสดง นอกจากนี้ คุณยังค้นหาคลัสเตอร์ ตามชื่อได้ด้วย เช่น on

คลัสเตอร์ที่เปิดใช้ ZAP

หากต้องการเปิดใช้คลัสเตอร์เป็นไคลเอ็นต์ เซิร์ฟเวอร์ หรือไคลเอ็นต์และเซิร์ฟเวอร์ ให้ใช้เมนูแบบเลื่อนลงเปิดใช้ นอกจากนี้ คุณยังเลือกไม่ได้เปิดใช้เพื่อปิดใช้คลัสเตอร์ที่กำหนดค่าไว้ล่วงหน้าซึ่งไม่เกี่ยวข้องกับประเภทอุปกรณ์ของคุณได้ด้วย

คลัสเตอร์ปิดใช้ ZAP

ดูข้อมูลเพิ่มเติมได้ที่ คลัสเตอร์ ในMatterฉบับเบื้องต้น

แอตทริบิวต์และคำสั่ง

หากต้องการกำหนดค่าแอตทริบิวต์และคำสั่ง ให้ทำตามขั้นตอนต่อไปนี้

  1. ค้นหาOn/Offคลัสเตอร์
  2. ในแถวเดียวกัน ให้คลิกไอคอนกำหนดค่า

    กำหนดค่า ZAP

ที่นี่คุณสามารถเปิดหรือปิดใช้แอตทริบิวต์ ตั้งค่าตัวเลือกแอตทริบิวต์ต่างๆ และค้นหาแอตทริบิวต์ ตามชื่อได้

แอตทริบิวต์ ZAP

คลิกคำสั่งเพื่อกำหนดค่าการดำเนินการสำหรับคลัสเตอร์นี้ เช่น คลัสเตอร์เปิด/ปิดสำหรับหลอดไฟจะมีคำสั่งเปิด ปิด และสลับ คลัสเตอร์บางรายการ เช่น คลัสเตอร์ 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. คลิก สร้าง
  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 in 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