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

1. מבוא

תקן Matter הוא פרוטוקול קישוריות שמעניק הזדמנויות מלהיבות לפיתוח של מכשירים חכמים. בשיעור הזה תלמדו ליצור את המכשיר הראשון בתקן 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. משלימים את ההתקנה של Toolschain:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

הגדרת SDK בתקן Matter

  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

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

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

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

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

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

4. בניית המכשיר

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

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

הגדרת ה-build

  1. צריך להגדיר את Matter SDK ולהפעיל את סביבת ה-build של Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. מפעילים את התכונה Ccache, שמאיצה את תהליך ה-build:
    $ export IDF_CCACHE_ENABLE=1
    
  3. עוברים לספריית ה-build של ESP32 של lighting-app ומגדירים את ארכיטקטורת היעד:
    $ 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 שהוקצה על ידי Alliance, או ל-VID לבדיקה.
    8. יש להגדיר את Product ID ל-PID שהגדרת בשילוב של Matter ב-Google Home Developer 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. אם מופיע מסוף ריק, לוחצים על הלחצן RESET כדי להתחיל את תהליך ההפעלה של המכשיר.

6. עמלה של המכשיר

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

Nest Hub

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

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

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

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

התאמת המכשיר

פועלים לפי הוראות ההתאמה של 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]]

פתרון בעיות

כשלים בהתקנה

לטיפים נוספים לפתרון בעיות, תוכלו לעיין בדף 'פתרון בעיות עם Matter'.

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

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

Google Assistant

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

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

אפליקציית Google Home

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

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

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

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

8. כל הכבוד!

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

ב-Codelab הזה למדתם איך:

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

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

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