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

การคลิก ตัวเลือกจะช่วยให้คุณเลือกผู้ผลิตผลิตภัณฑ์, นโยบายการตอบกลับเริ่มต้น และเปิดหรือปิดใช้ Command Discovery ได้

ตัวเลือกทั่วโลกของ ZAP

คลิก ส่วนขยาย เพื่อเพิ่มคลัสเตอร์ ZCL ที่กำหนดเองหรือคำสั่งไปยังเครื่องมือกำหนดค่าคลัสเตอร์ Zigbee

ใช้

ปลายทาง

ไฟล์ lighting-app.zap มีการกำหนดค่าล่วงหน้าด้วย Matter Root Node (ปลายทาง - 0) และ Matter ไฟหรี่ได้ (ปลายทาง - 1)

ปลายทาง - 0 ประกอบด้วยคลัสเตอร์ทั่วไปที่เกี่ยวข้องกับทั้งโหนด เช่น Networking, Commissioning, Descriptor, ข้อมูลเข้าสู่ระบบการดำเนินการ และคลัสเตอร์ OTA

อุปกรณ์ปลายทาง ZAP 0

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

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

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
    
  2. คลิกปลายทาง - 1 แล้วคลิก EDIT

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

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

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

คลัสเตอร์

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

หากต้องการแสดงเฉพาะคลัสเตอร์ที่เปิดใช้ ให้คลิกปลายทาง - 1 แล้วเลือกคลัสเตอร์ที่เปิดใช้จากเมนูแสดง คุณยังค้นหาคลัสเตอร์ รายการ ตามชื่อได้อีกด้วย เช่น 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. Optional เปิดไฟล์ใน IDE ที่ต้องการ

ZAP จะสร้างกำหนด ฟังก์ชัน และซอร์สโค้ดอื่นๆ ที่กำหนดเองให้กับประเภทอุปกรณ์และการกำหนดค่า ZAP

ไฟล์ที่ ZAP สร้างขึ้น

ตัวอย่างเช่น callback-stub.cpp มีวิธี Callback ของคลัสเตอร์ที่รวมเฉพาะคลัสเตอร์ที่คุณเปิดใช้ไว้

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