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

۱. مقدمه

Matter یک پروتکل اتصال است که فرصت‌های هیجان‌انگیزی را برای توسعه دستگاه‌های هوشمند به ارمغان می‌آورد. در این آزمایشگاه کد، شما اولین دستگاه Matter خود را خواهید ساخت. برای کسب اطلاعات بیشتر در مورد Matter، به مرکز توسعه‌دهندگان Google Home: Matter یا وب‌سایت Connectivity Standards Alliance مراجعه کنید.

آنچه یاد خواهید گرفت

  • چگونه یک دستگاه فیزیکی را با Matter ادغام کنیم.
  • نحوه راه‌اندازی و کنترل دستگاه Matter با Google Home.

آنچه نیاز دارید

۲. محیط خود را آماده کنید

شناسایی دستگاه سریال

اولین قدم در راه‌اندازی محیط توسعه، تعیین پورت سریالی است که دستگاه شما به آن متصل است. این اطلاعات به شما امکان می‌دهد تا برد توسعه‌دهنده خود را برنامه‌ریزی و با آن تعامل داشته باشید.

  1. برد توسعه‌دهنده را با استفاده از کابل USB به رایانه خود وصل کنید.
  2. برای یافتن دستگاه برد توسعه‌دهنده، به فایل سیستم /dev مراجعه کنید. می‌توانید با مشخص کردن پیشوند دستگاه برد توسعه‌دهنده خود، جستجوی خود را محدود کنید. ESP32 مربوط به Espressif از /dev/ttyUSBx استفاده می‌کند:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

هاب خود را تنظیم کنید

هاب خود را با استفاده از همان حساب گوگلی که قصد دارید برای این codelab استفاده کنید، راه‌اندازی کنید.

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

پیش‌نیازها

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

نصب وابستگی‌ها

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

$ 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 یا 'ESP-IDF') نیاز دارید.

  1. یک دایرکتوری ایجاد کنید که شامل ESP-IDF باشد:
    $ mkdir ~/esp-idf_tools
    
  2. فایل ESP-IDF را از گیت‌هاب به این دایرکتوری کپی کنید:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. نصب toolchain را کامل کنید:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

کیت توسعه نرم‌افزاری 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
    

۳. کنسول توسعه‌دهندگان گوگل هوم

کنسول توسعه‌دهندگان گوگل هوم، یک برنامه تحت وب است که در آن می‌توانید ادغام‌های Matter خود را با گوگل هوم مدیریت کنید.

هر دستگاه Matter که گواهینامه Connectivity Standards Alliance (Alliance) Matter را گذرانده باشد، در اکوسیستم Google Home کار می‌کند. دستگاه‌های در حال توسعه که گواهینامه دریافت نکرده‌اند، می‌توانند تحت شرایط خاصی در اکوسیستم Google Home راه‌اندازی شوند - برای اطلاعات بیشتر به محدودیت‌های جفت‌سازی مراجعه کنید.

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

با رفتن به کنسول توسعه‌دهندگان گوگل هوم شروع کنید:

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

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

تمام مثال‌های Matter در پوشه examples در مخزن Github قرار دارند. چندین نمونه موجود است، اما تمرکز ما در این codelab روی lighting-app است.

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

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

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

۵. به دستگاه وصل شوید

  1. یک پنجره ترمینال باز کنید.
  2. توجه داشته باشید که در کدام دایرکتوری هستید، سپس با استفاده از GNU screen به دستگاه Matter جدید خود متصل شوید:
    $ screen -L {device} 115200
    
  3. اگر کنسول خالی دیدید، دکمه RESET را فشار دهید تا فرآیند بوت دستگاه شروع شود.

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

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

هاب نست

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

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

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

  • هاب شما با همان حساب گوگلی که برای ورود به کنسول گوگل هوم استفاده کرده‌اید، جفت شده است.
  • هاب شما به همان شبکه وای‌فای متصل است که رایانه‌ای که برای اجرای دستگاه Virtual 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 مراجعه کنید.

۷. دستگاه را کنترل کنید

زمانی که دستگاه سازگار با Matter شما با موفقیت راه‌اندازی شد و در برنامه Google Home به عنوان یک لامپ ظاهر شد، می‌توانید با استفاده از دستیار گوگل، برنامه Google Home یا شبیه‌ساز دستیار گوگل در افزونه Google Home برای VS Code، دستگاه را کنترل کنید.

دستیار گوگل

از دستیار گوگل روی گوشی یا هاب خود برای تغییر وضعیت دستگاه از طریق دستورات صوتی استفاده کنید، مثلاً بگویید «هی گوگل، چراغ‌های من را روشن کن».

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

برنامه گوگل هوم

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

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

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

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

۸. تبریک می‌گویم!

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

در این آزمایشگاه کد یاد گرفتید که چگونه:

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

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