تصحيح أخطاء المنزل المحلي

1. قبل البدء

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

تعمل حزمة تطوير البرامج (SDK) المحلية للمنزل على تحسين عملية الدمج بين "مساعد Google" والمنزل الذكي من خلال إضافة مسار غير مستند إلى السحابة لتوجيه الطلبات المتعلقة بالمنزل الذكي مباشرةً إلى جهاز Google Home، ما يعزّز الموثوقية ويقلل من وقت الاستجابة في معالجة أوامر المستخدمين. يتيح لك هذا الإطار كتابة ونشر تطبيق معالجة طلبات محلي بلغة TypeScript أو JavaScript يحدِّد الأجهزة وينفِّذ الأوامر على أي مكبّر صوت ذكي من Google Home أو شاشة ذكية من Google Nest. يتواصل تطبيقك بعد ذلك مباشرةً مع الأجهزة الذكية الحالية للمستخدمين عبر الشبكة المحلية باستخدام البروتوكولات العادية الحالية لتنفيذ الأوامر.

72ffb320986092c.png

يُعدّ تصحيح أخطاء عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية خطوة حاسمة لبناء عمليات الدمج بجودة الإنتاج، إلا أنّها عملية صعبة وتستغرق وقتًا طويلاً بدون أدوات اختبار وتحديد المشاكل وحلّها مفيدة وسهلة الاستخدام. لتسهيل تصحيح أخطاء عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية، تتوفّر مقاييس وسجلّات ومجموعة اختبارات المنزل الذكي في Google Cloud Platform لمساعدتك في تحديد مشاكل عمليات الدمج وحلّها.

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

ما ستُنشئه

في هذا الدليل التعليمي حول رموز البرامج، ستُنشئ عملية تنفيذ غير مستندة إلى السحابة الإلكترونية عمليات الدمج من السحابة إلى السحابة الإلكترونية وتربطها بخدمة "مساعد Google "، ثم تصحح أخطاء تطبيق Home غير المستنِد إلى السحابة الإلكترونية من خلال مجموعة اختبارات لقياسات وتسجيلات المنزل الذكي وGoogle Cloud Platform‏ (GCP).

المُعطيات

  • كيفية استخدام مقاييس "سحابة Google‏ (GCP)" وميزة "التسجّل" لتحديد مشاكل مرحلة الإنتاج وحلّها
  • كيفية استخدام مجموعة الاختبار لتحديد المشاكل المتعلقة بالوظائف وواجهة برمجة التطبيقات
  • كيفية استخدام أدوات مطوّري برامج Chrome أثناء تطوير تطبيق Home على الجهاز

المتطلبات

  • أحدث إصدار من Google Chrome
  • جهاز iOS أو Android مزوّد بتطبيق Google Home
  • مكبّر صوت ذكي من Google Home أو شاشة ذكية من Google Nest
  • الإصدار 10.16 من Node.js أو إصدار أحدث
  • حساب Google
  • حساب فوترة على Google Cloud

2. تشغيل تطبيق الغسالة

الحصول على رمز المصدر

انقر على الرابط التالي لتنزيل نموذج هذا الدليل التعليمي على جهاز التطوير:

...أو يمكنك استنساخ مستودع GitHub من سطر الأوامر:

$ git clone https://github.com/google-home/smarthome-debug-local.git

لمحة عن المشروع

يحتوي التطبيق المبتدئ على أدلة فرعية ودوالّ سحابة مشابهة لتلك الواردة في تفعيل التسليم المحلي عمليات الدمج من السحابة إلى السحابة. ولكن بدلاً من app-start، لدينا app-faulty هنا. سنبدأ بتطبيق منزلي محلي يعمل ولكن ليس بشكل جيد.

الربط بمنصّة Firebase

سنستخدم المشروع نفسه الذي أنشأته في الدرس التطبيقي حول الترميز تفعيل التسليم المحلي عمليات الدمج من السحابة إلى السحابة، ولكننا سننشر الملفات التي تم تنزيلها في هذا الدرس التطبيقي.

انتقِل إلى دليل app-faulty، ثمّ أعدّ Firebase CLI باستخدام مشروع الدمج الذي أنشأته في تفعيل التسليم المحلي عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية:

$ cd app-faulty
$ firebase use <project-id>

النشر على Firebase

انتقِل إلى المجلد app-faulty/functions وثبِّت جميع التبعيات اللازمة باستخدام npm:

$ cd functions
$ npm install

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

found 5 high severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

انتقِل إلى الدليل app-faulty/local/ ونفِّذ الأوامر التالية لتنزيل مترجم TypeScript وتجميع التطبيق:

$ cd ../local
$ npm install
$ npm run build

يؤدي ذلك إلى تجميع مصدر index.ts (TypeScript) ووضع المحتوى التالي في الدليل app-faulty/public/local-home/:

  • bundle.js: ناتج JavaScript المجمَّع الذي يحتوي على التطبيق المحلي والملفات المضمّنة
  • index.html: صفحة الاستضافة المحلية المستخدَمة لعرض التطبيق من أجل الاختبار على الجهاز

بعد تثبيت التبعيات وضبط مشروعك، أصبحت جاهزًا لتشغيل التطبيق للمرّة الأولى.

$ firebase deploy

في ما يلي نتائج وحدة التحكّم التي من المفترض أن تظهر لك:

...

✔ Deploy complete!

Project Console: https://console.firebase.google.com/project/<project-id>/overview
Hosting URL: https://<projectcd -id>.web.app

ينشر هذا الأمر تطبيق ويب، بالإضافة إلى العديد من وظائف السحابة الإلكترونية لبرنامج Firebase.

تعديل HomeGraph

افتح عنوان URL للاستضافة في المتصفّح (https://<project-id>.web.app) لعرض تطبيق الويب. في واجهة مستخدم الويب، انقر على الزر تحديث ae8d3b25777a5e30.png لتعديل HomeGraph من خلال طلب المزامنة باستخدام أحدث البيانات الوصفية للجهاز من تطبيق الغسالة الذي يتضمّن عيوبًا:

fa3c47f293cfe0b7.png

يُرجى فتح تطبيق Google Home والتأكّد من ظهور جهاز الغسالة باسم جديد "غسالة متعطّلة". تذكَّر تخصيص الجهاز لغرفة يتوفّر فيها جهاز Nest.

2a082ee11d47ad1a.png

3- تشغيل الغسالة الذكية

إذا كنت قد نفّذت تفعيل التسليم المحلي عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية، من المفترض أن تكون قد بدأت تشغيل الغسالة الذكية الافتراضية. إذا توقّف، تذكَّر إعادة تشغيل الجهاز الظاهري.

تشغيل الجهاز

انتقِل إلى الدليل virtual-device/ وشغِّل النص البرمجي للجهاز، مع تمرير مَعلمات الضبط كوسيطات:

$ cd ../../virtual-device
$ npm install
$ npm start -- \
  --deviceId=deviceid123 --projectId=<project-id> \
  --discoveryPortOut=3311 --discoveryPacket=HelloLocalHomeSDK

تأكَّد من تشغيل نص الجهاز البرمجي باستخدام المَعلمات المتوقّعة:

(...): UDP Server listening on 3311
(...): Device listening on port 3388
(...): Report State successful

4. اختبار تطبيق Home على الجهاز

يمكنك إرسال طلبات إلى جهازك من خلال طلبات صوتية إلى جهاز Google Home، مثل:

"Ok Google، أريد تشغيل غسّالتي".

"Ok Google، أريد تشغيل غسّالتي".

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

"Ok Google، أريد إيقاف الغسالة".

سيردّ "مساعد Google" بعبارة "عذرًا، يبدو أنّ الغسالة التي تتضمّن عيوبًا غير متاحة الآن" عند محاولة التحكّم في الغسالة بعد "فرض الاتصال بالشبكة المحلية".

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

لمعرفة المشكلة، لنستخدِم الأدوات المتاحة لدينا: مقاييس وتسجيل Google Cloud Platform (GCP) و"أدوات مطوّري برامج Chrome".

5- تصحيح أخطاء تطبيق Home على الجهاز

في القسم التالي، ستستخدم الأدوات التي تقدّمها Google لمعرفة سبب عدم إمكانية الوصول إلى الجهاز من خلال المسار المحلي. يمكنك استخدام أدوات مطوّري برامج Google Chrome للاتصال بجهاز Google Home وعرض سجلات وحدة التحكّم وتصحيح أخطاء تطبيق Local Home. يمكنك أيضًا إرسال سجلات مخصّصة إلى سجلّات السحابة الإلكترونية حتى تتمكّن من معرفة أهم الأخطاء التي يواجهها المستخدمون في تطبيق Local Home.

ربط أدوات مطوّري برامج Chrome

لربط أداة تصحيح الأخطاء بتطبيقك المخصّص للتنفيذ على الجهاز، اتّبِع الخطوات التالية:

  1. تأكَّد من ربط جهاز Google Home بمستخدم لديه إذن بالوصول إلى مشروع Developer Console.
  2. يُرجى إعادة تشغيل جهاز Google Home، ما يتيح له الحصول على عنوان URL لملف HTML بالإضافة إلى إعدادات الفحص التي وضعتها في Developer Console.
  3. افتح Chrome على جهاز التطوير.
  4. افتح علامة تبويب جديدة في Chrome وأدخِل chrome://inspect في حقل العنوان لتشغيل أداة الفحص.

من المفترض أن تظهر لك قائمة بالأجهزة في الصفحة، ويجب أن يظهر عنوان URL لتطبيقك ضمن اسم جهاز Google Home.

567f97789a7d8846.png

افتح أداة الفحص.

انقر على فحص ضمن عنوان URL لتطبيقك لبدء تشغيل "أدوات مطوّري برامج Chrome". اختَر علامة التبويب وحدة التحكّم وتأكَّد من أنّه يمكنك الاطّلاع على محتوى طلب IDENTIFY الذي يطبعه تطبيق TypeScript.

774c460c59f9f84a.png

تعني هذه النتيجة أنّه تم تشغيل معالِج IDENTIFY بنجاح، ولكنّ verificationId المعروض في IdentifyResponse لا يتطابق مع أيّ من الأجهزة في HomeGraph. لنضيف بعض السجلات المخصّصة لمعرفة السبب.

إضافة سجلّات مخصّصة

على الرغم من ظهور خطأ DEVICE_VERIFICATION_FAILED مطبوع من خلال حزمة Local Home SDK، لا يساعد ذلك كثيرًا في العثور على السبب الجذري. لنضيف بعض السجلات المخصّصة للتأكّد من أنّنا نقرأ بيانات الفحص ونعالجها بشكل صحيح، ويُرجى العلم أنّه في حال رفض الوعد بسبب خطأ، يتم إرسال رسالة الخطأ إلى سجلّات Cloud أيضًا.

local/index.ts

identifyHandler(request: IntentFlow.IdentifyRequest):
    Promise<IntentFlow.IdentifyResponse> {
  console.log("IDENTIFY intent: " + JSON.stringify(request, null, 2));

  const scanData = request.inputs[0].payload.device.udpScanData;
  if (!scanData) {
    const err = new IntentFlow.HandlerError(request.requestId,
        'invalid_request', 'Invalid scan data');
    return Promise.reject(err);
  }

  // In this codelab, the scan data contains only local device id.
  // Is there something wrong here?
  const localDeviceId = Buffer.from(scanData.data);
  console.log(`IDENTIFY handler: received local device id
      ${localDeviceId}`);

  // Add custom logs
  if (!localDeviceId.toString().match(/^deviceid[0-9]{3}$/gi)) {
    const err = new IntentFlow.HandlerError(request.requestId,
        'invalid_device', 'Invalid device id from scan data ' +
        localDeviceId);
    return Promise.reject(err);
  }

  const response: IntentFlow.IdentifyResponse = {
    intent: Intents.IDENTIFY,
    requestId: request.requestId,
    payload: {
      device: {
        id: 'washer',
        verificationId: localDeviceId.toString(),
      }
    }
  };
  console.log("IDENTIFY response: " + JSON.stringify(response, null, 2));

  return Promise.resolve(response);
}

يمكنك أيضًا تغيير إصدار تطبيق Home على الجهاز، حتى نتمكّن من تحديد ما إذا كنا نستخدم الإصدار الصحيح.

local/index.ts

const localHomeSdk = new App('1.0.1');

بعد إضافة السجلات المخصّصة، عليك تجميع التطبيق مرة أخرى وإعادة نشره على Firebase.

$ cd ../app-faulty/local
$ npm run build
$ firebase deploy --only hosting

الآن، عليك إعادة تشغيل جهاز Google Home لكي يتمكّن من تحميل تطبيق Home المحدّث على الجهاز. يمكنك معرفة ما إذا كان جهاز Google Home يستخدم الإصدار المتوقّع من خلال الاطّلاع على سجلّات وحدة التحكّم في "أدوات مطوّري برامج Chrome".

ecc56508ebcf9ab.png

الوصول إلى "تسجيلات السحابة الإلكترونية"

لنلقِ نظرة على كيفية استخدام تسجيلات Cloud للعثور على الأخطاء. للوصول إلى "تسجيلات Cloud" لمشروعك:

  1. في وحدة تحكّم Cloud Platform، انتقِل إلى صفحة المشاريع.
  2. اختَر مشروع المنزل الذكي.
  3. ضمن العمليات، اختَر التسجّل > مستكشف السجلات.

يتمّ إدارة الوصول إلى بيانات التسجيل من خلال إدارة الهوية والوصول (IAM) لمستخدمي مشروع عمليات الدمج. لمزيد من التفاصيل حول الأدوار والأذونات لتسجيل البيانات، يُرجى الاطّلاع على التحكّم في الوصول في "تسجيلات السحابة الإلكترونية".

استخدام الفلاتر المتقدّمة

نعلم أنّه تحدث أخطاء في طلب البحث IDENTIFY، لأنّ المسار المحلي لا يعمل بسبب تعذُّر تحديد الجهاز المحلي. نريد معرفة المشكلة تحديدًا، لذا لنفلتر الأخطاء التي تحدث في معالِج IDENTIFY أولاً.

انقر على زر التبديل عرض الطلب، ومن المفترض أن يتحول إلى مربّع أداة إنشاء طلبات البحث. أدخِل jsonPayload.intent="IDENTIFY" في مربّع أداة إنشاء طلبات البحث وانقر على الزر تنفيذ طلب البحث.

4c0b9d2828ee2447.png

ونتيجةً لذلك، ستحصل على جميع سجلات الأخطاء التي يتم طرحها في معالِج IDENTIFY. بعد ذلك، وسِّع الخطأ الأخير. ستجد errorCode وdebugString اللذَين تم ضبطهما للتو عند رفض الوعد في معالِج IDENTIFY.

71f2f156c6887496.png

من debugString، يمكننا معرفة أنّ معرّف الجهاز على الجهاز ليس بالتنسيق المتوقّع. يتوقّع تطبيق Local Home الحصول على معرّف الجهاز المحلي كسلسلة تبدأ بالرقم deviceid متبوعًا بثلاثة أرقام، ولكن معرّف الجهاز المحلي هنا هو سلسلة سداسية عشرية.

إصلاح الخطأ

بالرجوع إلى رمز المصدر الذي نفكّ فيه رقم تعريف الجهاز المحلي من بيانات المسح الضوئي، لاحظنا أنّنا لم نقدّم ترميزًا عند تحويل السلسلة إلى وحدات بايت. يتم استلام بيانات المسح الضوئي كسلسلة سداسية عشرية، لذا يجب ضبط hex على أنّه ترميز الأحرف عند الاتصال بـ Buffer.from().

local/index.ts

identifyHandler(request: IntentFlow.IdentifyRequest):
    Promise<IntentFlow.IdentifyResponse> {
  console.log("IDENTIFY intent: " + JSON.stringify(request, null, 2));

  const scanData = request.inputs[0].payload.device.udpScanData;
  if (!scanData) {
    const err = new IntentFlow.HandlerError(request.requestId,
        'invalid_request', 'Invalid scan data');
    return Promise.reject(err);
  }

  // In this codelab, the scan data contains only local device id.
  const localDeviceId = Buffer.from(scanData.data, 'hex');
  console.log(`IDENTIFY handler: received local device id
      ${localDeviceId}`);

  if (!localDeviceId.toString().match(/^deviceid[0-9]{3}$/gi)) {
    const err = new IntentFlow.HandlerError(request.requestId,
      'invalid_device', 'Invalid device id from scan data ' +
      localDeviceId);
    return Promise.reject(err);
  }

  const response: IntentFlow.IdentifyResponse = {
    intent: Intents.IDENTIFY,
    requestId: request.requestId,
    payload: {
      device: {
        id: 'washer',
        verificationId: localDeviceId.toString(),
      }
    }
  };
  console.log("IDENTIFY response: " + JSON.stringify(response, null, 2));

  return Promise.resolve(response);
}

يمكنك أيضًا تغيير إصدار تطبيق Home على الجهاز، حتى نتمكّن من تحديد ما إذا كنا نستخدم الإصدار الصحيح.

local/index.ts

const localHomeSdk = new App('1.0.2');

بعد إصلاح الخطأ، يمكنك تجميع التطبيق وإعادة نشره على Firebase. في app-faulty/local، نفِّذ ما يلي:

$ npm run build
$ firebase deploy --only hosting

اختبار الحلّ

بعد النشر، أعِد تشغيل جهاز Google Home لكي يتمكّن من تحميل تطبيق Home المحلي المُعدَّل. تأكَّد من أنّ إصدار تطبيق Home المحلي هو 1.0.2، ومن المفترض ألا تظهر لك أي أخطاء هذه المرة في وحدة تحكّم أدوات مطوّري برامج Chrome.

c8456f7b5f77f894.png

يمكنك الآن محاولة إرسال الأوامر إلى جهازك مرة أخرى.

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

"Ok Google، أريد إيقاف الغسالة".

"Ok Google، أريد تشغيل غسّالتي".

...

"Ok Google، فرض الإعداد التلقائي".

6- تشغيل مجموعة اختبارات للمنزل الذكي

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

تشغيل مجموعة الاختبار للمنزل الذكي

اتّبِع التعليمات التالية لاختبار عملية الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية باستخدام Test Suite:

  1. في متصفّح الويب، افتح مجموعة اختبارات الأجهزة المنزلية الذكية.
  2. سجِّل الدخول إلى Google باستخدام الزر في أعلى يسار الصفحة. يتيح ذلك لمجموعة الاختبار إرسال الطلبات مباشرةً إلى "مساعد Google".
  3. في حقل رقم تعريف المشروع، أدخِل رقم تعريف عملية الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية. بعد ذلك، انقر على التالي للمتابعة.
  4. في خطوة اختبار الإعدادات، من المفترض أن يظهر لك جهاز الغسيل الذي يتضمّن عيوبًا في قسم الأجهزة والبيانات.
  5. أوقِف خيار مزامنة طلبات الاختبار لأنّ تطبيق غسّالة الملابس التجريبي لا يتضمّن واجهة مستخدم لإضافة غسّالة الملابس أو إزالتها أو تغيير اسمها. في نظام التشغيل، عليك بدء طلب المزامنة كلما أضاف المستخدم أجهزة أو أزالها أو أعاد تسميتها.
  6. اترك خيار حزمة تطوير البرامج (SDK) المحلية للمنزل مفعّلاً لأنّنا سنختبر كلاً من المسارات المحلية والسحابية.
  7. انقر على التالي: بيئة الاختبار لبدء إجراء الاختبار.

67433d9190fa770e.png

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

d1ebd5cfae2a2a47.png

تحليل رسالة الخطأ

اطّلِع عن كثب على رسائل الخطأ في حالات الاختبار التي تعذّر إكمالها. وتوضّح لك الحالة المتوقّعة لهذا الاختبار والحالة الفعلية. في هذه الحالة، بالنسبة إلى "إيقاف الغسالة مؤقتًا"، تكون الحالة المتوقّعة هي isPaused: true، ولكن في الحالة الفعلية، حصلنا على isPaused: false. وبالمثل، بالنسبة إلى "إيقاف الغسالة مؤقتًا"، تكون الحالة المتوقّعة هي isPaused: true، ولكن في الحالة الفعلية، حصلنا على isPaused: false.

6bfd3acef9c16b84.png

استنادًا إلى رسائل الخطأ، يبدو أنّنا نضبط حالة isPaused بشكل معاكس في المسار المحلي.

تحديد الخطأ وإصلاحه

لنعثر على الرمز المصدر الذي يُرسِل فيه تطبيق Home على الجهاز المحلي أمر التنفيذ إلى الجهاز. getDataCommand() هي الدالة التي يستدعيها executeHandler() لضبط payload في أمر التنفيذ المُرسَل إلى الجهاز.

local/index.ts

getDataForCommand(command: string, params: IWasherParams): unknown {
    switch (command) {
        case 'action.devices.commands.OnOff':
            return {
                on: params.on ? true : false
            };
        case 'action.devices.commands.StartStop':
            return {
                isRunning: params.start ? true : false
            };
        case 'action.devices.commands.PauseUnpause':
            return {
                // Is there something wrong here?
                isPaused: params.pause ? false : true
            };
        default:
            console.error('Unknown command', command);
            return {};
    }
}

نحن بصدد ضبط isPause في الحالة العكسية، ويجب ضبطه على true عندما يكون params.pause هو true وfalse في الحالات الأخرى. لنحاول حلّ هذه المشكلة.

local/index.ts

getDataForCommand(command: string, params: IWasherParams): unknown {
    switch (command) {
        case 'action.devices.commands.OnOff':
            return {
                on: params.on ? true : false
            };
        case 'action.devices.commands.StartStop':
            return {
                isRunning: params.start ? true : false
            };
        case 'action.devices.commands.PauseUnpause':
            return {
                isPaused: params.pause ? true : false
            };
        default:
            console.error('Unknown command', command);
            return {};
    }
}

يُرجى تغيير إصدار تطبيق Home على الجهاز، حتى نتمكّن من تحديد ما إذا كنا نستخدم الإصدار الصحيح.

local/index.ts

const localHomeSdk = new App('1.0.3');

تذكَّر تجميع التطبيق مرة أخرى وإعادة نشره على Firebase. في app-faulty/local، نفِّذ ما يلي:

$ npm run build
$ firebase deploy --only hosting

الآن، عليك إعادة تشغيل جهاز Google Home لكي يتمكّن من تحميل تطبيق Home المحلي المُحدَّث. تأكَّد من أنّ إصدار تطبيق Home المحلي هو 1.0.3.

اختبار الحلّ

الآن، أعِد تشغيل مجموعة اختبارات المنزل الذكي باستخدام الإعدادات نفسها، وستلاحظ أنّ جميع حالات الاختبار قد اجتازت الاختبار.

b7fc8c5d3c727d8d.png

7- تهانينا

764dbc83b95782a.png

تهانينا! لقد تعرّفت بنجاح على كيفية تحديد المشاكل وحلّها في تطبيق Home على الجهاز المحلي من خلال مجموعة الاختبار للأجهزة المنزلية الذكية وتسجيل Cloud.

مزيد من المعلومات

في ما يلي بعض الإجراءات الإضافية التي يمكنك تجربتها:

يمكنك أيضًا الاطّلاع على مزيد من المعلومات حول اختبار عملية الدمج وإرسالها للمراجعة، بما في ذلك عملية الاعتماد لنشر عملية الدمج للمستخدمين.