יצירת מכשיר בתקן Matter

1. מבוא

תקן Matter הוא פרוטוקול קישוריות שמספק הזדמנויות מעניינות לפיתוח מכשירים חכמים. ב-Codelab הזה בונים את המכשיר הראשון בתקן Matter. מידע נוסף על תקן Matter זמין במרכז המפתחים של Google Home: Matter או באתר של Connectivity Standards Alliance.

מה תלמדו

  • איך משלבים מכשיר פיזי עם תקן Matter.
  • איך להזמין מכשיר Matter ולשלוט בו באמצעות Google Home.

למה תזדקק?

2. הגדרת הסביבה

זיהוי המכשיר עם יציאה טורית

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

  1. מחברים את לוח המפתחים למחשב באמצעות כבל USB.
  2. מחפשים במערכת הקבצים /dev את מכשיר לוח המפתחים. אפשר לצמצם את החיפוש על ידי ציון קידומת המכשיר בלוח המפתחים. ה-ESP32 של Espressif משתמש ב-/dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

הגדרת המרכז

מגדירים את המרכז באמצעות חשבון Google שבו מתכוונים להשתמש ב-Codelab הזה.

הגדרת סביבת הפיתוח

דרישות מוקדמות

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

יחסי תלות בהתקנות

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

$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen

הגדרת ה-SDK

כדי להמשיך את ה-Codelab הזה, יש צורך ב-Espressif SDK (Espressif IoT Development Framework או 'ESP-IDF').

  1. יוצרים ספרייה שתכיל את ה-ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. משכפלים את ה-ESP-IDF מ-GitHub לספרייה הזאת:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. משלימים את התקנת 'צרור הכלים':
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

איך מגדירים את תקן Matter SDK

  1. שכפול המאגר של תקן Matter בקוד פתוח:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. מאחזרים את המודולים המשניים של המאגר:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. אתחול סביבת הפיתוח של תקן Matter:
    $ source ./scripts/bootstrap.sh
    

3. Google Home Developer Console

Google Home Developer Console הוא אפליקציית האינטרנט שבה מנהלים את השילובים של תקן Matter עם Google Home.

כל מכשיר בתקן Matter שעבר אישור של Connectivity Standards Alliance (Alliance) פועל בסביבה העסקית של Google Home. בסביבה העסקית של Google Home אפשר להזמין מכשירים שנמצאים בפיתוח שלא אושרו בתנאים מסוימים. מידע נוסף זמין במאמר בנושא הגבלות התאמה.

יוצרים פרויקט פיתוח

כדי להתחיל, נכנסים אל Google Home Developer Console:

  1. לוחצים על Create project.
  2. מזינים שם ייחודי לפרויקט ולוחצים על Create project. תיבת דו-שיח ליצירת פרויקט חדש
  3. לוחצים על + Add integration (הוספת שילוב) למסך Matter resources). שם ניתן לראות את מסמכי הפיתוח של תקן Matter ולקרוא על כלים מסוימים.
  4. כשהכול מוכן, לוחצים על Next: Develop (השלב הבא: פיתוח) כדי להציג את הדף רשימת משימות בנושא עניינים.
  5. לוחצים על הבא: הגדרה.
  6. בדף הגדרה מזינים את שם המוצר.
  7. לוחצים על בחירת סוג המכשיר ובוחרים את סוג המכשיר מהתפריט הנפתח (במקרה הזה, Light).
  8. בקטע 'מזהה ספק (VID)', בוחרים באפשרות Test VID ואז בוחרים 0xFFF1 בתפריט הנפתח Test VID. בקטע 'מזהה מוצר (PID)', מזינים 0x8,000 ולוחצים על Save & continue ואז לוחצים על Save בדף הבא. משתמשים בערכי VID/PID המדויקים האלו, ושלבי Codelab מאוחרים יותר תלויים בהם.
    הגדרת פרויקט
  9. השילוב יופיע עכשיו בקטע שילובים של חומרים.
  10. צריך להפעיל מחדש את ה-Hub כדי לוודא שהוא יקבל את ההגדרה האחרונה של פרויקט השילוב של Matter. אם צריך לשנות את ה-VID או את ה-PID בשלב מאוחר יותר, צריך גם להפעיל מחדש אחרי שמירת הפרויקט כדי שהשינוי ייכנס לתוקף. במאמר הפעלה מחדש של מכשירי Google Nest או Google Wifi ניתן למצוא הוראות מפורטות להפעלה מחדש.

4. פיתוח המכשיר

כל הדוגמאות ב- Matter נמצאות בתיקיית הדוגמאות שבמאגר GitHub. יש כמה דוגמאות זמינות, אבל התמקדנו ב-Codelab הזה באפליקציית התאורה.

הדוגמה הזו היא מכשיר פשוט שמופיע ב-Google Home כנורית הפעלה/כיבוי, ומגיבה לפקודות 'הפעלה' ו'כיבוי'. ב-Codelab הזה אין אפשרות לשלוט בתאורה חשמלית ממשית.

הגדרת ה-build

  1. מגדירים את ה-SDK של תקן Matter ומפעילים את סביבת ה-build של תקן Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. מפעילים את האפשרות מטמון, שמזרזת את תהליך ה-build:
    $ export IDF_CCACHE_ENABLE=1
    
  3. עוברים לספריית ה-build של lighting-app ESP32 ומגדירים את ארכיטקטורת היעד:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. מריצים את כלי ההגדרה:
      $ idf.py menuconfig
      
    2. בוחרים באפשרות Demo -> Device Type ומגדירים את Device Type לערך ESP32-DevKitC.
    3. כדי לחזור לתפריט ברמה העליונה, מקישים על מקש החץ שמאלה.
    4. יש לבחור באפשרות Component config --->.
    5. יש לבחור באפשרות CHIP Device Layer --->.
    6. יש לבחור באפשרות Device Identification Options --->.
    7. מגדירים את Vendor ID ל-VID שהוקצה לכם או ל-VID לבדיקה.
    8. מגדירים את Product ID ל-PID שהגדרתם בשילוב של תקן Matter ב-Google Home Console.
    9. מקישים על S כדי לשמור.
    10. מקישים על Return כדי לאשר את נתיב ברירת המחדל שבו ההגדרה תישמר.
    11. מקישים על Return כדי לסגור את תיבת הדו-שיח לאישור השמירה.
    12. מקישים על Q כדי לצאת מהכלי להגדרת תצורה.

הפעלת ה-build

מפעילים את סקריפט ה-build:

idf.py build

ה-build צריך להסתיים ללא שגיאות.

מתכנתים את המכשיר

  1. מחברים את לוח המפתחים למחשב באמצעות כבל USB.
  2. מוחקים את הקושחה הקודמת במכשיר (אם רק לוח מפתחים אחד מחובר למחשב, אפשר להשאיר את האפשרות -p {device} - המכשיר אמור להיות מזוהה באופן אוטומטי):
    idf.py -p {device} erase-flash
    
  3. מעתיקים את האפליקציה החדשה ללוח המפתחים באמצעות:
    idf.py -p {device} flash
    

מידע נוסף על אפשרויות ההבהוב זמין בדף התיעוד של Espressif esptool.py.

5. התחברות למכשיר

  1. פותחים חלון טרמינל.
  2. רושמים בצד את הספרייה שבה נמצאים, ואז מתחברים למכשיר החדש בתקן Matter באמצעות GNU screen:
    $ screen -L {device} 115200
    
  3. אם אתם רואים מסוף ריק, לוחצים על הלחצן איפוס כדי להתחיל את תהליך ההפעלה של המכשיר.

6. הזמנת המכשיר

הערה: השלב הזה יצליח רק אם כבר הגדרתם את הפרויקט ב-Google Home Console.

Nest Hub

יש צורך ברכזת כדי להתקין את המכשיר על גבי מבד תקן Matter. זהו מכשיר Google Nest, כמו Nest Hub (דור שני), שתומך ב-Matter וישמש גם כנתב גבול במכשירים שתומכים בפרוטוקול Thread וגם כנתיב מקומי למילוי הזמנות לניתוב כוונות של בית חכם.

ברשימה הזו אפשר לראות אילו רכזות תומכות בתקן Matter.

לפני שמתחילים בתהליך ההזמנה, חשוב לוודא את הפרטים הבאים:

  • המרכז מותאם לאותו חשבון Google שבו השתמשתם כדי להיכנס ל-Google Home Console.
  • מרכז הנתונים נמצא באותה רשת Wi-Fi שאליה מחובר המחשב שבו השתמשת כדי להפעיל את המכשיר הווירטואלי.
  • מרכז הבית נמצא באותו מבנה שבו אתם משתמשים באפליקציית Google Home. (ה'בית' ב-Google Home Graph מייצג את המבנה שלכם).

התאמת המכשיר

פועלים לפי הוראות ההתאמה ל-ESP32 כדי להתאים את המכשיר.

הערה: אם אתם משתמשים ב-M5STACK, חשוב לשים לב שהמסך שלו יישאר ריק לאחר ההבהוב, כך שתצטרכו להציג את קוד ה-QR באמצעות כתובת ה-URL שמופיעה במסוף. לחלופין, אפשר להקליד את קוד ההתאמה הידני.

פלט לדוגמה של מסוף שמציג כתובת URL של קוד QR:

I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]

פתרון בעיות

ההכנה נכשלה

לטיפים נוספים לפתרון בעיות, ראו דף פתרון בעיות שקשורות לנושאים.

7. שליטה במכשיר

אחרי שהמכשיר שתואם לתקן Matter הוזמן ומופיע באפליקציית Google Home כנורה, אפשר לנסות לשלוט במכשיר באמצעות Google Assistant, אפליקציית Google Home או הסימולטור של Google Assistant בתוסף של Google Home ל-VS Code.

Google Assistant

אפשר להשתמש ב-Google Assistant בטלפון או ברכזת כדי להחליף את מצב המכשיר מפקודות קוליות, כמו למשל "Ok Google, turn my lights".

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

אפליקציית Google Home

אפשר להקיש על התוויות מופעל ומושבת לצד סמל הנורה שמוצג באפליקציית Google Home.

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

סימולטור של Google Assistant

בתוסף של Google Home ל-VS Code, באמצעות הסימולטור של Google Assistant, אפשר להשמיע דיבור למכשיר באמצעות ממשק דמוי צ'אט.

8. מעולה!

יצרת והזמנת את המכשיר הראשון בתקן Matter. מדהים!

ב-Codelab הזה למדנו איך:

  • התקנת סביבת פיתוח של תקן Matter מדרישות למצב עבודה.
  • יצירה והפעלה של מכשיר בתקן Matter.
  • מקבלים עמלות ושליטה במכשיר מ-Google Home.

למידע נוסף על תקן Matter, אפשר לעיין בהפניות הבאות:

  • מוצר Matter Primer של Google Home, שבו אפשר ללמוד על המושגים והעקרונות החשובים של פרוטוקול Matter.
  • מפרט Matter, ספריית מכשירי Matter וספריית אשכול האפליקציות של Matter, שפורסמו על ידי Connected Standard Alliance.
  • המאגר של Matter GitHub.