מודל הנתונים של המכשיר

למכשירים ב-Matter יש מודל נתונים (DM) מוגדר היטב, שהוא מודל היררכי של תכונות המכשיר. ברמה העליונה של ההיררכיה הזו נמצא המכשיר.

מכשירים ונקודות קצה (endpoint)

כל המכשירים, כולל סמארטפונים ועוזרים אישיים לבית, מורכבים מצמתים1. צומת הוא משאב ייחודי שניתן לזיהוי ולפנייה ברשת, שמשתמש יכול לתפוס כשלם מבחינה פונקציונלית. תקשורת הרשת ב-Matter מתחילה ומסתיימת בצומת.

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

היררכיה של מכשירים, צמתים ונקודות קצה
איור 1: מכשירים, צמתים ונקודות קצה

תפקידי צמתים

תפקיד צומת הוא קבוצה של התנהגויות קשורות. לכל צומת יכולים להיות תפקיד אחד או יותר. תפקידי הצמתים כוללים:

  • מנהל: צומת שמבצע ניהול.
  • בקר: צומת שיכול לשלוט בצומת אחד או יותר. לדוגמה, Google Home app (GHA), Google Assistant ו-Google Nest Hub (2nd gen). לחלק מסוגי המכשירים, כמו מתג הפעלה/כיבוי של תאורה, יש תפקיד של בקר.
  • צומת נשלט: צומת שאפשר לשלוט בו באמצעות צומת אחד או יותר. רוב סוגי המכשירים יכולים להיות נשלטים, חוץ מסוגי מכשירים מסוימים שיש להם תפקיד של בקר, כמו מתג הפעלה/כיבוי של תאורה. מתג האור יכול להיות רק בקר. הוא לא יכול להיות מכשיר מבוקר.
  • ספק OTA: צומת שיכול לספק עדכוני תוכנה ב-OTA.
  • מבקש OTA: צומת שיכול לבקש עדכוני תוכנה ב-OTA.

אשכולות

בתוך נקודת קצה, לצומת יש אשכול אחד או יותר. הם שלב נוסף בהיררכיית המכשירים, כי הם מקבצים פונקציונליות ספציפית, כמו אשכול הפעלה/כיבוי בתקע חכם, או אשכול בקרת רמה בנקודת קצה של נורה ניתנת לעמעום.

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

מאפיינים

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

היררכיה של צמתים, נקודות קצה, מאפיינים ופקודות
איור 2: צמתים, נקודות קצה, מאפיינים ופקודות

פקודות

בנוסף למאפיינים, לאשכולות יש גם פקודות, שהן פעולות שאפשר לבצע. הם המקבילים לקריאה לשירות מרוחק (RPC) ב-DM של Matter. הפקודות הן כמו פעלים, למשל נעילת דלת באשכול מנעול דלת. פקודות יכולות ליצור תשובות ותוצאות. ב-Matter, התשובות האלה מוגדרות גם כפקודות, בכיוון ההפוך.

אירועים

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

מכשיר לדוגמה מלא
איור 3: דוגמה להיררכיה של מודל האינטראקציה של Matter Devices

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

סוגי מכשירים

אילו שילובים של אשכולות צריך לכלול כשיצרן מכשירים מתכנן מכשיר חדש?

לפי המפרט של Matter, המכשיר צריך להטמיע או להרחיב סוג מכשיר אחד או יותר. סוג מכשיר הוא אוסף של אשכולות חובה ואשכולות אופציונליים שמגדירים את המאפיינים ברמה העליונה של מכשיר פיזי, כמו תאורה ניתנת לעמעום, מנעול דלת או נגן וידאו.

סוגי המכשירים לא מפורטים במסמך הראשי של מפרט Matter, אלא במסמך נלווה: ספריית המכשירים. באופן דומה, כל אשכולות האפליקציות מוגדרים בספריית אשכולות האפליקציות. שלושת המסמכים האלה זמינים באתר לחברי Connectivity Standards Alliance (Alliance).

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

לקוחות ושרתים

אשכולות יכולים להיות אשכול לקוח או אשכול שרת. בעוד שהשרת הוא stateful ומכיל מאפיינים, אירועים ופקודות, הלקוח הוא stateless והתפקיד שלו הוא ליזום אינטראקציות עם אשכול שרתים מרוחק, וכך לבצע:

  • קורא את המאפיינים המרוחקים שלו וכותב אליהם.
  • קריאות של האירועים המרוחקים שלו.
  • הפעלה של הפקודות מרחוק.

למרות שמודל הנתונים הוא היררכי בתוך צומת, הקשר בין הצמתים הוא לא היררכי. לצמתים ב-Matter אין קשרי בקר/ציוד היקפי או מוביל/עוקב אנכיים. להפך, הקשר הוא אופקי: כל אשכול יכול להיות שרת או לקוח. לכן, צומת יכול להיות גם שרת וגם לקוח, בהתאם לאשכולות ולפונקציות השונות.

לדוגמה, נניח שיש לנו שתי מנורות שולחן: צומת א' וצומת ב'. שני הצמתים מטמיעים סוג מכשיר של תאורה עם מתג הפעלה/כיבוי. סוג המכשיר הזה כולל אשכול On/Off Server ששולט בפלט האור הפיזי של המכשיר.

אבל כמו מנורות שולחן רגילות, המכשירים הפיזיים שלנו יכללו גם סוג מכשיר של מתג הפעלה/כיבוי של תאורה בשביל מתגי ההפעלה/כיבוי המקומיים שלהם. סוג המכשיר הזה צריך להטמיע אשכול On/Off Client כדי שיוכל לשלוט באשכולות השרת.

מנורות שכוללות גם מתג הפעלה/כיבוי וגם מתג תאורה
איור 4: אשכולות של לקוחות ושרתים

בדוגמה הזו, אשכול הלקוח להפעלה/כיבוי בצומת א' משנה את המאפיינים של אשכול השרת להפעלה/כיבוי בצומת א' ובצומת ב', ואשכול הלקוח בצומת ב' משנה רק את אשכול השרת בצומת ב' עצמו.

בקטע הבא נפרט איך אשכולות הלקוח והשרת פועלים יחד: מודל האינטראקציה.

אשכול תיאורים

כפי שניתן להבין מהשם, Descriptor Cluster Server מספק מידע על בדיקת המערכת. הוא מתאר את נקודת הקצה ומפרט את:

  • אשכולות שרתים.
  • אשכולות של לקוחות.
  • סוגי מכשירים.
  • נקודות קצה נוספות, שנקראות "חלקים".

בכל סוג מכשיר צריך להטמיע אשכולות של מתארים. סוג המכשיר הראשי מוגדר בנקודת הקצה 0. קריאת אשכול התיאור שלו תספק ללקוח את החשיפה כדי לעבור על העץ המלא של נקודות הקצה הזמינות ולבצע פעולות רלוונטיות.

המכשיר המנהל או המכשיר השולט, כמו טלפון או רכזת, יכול להשתמש במידע שנמצא ב-Descriptor Cluster כדי ליצור מודל של המכשיר (תאורה, מתג, משאבה, תרמוסטט) ותכונות ספציפיות שמוטמעות במופע הספציפי הזה של המכשיר, ולהציג למשתמש את ממשק המשתמש הנכון.

אשכולות שרתים

המאפיין ServerList מציג את שרתי האשכול בנקודת הקצה.

אשכולות של לקוחות

המאפיין ClientList מפרט את הלקוחות של האשכול בנקודת הקצה.

רשימת סוגי המכשירים

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

רשימת חלקים

הקובץ PartsList מכיל את רשימת נקודות הקצה שמשמשות להטמעת סוג המכשיר הזה.

ה-PartsList של נקודת קצה 0 (צומת הבסיס) מכיל את כל נקודות הקצה של המכשיר, חוץ ממנה (נקודת קצה 0).

השדה PartsList של נקודות קצה אחרות בדרך כלל יהיה ריק. לדוגמה, חיישן טמפרטורה מחייב אשכול שרתים למדידת טמפרטורה, ולא שום דבר אחר.

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


  1. לפי המפרט של Matter, למכשיר יכולים להיות כמה צמתים. לדוגמה, בסמארטפונים יכולות להיות כמה אפליקציות, וכל אפליקציה היא צומת אחר. לצורך המדריך הזה, כל המכשירים יכילו צומת אחד. רוב המכשירים הפיזיים אמורים לפעול לפי הדפוס הזה. ↩