یک دستگاه Matter بسازید

1. مقدمه

Matter یک پروتکل اتصال است که فرصت های هیجان انگیزی را برای توسعه دستگاه های هوشمند به ارمغان می آورد. در این کد لبه، شما اولین دستگاه Matter خود را خواهید ساخت. برای آشنایی با Matter، از Google Home Developer Center: 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 که می‌خواهید برای این کد لبه استفاده کنید راه‌اندازی کنید.

محیط توسعه خود را تنظیم کنید

پیش نیازها

این دستورالعمل‌ها روی لینوکس دبیان آزمایش شده‌اند و باید روی اکثر توزیع‌های لینوکس مبتنی بر دبیان، از جمله اوبونتو، کار کنند. اگر با توزیع لینوکس متفاوتی کار می کنید، رویه تنظیم وابستگی ممکن است با آنچه در زیر می آید متفاوت باشد.

وابستگی ها را نصب کنید

برای نصب باینری های بسته لینوکس مورد نیاز که ممکن است قبلاً نصب نشده باشند، دستور زیر را اجرا کنید:

$ 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 را تنظیم کنید

برای ادامه این کد، به Espressif SDK (چارچوب توسعه Espressif IoT یا '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 Standards Connectivity Alliance (Alliance) را گذرانده باشد در اکوسیستم Google Home کار می کند. دستگاه‌های در حال توسعه که تأیید نشده‌اند را می‌توان تحت شرایط خاصی در اکوسیستم Google Home راه‌اندازی کرد - برای اطلاعات بیشتر به محدودیت‌های مرتبط‌سازی مراجعه کنید.

یک پروژه توسعه دهنده ایجاد کنید

با رفتن به Google Home Developer Console شروع کنید:

  1. روی ایجاد پروژه کلیک کنید.
  2. یک نام پروژه منحصر به فرد را وارد کنید و سپس روی ایجاد پروژه کلیک کنید.گفتگوی پروژه جدید ایجاد کنید
  3. روی + افزودن ادغام کلیک کنید، که شما را به صفحه منابع Matter می برد، جایی که می توانید اسناد توسعه Matter را مشاهده کنید و در مورد برخی از ابزارها مطالعه کنید.
  4. وقتی برای ادامه آماده شدید، روی Next: Develop کلیک کنید، که صفحه چک لیست Matter را نمایش می دهد.
  5. روی Next کلیک کنید: Setup
  6. در صفحه راه اندازی ، نام محصول خود را وارد کنید.
  7. روی انتخاب نوع دستگاه کلیک کنید و نوع دستگاه را از منوی کشویی انتخاب کنید (در این مورد، Light ).
  8. در شناسه فروشنده (VID)، Test VID را انتخاب کنید و 0xFFF1 را از منوی کشویی Test VID انتخاب کنید. در شناسه محصول (PID)، 0x8000 را وارد کنید و روی ذخیره و ادامه کلیک کنید و سپس در صفحه زیر روی ذخیره کلیک کنید. از این مقادیر دقیق VID/PID استفاده کنید، مراحل بعدی Codelab به آنها بستگی دارد.
    راه اندازی یک پروژه
  9. اکنون ادغام خود را در قسمت Matter integrations خواهید دید.
  10. هاب خود را مجددا راه اندازی کنید تا مطمئن شوید که آخرین پیکربندی پروژه یکپارچه سازی Matter را دریافت می کند. اگر بعداً مجبور به تغییر VID یا PID شدید، پس از ذخیره پروژه نیز باید راه‌اندازی مجدد کنید تا تغییر اعمال شود. برای دستورالعمل‌های گام به گام راه‌اندازی مجدد، به راه‌اندازی مجدد دستگاه‌های Google Nest یا Google Wifi مراجعه کنید.

4. دستگاه را بسازید

تمام مثال‌های موجود در Matter در پوشه نمونه‌های موجود در مخزن Github قرار می‌گیرند. چندین نمونه در دسترس است، اما تمرکز ما بر روی این کد لبه روی برنامه نورپردازی است.

این مثال یک دستگاه ساده است که در Google Home به عنوان چراغ روشن/خاموش ظاهر می شود و به دستورات روشن و خاموش پاسخ می دهد. کنترل کردن یک چراغ الکتریکی واقعی خارج از محدوده این آزمایشگاه کد است.

ساخت را پیکربندی کنید

  1. Matter SDK را پیکربندی کنید و محیط ساخت Matter را فعال کنید:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Ccache را فعال کنید، که روند ساخت را تسریع می کند:
    $ export IDF_CCACHE_ENABLE=1
    
  3. به فهرست ساخت 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 را روی PID که در ادغام Matter در Google Home Developer Console تنظیم کرده‌اید، تنظیم کنید.
    9. S را فشار دهید تا ذخیره شود.
    10. برای پذیرش مسیر پیش‌فرض که پیکربندی در آن ذخیره می‌شود، Return را فشار دهید.
    11. برای رد کردن گفتگوی تایید ذخیره ، Return را فشار دهید.
    12. برای خروج از ابزار پیکربندی، Q را فشار دهید.

بیلد را اجرا کنید

اسکریپت ساخت را فراخوانی کنید:

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. یادداشت کنید که در چه فهرستی هستید، سپس با استفاده از screen گنو به دستگاه Matter جدید خود متصل شوید:
    $ screen -L {device} 115200
    
  3. اگر کنسول خالی مشاهده کردید، دکمه RESET را فشار دهید تا فرآیند بوت دستگاه شروع شود.

6. دستگاه را راه اندازی کنید

توجه : این مرحله تنها در صورتی موفق خواهد شد که پروژه خود را قبلاً در کنسول برنامه‌نویس Google Home راه‌اندازی کرده باشید.

Nest Hub

برای راه اندازی دستگاه شما روی پارچه Matter به هاب نیاز است. این یک دستگاه Google Nest است، مانند Nest Hub (نسل دوم)، که از Matter پشتیبانی می‌کند و هم به‌عنوان یک مسیریاب مرزی برای دستگاه‌های دارای Thread و هم به‌عنوان مسیر تکمیل محلی برای مسیریابی اهداف خانه هوشمند عمل می‌کند.

به این لیست مراجعه کنید تا ببینید کدام هاب از Matter پشتیبانی می کند.

قبل از شروع فرآیند راه اندازی، بررسی کنید که:

  • هاب شما با همان حساب Google که برای ورود به سیستم در کنسول خانگی Google استفاده کرده بودید جفت شده است.
  • هاب شما در همان شبکه Wi-Fi با رایانه ای است که برای اجرای Virtual Matter Device خود استفاده می کنید.
  • هاب شما در همان ساختاری است که در برنامه Google Home خود استفاده می کنید. («خانه» در نمودار Google Home نشان دهنده ساختار شماست).

دستگاه را جفت کنید

دستورالعمل های جفت شدن ESP32 را برای جفت کردن دستگاه خود دنبال کنید.

توجه : اگر از M5STACK استفاده می کنید، توجه داشته باشید که صفحه نمایش آن پس از فلش شدن خالی می ماند، بنابراین باید کد QR را با استفاده از 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 در تلفن یا هاب خود برای تغییر وضعیت دستگاه از دستورات صوتی، مانند گفتن «Hey Google, toggle my lights» استفاده کنید.

برای نمونه‌های بیشتر دستورات، به بخش کنترل دستگاه‌های خانه هوشمند با فرمان‌های صوتی در کنترل دستگاه‌های خانه هوشمند افزوده شده به برنامه Google Home مراجعه کنید.

برنامه Google Home

می توانید روی برچسب های روشن و خاموش در کنار نماد لامپ نشان داده شده در برنامه Google Home ضربه بزنید.

برای اطلاعات بیشتر به کنترل دستگاه‌ها با برنامه Google Home مراجعه کنید.

شبیه ساز دستیار گوگل

در Google Home Extension for VS Code، با استفاده از Google Assistant Simulator ، می‌توانید با استفاده از یک رابط چت مانند، جملاتی را برای دستگاه خود صادر کنید.

8. تبریک می گویم!

شما با موفقیت اولین دستگاه Matter خود را ایجاد و راه اندازی کردید. عالی!

در این کد لبه یاد گرفتید که چگونه:

  • یک محیط توسعه Matter را از نیازمندی ها تا حالت کار نصب کنید.
  • یک دستگاه Matter بسازید و اجرا کنید.
  • دستگاه خود را از Google Home اداره و کنترل کنید.

برای کسب اطلاعات بیشتر در مورد ماده، این منابع را بررسی کنید:

  • The Matter Primer توسط Google Home، که در آن با مفاهیم و اصول مهم پروتکل Matter آشنا خواهید شد.
  • The Matter Specification، Matter Device Library و Matter Application Cluster Library، منتشر شده توسط Connected Standard Alliance .
  • مخزن Matter GitHub .