יצירת מכשיר בתקן 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 שעדיין לא הותקנו:

$ 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 שעבר את אישור Matter של Connectivity Standards Alliance (הארגון) פועל במערכת האקולוגית של Google Home. אפשר להפעיל מכשירים שנמצאים בפיתוח ולא קיבלו אישור במערכת האקולוגית של Google Home בתנאים מסוימים. מידע נוסף זמין במאמר בנושא הגבלות על צימוד מכשירים.

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

כדי להתחיל, עוברים אל Google Home Developer Console:

  1. לוחצים על יצירת פרויקט.
  2. מזינים שם ייחודי לפרויקט ולוחצים על יצירת פרויקט. תיבת דו-שיח ליצירת פרויקט חדש
  3. לוחצים על + הוספת שילוב כדי לעבור למסך משאבי תקן Matter, שבו אפשר לראות את מאמרי העזרה למפתחים של תקן Matter ולקרוא על כמה כלים.
  4. כשמוכנים להמשיך, לוחצים על הבא: פיתוח כדי להציג את הדף רשימת המשימות בנושא.
  5. לוחצים על הבא: הגדרה.
  6. בדף הגדרה, מזינים את שם המוצר.
  7. לוחצים על בחירת סוג מכשיר ובוחרים את סוג המכשיר מהתפריט הנפתח (במקרה הזה, Light).
  8. בקטע Vendor ID (מזהה ספק, VID), בוחרים באפשרות Test VID ואז בוחרים באפשרות 0xFFF1 מהתפריט הנפתח Test VID. בשדה Product ID (מזהה מוצר, PID), מזינים 0x8000 ולוחצים על Save & continue (שמירה והמשך), ואז לוחצים על Save (שמירה) בדף הבא. משתמשים בערכי ה-VID/PID המדויקים האלה, כי השלבים הבאים ב-codelab תלויים בהם.
    הגדרת פרויקט
  9. עכשיו האינטגרציה תופיע בקטע Matter integrations.
  10. מפעילים מחדש את המרכז כדי לוודא שהוא מקבל את ההגדרה העדכנית ביותר של פרויקט השילוב של Matter. אם תצטרכו לשנות את ה-VID או ה-PID בהמשך, תצטרכו גם להפעיל מחדש את המחשב אחרי שתשמרו את הפרויקט כדי שהשינוי ייכנס לתוקף. הוראות מפורטות להפעלה מחדש מופיעות במאמר הפעלה מחדש של מכשירי Google Nest או Google Wifi.

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

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

בדוגמה הזו מוצג מכשיר פשוט שמופיע ב-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 של 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 שהוקצה לכם על ידי Alliance או ל-VID לבדיקה.
    8. מגדירים את Product ID למזהה התהליך שהגדרתם בשילוב Matter ב-Google Home Developer Console.
    9. לוחצים על S כדי לשמור.
    10. מקישים על Return כדי לאשר את נתיב ברירת המחדל שבו התצורה תישמר.
    11. מקישים על Return כדי לסגור את תיבת הדו-שיח לאישור השמירה.
    12. מקישים על Q כדי לצאת מכלי ההגדרה.

הפעלת ה-build

מפעילים את סקריפט הבנייה:

idf.py 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 וגם כנתיב לביצוע מקומי של כוונות לבית חכם.

ברשימה הזו אפשר לראות אילו רכזות תומכות בתקן 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 כנורת LED, אפשר לנסות לשלוט במכשיר באמצעות Google Assistant, אפליקציית Google Home או סימולטור Google Assistant בתוסף Google Home ל-VS Code.

Google Assistant

אפשר להשתמש ב-Google Assistant בטלפון או במרכז הבקרה כדי לשנות את מצב המכשיר באמצעות פקודות קוליות, למשל "Ok Google, toggle 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 זמין במקורות המידע הבאים: