إنشاء جهاز متوافق مع معيار Matter

‫1. مقدمة

‫Matter هو بروتوكول اتصال يوفّر فرصًا رائعة لتطوير الأجهزة الذكية. في هذا الدرس التطبيقي حول الترميز، ستنشئ جهاز Matter الأول. لمزيد من المعلومات حول Matter، يُرجى الانتقال إلى مركز مطوّري Google Home: Matter أو موقع "تحالف معايير الاتصال" الإلكتروني.

أهداف الدورة التعليمية

  • كيفية دمج جهاز فعلي مع Matter
  • كيفية إعداد جهاز Matter والتحكّم فيه باستخدام Google Home

المتطلبات

‫2. إعداد البيئة

تحديد الجهاز التسلسلي

تتمثّل الخطوة الأولى في إعداد بيئة التطوير في تحديد المنفذ التسلسلي الذي تم توصيل جهازك به. ستتيح لك هذه المعلومات برمجة لوحة التطوير والتفاعل معها.

  1. وصِّل لوحة التطوير بالكمبيوتر باستخدام كابل USB.
  2. ابحث في نظام الملفات /dev للعثور على جهاز لوحة المطوّرين. يمكنك تضييق نطاق البحث عن طريق تحديد بادئة جهاز لوحة التطوير. يستخدم ESP32 من Espressif /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

إعداد مركز التحكّم

اضبط إعدادات مركزك باستخدام حساب Google نفسه الذي تنوي استخدامه في هذا الدرس العملي.

إعداد بيئة التطوير

المتطلبات الأساسية

تم اختبار هذه التعليمات على نظام التشغيل 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)

لإكمال هذا الدرس التطبيقي، ستحتاج إلى حزمة تطوير البرامج (SDK) من Espressif (إطار تطوير إنترنت الأشياء من 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 ~/
    

إعداد حزمة تطوير البرامج (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 Developer Console

Google Home Developer Console هو تطبيق الويب الذي يمكنك من خلاله إدارة عمليات دمج Matter مع Google Home.

يمكن استخدام أي جهاز Matter اجتاز شهادة Matter من مؤسسة Connectivity Standards Alliance (المعروفة باسم Alliance) في منظومة Google Home المتكاملة. يمكن إعداد الأجهزة التي لا تزال قيد التطوير ولم يتم اعتمادها في نظام Google Home المتكامل ضمن شروط معيّنة. يمكنك الاطّلاع على قيود الإقران لمزيد من المعلومات.

إنشاء مشروع مطوِّر

ابدأ بالانتقال إلى Google Home Developer Console:

  1. انقر على إنشاء مشروع.
  2. أدخِل اسمًا فريدًا للمشروع، ثم انقر على إنشاء مشروع. مربّع حوار "إنشاء مشروع جديد"
  3. انقر على + إضافة عملية دمج، وسيتم توجيهك إلى شاشة مراجع Matter، حيث يمكنك الاطّلاع على مستندات تطوير Matter وقراءة معلومات عن بعض الأدوات.
  4. عندما تكون مستعدًا للمتابعة، انقر على التالي: التطوير، ما يؤدي إلى عرض صفحة قائمة التحقّق من Matter.
  5. انقر على التالي: الإعداد.
  6. في صفحة الإعداد، أدخِل اسم المنتج.
  7. انقر على اختيار نوع الجهاز واختَر نوع الجهاز من القائمة المنسدلة (في هذه الحالة، Light).
  8. في "معرّف المورّد" (VID)، اختَر معرّف المورّد التجريبي، ثم اختَر 0xFFF1 من القائمة المنسدلة "معرّف المورّد التجريبي". في حقل "رقم تعريف المنتج" (PID)، أدخِل 0x8000 وانقر على حفظ ومتابعة، ثم انقر على حفظ في الصفحة التالية. استخدِم قيمتَي VID/PID هاتَين بالضبط، لأنّ خطوات الدرس العملي المبرمَج اللاحقة تعتمد عليهما.
    إعداد مشروع
  9. سيظهر لك الآن عملية الدمج ضمن عمليات دمج Matter.
  10. أعِد تشغيل المركز لضمان تلقّيه أحدث إعدادات مشروع دمج Matter. إذا كان عليك تغيير VID أو PID لاحقًا، عليك أيضًا إعادة التشغيل بعد حفظ المشروع لكي يصبح التغيير ساريًا. يمكنك الاطّلاع على إعادة تشغيل أجهزة Google Nest أو Google Wifi للحصول على تعليمات مفصّلة حول إعادة التشغيل.

4. إنشاء الجهاز

يتم وضع جميع الأمثلة في Matter في مجلد الأمثلة في مستودع Github. تتوفّر عدّة عيّنات، ولكنّنا سنركّز في هذا الدرس التطبيقي حول الترميز على تطبيق الإضاءة.

هذا المثال هو جهاز بسيط يظهر في Google Home على أنّه مصباح تشغيل/إيقاف، ويستجيب لأوامر التشغيل والإيقاف. لا يهدف هذا الدرس التطبيقي حول الترميز إلى التحكم في ضوء كهربائي حقيقي.

ضبط الإصدار

  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. انتقِل إلى دليل إنشاء 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. اضغط على رجوع لإغلاق مربّع حوار تأكيد الحفظ.
    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. دوِّن المجلد الذي تستخدمه، ثم وصِّل جهاز Matter الجديد باستخدام GNU screen:
    $ screen -L {device} 115200
    
  3. إذا ظهرت لك وحدة تحكّم فارغة، اضغط على زر إعادة الضبط لبدء عملية تشغيل الجهاز.

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، يُرجى العِلم أنّ شاشته ستظل فارغة بعد إجراء عملية التحديث، لذا عليك عرض رمز الاستجابة السريعة باستخدام عنوان URL الذي يظهر في وحدة التحكّم. يمكنك بدلاً من ذلك كتابة رمز الاقتران اليدوي.

مثال على ناتج وحدة التحكّم الذي يعرض عنوان URL لرمز الاستجابة السريعة:

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" أو تطبيق Google Home أو "محاكي مساعد Google" في إضافة Google Home لـ VS Code.

مساعد Google

استخدِم "مساعد Google" على هاتفك أو مركز التحكم لتغيير حالة الجهاز من خلال الطلبات الصوتية، مثل قول "Ok Google، أريد تغيير حالة الأضواء".

يمكنك الاطّلاع على قسم التحكّم في الأجهزة المنزلية الذكية باستخدام الطلبات الصوتية في مقالة التحكّم في الأجهزة المنزلية الذكية المُضافة إلى تطبيق Google Home للحصول على المزيد من الأمثلة على الطلبات.

تطبيق Google Home

يمكنك النقر على التصنيفين مفعّل وغير مفعّل بجانب رمز المصباح الظاهر في تطبيق Google Home.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التحكّم في الأجهزة باستخدام تطبيق Google Home.

Google Assistant Simulator

في إضافة Google Home لبرنامج VS Code، يمكنك استخدام محاكي "مساعد Google" لإرسال عبارات إلى جهازك باستخدام واجهة تشبه المحادثة.

8. تهانينا!

لقد أنشأت جهاز Matter الأول وأضفته بنجاح. رائع!

في هذا الدرس العملي، تعلّمت كيفية:

  • ثبِّت بيئة تطوير Matter من المتطلبات إلى حالة التشغيل.
  • إنشاء جهاز متوافق مع معيار Matter وتشغيله
  • إعداد جهازك والتحكّم فيه من Google Home

لمزيد من المعلومات حول Matter، يمكنك الاطّلاع على المراجع التالية: