ZCL Advanced Platform (ZAP) คือเครื่องมือเทมเพลต node.js ที่อิงตามMatterคลัสเตอร์
ZAP มีฟีเจอร์ต่อไปนี้สำหรับแอปและ SDK ของ Matter
- กำหนดค่าMatterปลายทาง คลัสเตอร์ แอตทริบิวต์ และ ฟีเจอร์อื่นๆ ของอุปกรณ์จากอินเทอร์เฟซ GUI
- สร้างเทมเพลตที่สร้างคำจำกัดความของโมเดลข้อมูล การเรียกกลับ และMatterซอร์สโค้ดอื่นๆ โดยอัตโนมัติ
- สร้างและใช้ไฟล์ ZAP ที่กำหนดค่าไว้ล่วงหน้าเพื่อรวมไว้กับ SDK
ติดตั้ง
ไปที่หน้ารุ่น ZAP
มองหารุ่นที่มีแท็ก "ล่าสุด" (ส่วนใหญ่จะมีแท็ก "รุ่นก่อนเปิดตัว")
ในรุ่นนี้ ให้เลือกแพ็กเกจที่กำหนดไว้สำหรับระบบปฏิบัติการของคุณในส่วนหัวชิ้นงาน แล้วดาวน์โหลด
ในเครื่องที่ใช้ 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ประเภทอุปกรณ์การจัดสรรเครือข่ายรอง
นี่เป็นตัวอย่างที่ดีในการสำรวจการกำหนดค่าคลัสเตอร์ต่างๆ
เรียกใช้
- เลือกไฟล์ ZAP จากMatterตัวอย่าง
- จากไดเรกทอรีรูทของที่เก็บ Matter (
connectedhomeip) ให้เรียกใช้ สคริปต์ Wrapperrun_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 ได้
คลิก Extensions เพื่อเพิ่มคลัสเตอร์หรือคำสั่ง ZCL ที่กำหนดเองลงใน Zigbee Clusters Configurator
ใช้
ปลายทาง
ไฟล์ lighting-app.zap ได้รับการกำหนดค่าล่วงหน้าด้วย Matter
Root Node (Endpoint - 0) และ Matter Dimmable Light
(Endpoint - 1)
Endpoint - 0 มีคลัสเตอร์ทั่วไปที่เกี่ยวข้องกับโหนดทั้งหมด เช่น คลัสเตอร์เครือข่าย การจัดสรร การอธิบาย ตัวเลือกการรับรองการปฏิบัติงาน และ OTA
ในขั้นตอนถัดไป คุณจะตรวจสอบและกำหนดค่า Endpoint - 1
Matter Dimmable Light จากตัวอย่าง lighting-app
เรียกใช้ ZAP จากที่เก็บ Matter
connectedhomeipscripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zapคลิกอุปกรณ์ปลายทาง - 1 แล้วคลิก แก้ไข
ไม่บังคับ: Matter รองรับอุปกรณ์ประเภทต่างๆ ในเมนูแบบเลื่อนลงอุปกรณ์ ให้เริ่มพิมพ์
matterเพื่อเปลี่ยนอุปกรณ์ แล้วคลิกบันทึก
ดูข้อมูลเพิ่มเติมได้ที่อุปกรณ์และ อุปกรณ์ปลายทางใน Matter ฉบับเบื้องต้น
คลัสเตอร์
ระบบจะเปิดใช้ตัวเลือกคลัสเตอร์ แอตทริบิวต์ และการรายงานที่กำหนดไว้ล่วงหน้าใน Endpoint - 1 โดยค่าเริ่มต้น
หากต้องการแสดงเฉพาะคลัสเตอร์ที่เปิดใช้ ให้คลิกEndpoint - 1 แล้วเลือก
คลัสเตอร์ที่เปิดใช้จากเมนูแสดง
นอกจากนี้ คุณยังค้นหาคลัสเตอร์
ตามชื่อได้ด้วย เช่น on
หากต้องการเปิดใช้คลัสเตอร์เป็นไคลเอ็นต์ เซิร์ฟเวอร์ หรือไคลเอ็นต์และเซิร์ฟเวอร์ ให้ใช้เมนูแบบเลื่อนลงเปิดใช้ นอกจากนี้ คุณยังเลือกไม่ได้เปิดใช้เพื่อปิดใช้คลัสเตอร์ที่กำหนดค่าไว้ล่วงหน้าซึ่งไม่เกี่ยวข้องกับประเภทอุปกรณ์ของคุณได้ด้วย
ดูข้อมูลเพิ่มเติมได้ที่ คลัสเตอร์ ในMatterฉบับเบื้องต้น
แอตทริบิวต์และคำสั่ง
หากต้องการกำหนดค่าแอตทริบิวต์และคำสั่ง ให้ทำตามขั้นตอนต่อไปนี้
- ค้นหา
On/Offคลัสเตอร์ ในแถวเดียวกัน ให้คลิกไอคอนกำหนดค่า
ที่นี่คุณสามารถเปิดหรือปิดใช้แอตทริบิวต์ ตั้งค่าตัวเลือกแอตทริบิวต์ต่างๆ และค้นหาแอตทริบิวต์ ตามชื่อได้
คลิกคำสั่งเพื่อกำหนดค่าการดำเนินการสำหรับคลัสเตอร์นี้ เช่น คลัสเตอร์เปิด/ปิดสำหรับหลอดไฟจะมีคำสั่งเปิด ปิด
และสลับ คลัสเตอร์บางรายการ เช่น คลัสเตอร์ Temperature Measurement อาจไม่มีคำสั่งที่เชื่อมโยง
ดูข้อมูลเพิ่มเติมได้ที่ แอตทริบิวต์และคำสั่ง ใน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>
เมื่อกำหนดค่าปลายทางแล้ว คุณจะสร้างไฟล์ต้นฉบับเพื่อผสานรวมกับโปรเจ็กต์ได้
- คลิก สร้าง
- เลือกโฟลเดอร์เพื่อบันทึกเอาต์พุตของ ZAP เช่น ไปที่
connectedhomeip/zzz_generated/lighting-app/zap-generatedสำหรับlighting-app - ไม่บังคับ เปิดไฟล์ใน IDE ที่ต้องการ
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