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