1. مقدمة
إن Matter هو بروتوكول اتصال يقدم فرصًا مثيرة لتطوير الأجهزة الذكية. في هذا الدرس التطبيقي حول الترميز، ستتمكّن من إنشاء أول جهاز متوافق مع معيار Matter. للحصول على معلومات حول Matter، يُرجى الانتقال إلى Google Home Developer Center: Matter أو موقع Connectivity Standards Alliance الإلكتروني.
ما ستتعرَّف عليه
- كيفية دمج جهاز مادي مع معيار Matter
- كيفية تشغيل جهاز Matter والتحكّم فيه باستخدام Google Home
المتطلبات
- الموزع، وهو أي جهاز Google Nest متوافق مع معيار Matter، مثل Nest Hub (الجيل الثاني)
- لوحة تقييم المسألة القانونية إما من خلال Espressif Systems ESP32-DevkitC أو ESP32 M5STACK
- جهاز كمبيوتر يعمل بنظام التشغيل Linux.
- معرفة أساسية بنظام التشغيل Linux.
2. إعداد البيئة
تحديد الجهاز التسلسلي
تتمثل الخطوة الأولى لإعداد بيئة التطوير في تحديد المنفذ التسلسلي الذي يتصل به جهازك. ستتيح لك هذه المعلومات برمجة لوحة المطوِّرين والتفاعل معها.
- وصِّل لوحة مطوِّري البرامج بالكمبيوتر باستخدام كابل USB.
- ابحث في نظام ملفات
/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 IoT) أو "ESP-IDF").
- أنشئ دليلاً يحتوي على ESP-IDF:
$ mkdir ~/esp-idf_tools
- استنسِخ ESP-IDF من GitHub في هذا الدليل:
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- أكمل تثبيت سلسلة الأدوات:
$ cd ./esp-idf $ ./install.sh $ cd ~/
إعداد حزمة تطوير البرامج (SDK) لمعيار Matter
- استنساخ مستودع Matter المفتوح المصدر:
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- استرجاع الوحدات الفرعية للمستودع:
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- بدء تشغيل بيئة تطوير Matter:
$ source ./scripts/bootstrap.sh
3- وحدة تحكّم المطوّرين في Google Home
Google Home Developer Console هو تطبيق الويب الذي يمكنك من خلاله إدارة عمليات دمج Matter مع Google Home.
أي جهاز Matter حاصل على شهادة معيار Connectivity Standards Alliance (Alliance) Matter يعمل ضمن منظومة Google Home المتكاملة. يمكن تشغيل الأجهزة التي لا تزال قيد التطوير ولم يتم اعتمادها في منظومة Google Home المتكاملة في ظل ظروف معيّنة. لمزيد من المعلومات، يمكنك مراجعة قيود الإقران.
إنشاء مشروع مطوِّر
انتقِل أولاً إلى "وحدة تحكّم المطوّرين في Google Home":
- انقر على إنشاء مشروع.
- أدخِل اسم مشروع فريدًا ثم انقر على إنشاء مشروع.
- انقر على + إضافة دمج، التي تنقلك إلى شاشة موارد المسألة القانونية، حيث يمكنك الاطّلاع على مستندات تطوير المسألة القانونية وقراءة بعض الأدوات.
- عندما تكون مستعدًا للمتابعة، انقر على التالي: التطوير، التي تعرض صفحة قائمة التحقق من المسألة القانونية.
- انقر على التالي: الإعداد.
- في صفحة الإعداد، أدخِل اسم المنتج.
- انقر على اختيار نوع الجهاز واختَر نوع الجهاز من القائمة المنسدلة (
Light
في هذه الحالة). - في معرّف المورّد (VID)، اختَر اختبار VID، واختَر 0xFFF1 من القائمة المنسدلة Test VID (اختبار VID). في معرّف المنتج (PID)، أدخِل 0x8000 وانقر على حفظ & متابعة، ثم انقر على حفظ في الصفحة التالية. استخدِم قيم VID/PID الدقيقة هذه، وتعتمد خطوات التمرين التطبيقي اللاحقة على هذه القيم.
- ستظهر لك الآن عملية الدمج ضمن عمليات دمج المسألة القانونية.
- أعِد تشغيل المركز للتأكّد من أنّه يتلقّى أحدث إعدادات مشروع دمج Matter. وإذا اضطررت إلى تغيير VID أو PID لاحقًا، ستحتاج أيضًا إلى إعادة التشغيل بعد حفظ المشروع كي تدخل التغييرات حيز التنفيذ. راجِع إعادة تشغيل أجهزة Google Nest أو Google Wifi للحصول على تعليمات مفصّلة حول إعادة التشغيل.
4. بناء الجهاز
يتم وضع جميع الأمثلة في Matter في مجلد الأمثلة في مستودع جيت هب. تتوفّر نماذج متعددة، ولكن ينصبّ تركيزنا على هذا الدرس التطبيقي حول الترميز ينصبّ على تطبيق Lighting-app.
هذا المثال هو جهاز بسيط يظهر في Google Home على شكل ضوء تشغيل/إيقاف، ويستجيب لأوامر التشغيل والإيقاف. إنّ جعله يتحكّم في الضوء الكهربائي الفعلي هو خارج نطاق هذا التمرين التطبيقي حول الترميز.
ضبط الإصدار
- ضبط حزمة تطوير البرامج (SDK) لمعيار Matter وتفعيل بيئة إصدار Matter:
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- تفعيل Ccache، ما يؤدي إلى تسريع عملية التصميم:
$ export IDF_CCACHE_ENABLE=1
- انتقِل إلى دليل الإصدار ESP32
lighting-app
واضبط البنية الهدف:$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- تشغيل أداة الإعداد:
$ idf.py menuconfig
- اختيار "
Demo -> Device Type
" وضبطDevice Type
على "ESP32-DevKitC
" - اضغط على مفتاح السهم المتّجه لليسار للرجوع إلى قائمة المستوى الأعلى.
- اختَر
Component config --->
. - اختَر
CHIP Device Layer --->
. - اختَر
Device Identification Options --->
. - يجب ضبط
Vendor ID
على معرّف VID الذي خصّصه التحالف أو معرّف VID تجريبي. - يجب ضبط "
Product ID
" على PID الذي ضبطته عند دمج Matter في Google Home Console. - اضغط على S للحفظ.
- اضغط على Return لقبول المسار التلقائي الذي سيتم حفظ الإعدادات فيه.
- اضغط على Return لإغلاق مربّع حوار تأكيد الحفظ.
- اضغط على Q للخروج من أداة الإعداد.
- تشغيل أداة الإعداد:
تشغيل الإصدار
استدعاء النص البرمجي للإصدار:
idf.py build
من المفترض أن تكتمل عملية الإنشاء بدون أخطاء.
برمجة الجهاز
- وصِّل لوحة المطوِّرين بجهاز الكمبيوتر باستخدام كابل USB.
- احذف أي برامج ثابتة سابقة على الجهاز (إذا كان لديك لوحة مطوّر برامج واحدة فقط متصلة بجهاز الكمبيوتر، يمكنك إيقاف خيار
-p {device}
، إذ من المفترض أن يتم اكتشاف الجهاز تلقائيًا):idf.py -p {device} erase-flash
- انسخ تطبيقك الجديد إلى لجنة المطوّرين باستخدام:
idf.py -p {device} flash
يمكن العثور على مزيد من المعلومات حول خيارات الفلاش في صفحة مستندات esptool.py
حول Espressif.
5- الاتصال بالجهاز
- افتح نافذة المحطة الطرفية.
- دوِّن الدليل الحالي، ثم اتصِل بجهاز Matter الجديد باستخدام GNU
screen
:$ screen -L {device} 115200
- إذا ظهرت لك وحدة تحكُّم فارغة، اضغط على زر إعادة الضبط لبدء عملية تشغيل الجهاز.
6- تفعيل الجهاز
ملاحظة: لن تنجح هذه الخطوة إلا إذا سبق لك إعداد مشروعك في Google Home Console.
Nest Hub
يجب أن يتوفّر لديك موزّع لكي يتوافق جهازك مع نظام Matter. هذا الجهاز هو Google Nest، مثل Nest Hub (الجيل الثاني)، الذي يتوافق مع معيار Matter ويعمل كجهاز توجيه الحدود للأجهزة التي تستخدم شبكة Thread وكمسار تنفيذ محلي لتوجيه عناصر المنزل الذكية.
يُرجى الرجوع إلى هذه القائمة للاطّلاع على الموزعات المتوافقة مع معيار Matter.
قبل بدء عملية التفويض، تأكَّد مما يلي:
- تم إقران جهاز الموزع الخاص بك بحساب Google نفسه الذي استخدمته لتسجيل الدخول على Google Home Console.
- جهاز الموزع الخاص بك متصل بشبكة Wi-Fi نفسها المتصل بها الكمبيوتر الذي تستخدمه لتشغيل جهاز Virtual 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]]
تحديد المشاكل وحلّها
تعذُّر التشغيل
- تأكَّد من أنّك أنشأت مشروعًا باستخدام تركيبة VID/PID الصحيحة في Google Home Console.
- تأكَّد من إدخال VID وPID الصحيحَين في إعدادات الإصدار.
- تأكَّد من اختيار
Device Type
الصحيح في إعدادات الإصدار.
لمزيد من النصائح حول تحديد المشاكل وحلّها، يُرجى الاطّلاع على صفحة تحديد المشاكل وحلّها في المسائل القانونية.
7. التحكّم في الجهاز
بعد تشغيل جهازك المتوافق مع معيار Matter وظهوره في تطبيق Google Home على شكل مصباح كهربائي، يمكنك محاولة التحكّم في الجهاز باستخدام "مساعد Google" أو تطبيق Google Home أو محاكي "مساعد Google" ضمن إضافة Google Home لرمز VS.
مساعد Google
يمكنك استخدام "مساعد Google" على هاتفك أو موزّعك لتبديل حالة الجهاز من الطلبات الصوتية، مثل قول "Ok Google، أريد تبديل مصابيحي".
للاطّلاع على مزيد من الأمثلة على هذه الطلبات، يمكنك مراجعة قسم التحكّم في الأجهزة المنزلية الذكية باستخدام الطلبات الصوتية ضمن مقالة التحكّم في الأجهزة المنزلية الذكية التي تمت إضافتها إلى تطبيق Google Home.
تطبيق Google Home
يمكنك النقر على التصنيفَين تفعيل وإيقاف بجانب رمز المصباح الذي يظهر في تطبيق Google Home.
لمزيد من المعلومات، راجِع مقالة التحكّم في الأجهزة باستخدام تطبيق Google Home.
مُحاكي "مساعد Google"
في إضافة Google Home لرمز VS، باستخدام محاكي مساعد Google، يمكنك إصدار النطق على جهازك باستخدام واجهة تشبه الدردشة.
8. تهانينا!
لقد أنشأت جهاز Matter الأول بنجاح وتشغيله. رائع!
في هذا الدرس التطبيقي حول الترميز، تعلمتَ كيفية:
- تثبيت بيئة تطوير Matter من المتطلبات إلى حالة العمل
- إنشاء جهاز Matter وتشغيله
- يمكنك تشغيل جهازك والتحكّم فيه من Google Home.
لمزيد من المعلومات حول معيار Matter، اطّلِع على المراجع التالية:
- The Mater Primer من Google Home حيث تتعرّف على المفاهيم والمبادئ المهمّة لبروتوكول Matter.
- مواصفات Matter ومكتبة الأجهزة المتوافقة مع Matter ومكتبة مجموعة التطبيقات المتوافقة مع معيار Matter، والتي تم نشرها من قِبل Connected Standard Alliance
- مستودع Mater GitHub.