למכשירים ב-Matter יש מודל נתונים מוגדר היטב (DM), שהוא מודל היררכי של תכונות המכשיר. ברמה העליונה בהיררכיה הזו יש מכשיר.
מכשירים ונקודות קצה
כל המכשירים, כולל סמארטפונים ועוזרים דיגיטליים לבית, מורכבים מצמתים1. צומת הוא משאב ייחודי שניתן לזיהוי ולכתובת ברשת, שמשתמש יכול לתפוס כשלם מבחינה פונקציונלית. תקשורת ברשת ב-Matter מתחילה ומסתיימת בצומת.
צמתים הם אוסף של נקודות קצה. כל נקודת קצה כוללת קבוצת תכונות. לדוגמה, נקודת קצה יכולה להיות קשורה לפונקציונליות של תאורה, נקודה אחרת יכולה להיות קשורה לזיהוי תנועה, ונקודה נוספת יכולה להיות קשורה לשירותים כמו עדכון OTA של המכשיר.
תפקידים בצומת
תפקיד של צומת הוא קבוצה של התנהגויות קשורות. לכל צומת יכול להיות תפקיד אחד או יותר. תפקידי הצומת כוללים:
- נציב/ה: צומת שמבצע הקצאת הרשאות.
- בקר: צומת שיכול לשלוט בצומת אחד או יותר. לדוגמה, Google Home app (GHA), Google Assistant ו-Google Nest Hub (2nd gen). לסוגים מסוימים של מכשירים, כמו מתג הפעלה/השבתה של תאורה, יש תפקיד של בקר.
- ישות נשלטת: צומת שאפשר לשלוט בו באמצעות צומת אחד או יותר. רוב סוגי המכשירים יכולים להיות מכשירים נשלטים, חוץ מכמה סוגי מכשירים שממלאים את התפקיד של מכשיר השליטה, כמו מתג אור הפעלה/השבתה. מתג ההפעלה/השבתה יכול להיות רק בקר. היא לא יכולה להיות נשלטת.
- ספק OTA: צומת שיכול לספק עדכוני תוכנה OTA.
- מבקש OTA: צומת שיכול לבקש עדכוני תוכנה מ-OTA.
אשכולות
בתוך נקודת קצה, לצומת יש אשכול אחד או יותר. הם עוד שלב בהיררכיית המכשירים, כי הם מקבצים פונקציונליות ספציפית כמו קבוצת הפעלה/השבתה בשקע חכם, או קבוצת שליטה ברמה בנקודת קצה של מנורה שאפשר לעמעם.
לצומת יכולות להיות גם כמה נקודות קצה, שכל אחת מהן יוצרת מופע של אותה פונקציונליות. לדוגמה, גוף תאורה יכול לחשוף שליטה עצמאית בתאורות נפרדות, או שמפצל חשמל יכול לחשוף שליטה בשקעים נפרדים.
מאפיינים
ברמה האחרונה נמצא את המאפיינים, שהם מצבים שמוחזקים על ידי הצומת, כמו מאפיין הרמה הנוכחית של אשכול שליטה ברמה. מאפיינים יכולים להיות מוגדרים כסוגי נתונים שונים, כמו uint8, מחרוזות או מערכים.
פקודות
בנוסף למאפיינים, יש גם פקודות באשכולות, שהן פעולות שאפשר לבצע. הם שווי ערך ב-DM של Matter לקריאה לפרוצדורה מרוחקת. הפקודות הן כמו פועל, למשל נעילת הדלת באשכול נעילת הדלת. פקודות עשויות ליצור תשובות ותוצאות. ב-Matter, תשובות כאלה מוגדרות גם כפקודות, בכיוון ההפוך.
אירועים
בנוסף, יכולים להיות ב-Clusters גם אירועים, שאפשר לחשוב עליהם כרשומה של מעברים קודמים בין מצבים. מאפיינים מייצגים את המצבים הנוכחיים, ואילו אירועים הם יומן של העבר, והם כוללים מונה שעולה באופן מונוטוני, חותמת זמן ועדיפות. הם מאפשרים ללכוד מעברים בין מצבים, וגם ליצור מודלים של נתונים שלא ניתן להשיג בקלות באמצעות מאפיינים.
נקודת הקצה 0 שמורה לאשכולות כלי השירות. אשכולות שירות הם אשכולות ספציפיים שמכילים פונקציונליות של שירות בנקודת קצה, כמו גילוי, טיפול בבעיות, אבחון ועדכון תוכנה. לעומת זאת, קבוצות של אפליקציות תומכות בפעולות ראשיות כמו הפעלה/השבתה או מדידת טמפרטורה.
סוגי מכשירים
באופן כללי, אילו שילובים של Cluster צריך לכלול כשמייצרים מכשיר חדש?
במפרט Matter נדרש שהמכשיר יטמיע או ירחיב סוג מכשיר אחד או יותר של סוגי מכשירים. סוג המכשיר הוא אוסף של קלאסטרים (Clusters) שהם חובה או אופציונליים, שמגדירים את המאפיינים ברמה העליונה של מכשיר פיזי, כמו Dimmable Light (אור ניתן לעמעום), Door Lock (נעילת דלת) או Video Player (נגן וידאו).
סוגי המכשירים לא מפורטים במסמך הראשי של המפרט Matter, אלא במסמך נלווה: ספריית המכשירים. באופן דומה, כל קלאסטרי האפליקציות מוגדרים בספריית קלאסטרי האפליקציות. שלושת המסמכים האלה זמינים בConnectivity Standards Alliance (Alliance)אתר לחברי המועדון.
כל נקודת קצה שמטמיעה סוג מכשיר חייבת להטמיע את האשכולות הנדרשים שמגדירים את סוג המכשיר הזה. בנוסף ל-Clusters שהם חובה, יכול להיות שנקודת הקצה תטמיע Clusters נוספים, כולל אחד או יותר מה-Clusters האופציונליים של סוג המכשיר, או אפילו Clusters שלא שייכים לסוג המכשיר.
לקוחות ושרתים
אשכולות יכולים להיות אשכול לקוח או אשכול שרת. שרת הוא בעל מצב ומכיל מאפיינים, אירועים ופקודות, בעוד שלקוח הוא חסר מצב והתפקיד שלו הוא ליזום אינטראקציות עם אשכול שרתים מרוחק, ולכן הוא מבצע:
- קריאה של המאפיינים המרוחקים וכתיבה שלהם.
- קריאות של אירועים מרוחקים.
- הפעלה של פקודות מרחוק.
הצ'אט הישיר הוא היררכי בתוך הצומת, אבל הקשר בין הצמתים הוא לא היררכי. לצמתים ב-Matter אין יחסים אנכיים של בקר/ציוד היקפי או של מוביל/עוקב. לעומת זאת, היחסים הם אופקיים: כל אשכול יכול להיות שרת או לקוח. לכן, צומת יכול להיות גם שרת וגם לקוח בהקשר של אשכולות ופונקציות שונים.
לדוגמה, יכול להיות שיש לנו שתי מנורות שולחן: Node A ו-Node B. שני הצמתים מיישמים את סוג המכשיר On/Off Light. סוג המכשיר הזה כולל אשכול On/Off Server ששולט על פלט האור הפיזי שלהם.
אבל כמו במנורות שולחן רגילות, המכשירים הפיזיים שלנו יכללו גם את סוג המכשיר On/Off Light Switch (מתג הפעלה/השבתה של אור) עבור מתגי ההפעלה/השבתה המקומיים שלהם. ה-DeviceType הזה צריך להטמיע את On/Off Client Cluster כדי שיוכל לשלוט ב-Server Clusters.
בדוגמה הזו, קלאסטר הלקוח On/Off בצומת א' משנה את המאפיינים של קלאסטר השרת On/Off בצומת א' ובצומת ב', בעוד שקלאסטר הלקוח של צומת ב' משנה רק את קלאסטר השרת בצומת ב' עצמו.
בקטע הבא נסביר בפירוט איך אשכולות של לקוחות ושרתים מקיימים אינטראקציה: מודל האינטראקציה.
אשכול תיאורים
כפי שהשם מרמז, שרת Descriptor Cluster מספק מידע על אינטרוספקציה. היא מתארת את נקודת הקצה ומפרטת את:
- אשכולות שרתים.
- אשכולות לקוחות.
- סוגי מכשירים.
- נקודות קצה נוספות, שנקראות חלקים.
לכל סוג מכשיר נדרשת הטמעה של אשכולות תיאור. סוג מכשיר הבסיס מוגדר בנקודת קצה 0. קריאת אשכול המתארים תספק ללקוח את היכולת לעבור על כל העץ של נקודות הקצה הזמינות ולבצע פעולות רלוונטיות.
המכשיר המפקח או המכשיר השולט, כמו טלפון או רכזת, יכול להשתמש במידע שנמצא ב-Descriptor Cluster כדי ליצור מודל של המכשיר (מנורה, מתג, משאבה, תרמוסטט) ושל תכונות ספציפיות שהוטמעו במופע המסוים הזה של המכשיר, ולהציג למשתמש את ממשק המשתמש הנכון.
אשכולות שרתים
המאפיין ServerList מפרט את שרתי האשכול בנקודת הקצה.
אשכולות לקוחות
המאפיין ClientList מפרט את הלקוחות של האשכול בנקודת הקצה.
רשימת סוגי מכשירים
המאפיין DeviceTypeList הוא רשימה של סוגי מכשירים שנתמכים על ידי נקודת הקצה, יחד עם הגרסאות המתאימות שלהם. היא חייבת להכיל לפחות Device Type אחד.
רשימת חלקים
הקטע PartsList מכיל את רשימת נקודות הקצה שמשמשות להטמעה של סוג המכשיר הזה.
ה-PartsList של נקודת קצה 0 (צומת הבסיס) מכיל את כל נקודות הקצה של המכשיר, מלבד נקודת קצה 0 עצמה.
השדה PartsList של נקודות קצה אחרות יהיה בדרך כלל ריק. לדוגמה, חיישן טמפרטורה מחייב אשכול שרתים למדידת טמפרטורה, ולא שום דבר אחר.
סוגי מכשירים אחרים עשויים להיות מורכבים במבנה עץ של יותר ממופע אחד של Device Type. לדוגמה, סוג המכשיר Video Player יכול לכלול TV, Video Player, Speaker וסוגים שונים של מכשירי אפליקציות תוכן, כל אחד בנקודת קצה שונה.
-
במפרט Matter נקבע שמכשיר יכול לכלול כמה צמתים. לדוגמה, בסמארטפונים יכולות להיות כמה אפליקציות, וכל אפליקציה היא צומת אחר. לצורך המדריך הזה, כל המכשירים יכילו צומת יחיד. רוב המכשירים הפיזיים צפויים לפעול לפי הדפוס הזה. ↩