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