ZCL Advanced Platform (ZAP) הוא מנוע תבניות של node.js שמבוסס על Matter אשכולים.
ZAP מספקת את התכונות הבאות לאפליקציות ולערכות SDK של Matter:
- הגדרת Matter נקודות קצה, אשכולות, מאפיינים ותכונות אחרות של המכשיר מממשק משתמש גרפי.
- ליצור תבניות שמגדירות באופן אוטומטי מודלים של נתונים, קריאות חוזרות וMatter קוד מקור אחר.
- יוצרים קובצי ZAP שהוגדרו מראש ומשתמשים בהם כדי לכלול אותם בערכות ה-SDK.

התקנה
עוברים לדף ZAP releases.
מחפשים את הגרסה עם התיוג 'העדכנית ביותר' (רוב הגרסאות יתויגו כ'גרסת טרום-הפצה').
בקטע הזה, בכותרת נכסים, בוחרים את החבילה שמתאימה למערכת ההפעלה ומורידים אותה.
במחשב עם 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 נפוצים ושלושה Endpoints, כולל Matter Secondary Network Commissioning Device Type. זו דוגמה טובה לבדיקת תצורות שונות של Cluster.
ריצה
- בוחרים קובץ ZAP מאחת מMatter הדוגמאות.
- מהספרייה הראשית של מאגר Matter (
connectedhomeip
), מריצים את סקריפט העטיפהrun_zaptool.sh
ומעבירים לו את הנתיב לקובץ.zap
.
לדוגמה:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
הגדרה
ב
הגדרות אפשר להגדיר את ממשק המשתמש של ZAP, כולל בחירה בין עיצוב בהיר או כהה, והפעלה או השבתה של הכלים למפתחים.כשלוחצים על
אפשרויות אפשר לבחור את יצרן המוצר, את מדיניות התגובה שמוגדרת כברירת מחדל ולהפעיל או להשבית את האפשרות 'גילוי פקודות'.
לוחצים על
Extensions (תוספים) כדי להוסיף אשכולות או פקודות ZCL מותאמים אישית ל-Zigbee Clusters Configurator.שימוש
נקודות קצה
קובץ lighting-app.zap
מוגדר מראש עם Matterצומת שורש (Endpoint – 0) ועם Matterתאורה עם אפשרות לעמעום (Endpoint – 1).
נקודת קצה – 0 כוללת אשכולות כלליים שרלוונטיים לכל הצומת, למשל אשכולות של רשת, הפעלה, תיאור, אישורים תפעוליים ו-OTA.

בשלבים הבאים תבדקו ותגדירו את Endpoint - 1
Matter Dimmable Light מהדוגמה lighting-app
.
מריצים את ZAP ממאגר Matter
connectedhomeip
.scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
לוחצים על נקודת קצה – 1 ואז על
עריכה.אופציונלי: Matter תומך בסוגים שונים של מכשירים. בתפריט הנפתח מכשיר, מתחילים להקליד
matter
כדי לשנות את המכשיר, ואז לוחצים על שמירה.
מידע נוסף זמין במאמר מכשירים ונקודות קצה בMatter Primer.
אשכולות
כברירת מחדל, האפשרויות 'אשכולות מוגדרים מראש', 'מאפיינים' ו'דיווח' מופעלות בנקודת קצה – 1.
כדי להציג רק את האשכולות המופעלים, לוחצים על Endpoint - 1 ובוחרים באפשרות Enabled Clusters (אשכולות מופעלים) בתפריט Show (הצגה). אפשר גם לחפש on
.

כדי להגדיר קלאסטר כלקוח, כשרת או כלקוח ושרת, משתמשים בתפריט הנפתח הפעלה. אפשר גם לבחור באפשרות לא מופעל כדי להשבית אשכול שהוגדר מראש ולא רלוונטי לסוג המכשיר.

מידע נוסף זמין במאמר בנושא אשכולות בMatter Primer.
מאפיינים ופקודות
כדי להגדיר מאפיינים ופקודות, מבצעים את השלבים הבאים:
- מחפשים את האשכול
On/Off
. באותה שורה, לוחצים על סמל ההגדרה
.
כאן אפשר להפעיל או להשבית מאפיינים, להגדיר אפשרויות שונות של מאפיינים ולחפש מאפיינים
לפי שם.
לוחצים על Commands (פקודות) כדי להגדיר פעולות עבור האשכול הזה. לדוגמה, קבוצת הפקודות הפעלה/השבתה של מנורה תכלול את הפקודות הפעלה, השבתה והחלפה. יכול להיות שבחלק מהאוספים, כמו אוסף 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
כולל שיטת קריאה חוזרת (callback) של Cluster שכוללת רק את ה-Cluster שהפעלתם:
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.