יצירת מכשיר בתקן 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 (המסגרת לפיתוח IoT של Espressif או 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 resources (משאבים של Matter), שבו תוכלו לעיין במסמכי פיתוח של Matter ולקרוא על כמה כלים.
  4. כשמוכנים להמשיך, לוחצים על הבא: פיתוח, ומוצג הדף רשימת המשימות בנושא.
  5. לוחצים על הבא: הגדרה.
  6. בדף הגדרה, מזינים את שם המוצר.
  7. לוחצים על בחירת סוג מכשיר ובוחרים את סוג המכשיר מהתפריט הנפתח (במקרה הזה, Light).
  8. בקטע Vendor ID (מזהה ספק) בוחרים באפשרות Test VID (מזהה ספק לבדיקה) ואז בוחרים באפשרות 0xFFF1 מהתפריט הנפתח Test VID (מזהה ספק לבדיקה). בשדה Product ID (מזהה מוצר, PID), מזינים 0x8000 ולוחצים על Save & continue (שמירה והמשך), ואז לוחצים על Save (שמירה) בדף הבא. משתמשים בערכי ה-VID/PID המדויקים האלה, כי השלבים הבאים ב-codelab תלויים בהם.
    הגדרת פרויקט
  9. עכשיו האינטגרציה תופיע בקטע Matter integrations (אינטגרציות של Matter).
  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

אפשר להקיש על התוויות On (פועל) ו-Off (כבוי) לצד סמל הנורה שמופיע באפליקציית Google Home.

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

סימולטור Google Assistant

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

8. מעולה!

יצרתם והפעלתם בהצלחה את מכשיר Matter הראשון שלכם. מדהים!

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

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

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