1. قبل البدء
تتيح عمليات الدمج مع الأجهزة المنزلية الذكية لتطبيق "مساعد Google" التحكّم في الأجهزة المتّصلة في منازل المستخدمين. لإنشاء عملية دمج من السحابة إلى السحابة، عليك تقديم نقطة نهاية webhook في السحابة الإلكترونية قادرة على معالجة طلبات المنزل الذكي. على سبيل المثال، عندما يقول أحد المستخدمين "Ok Google، أريد تشغيل الأضواء"، يُرسِل "مساعد Google" الطلب إلى خدمة السحابة الإلكترونية لتعديل حالة الجهاز.
تعمل حزمة تطوير البرامج (SDK) المحلية للمنزل على تحسين عملية الدمج بين "مساعد Google" والمنزل الذكي من خلال إضافة مسار غير مستند إلى السحابة لتوجيه الطلبات المتعلقة بالمنزل الذكي مباشرةً إلى جهاز Google Home، ما يعزّز الموثوقية ويقلل من وقت الاستجابة في معالجة أوامر المستخدمين. يتيح لك هذا الإطار كتابة ونشر تطبيق معالجة طلبات محلي بلغة TypeScript أو JavaScript يحدِّد الأجهزة وينفِّذ الأوامر على أي مكبّر صوت ذكي من Google Home أو شاشة ذكية من Google Nest. يتواصل تطبيقك بعد ذلك مباشرةً مع الأجهزة الذكية الحالية للمستخدمين عبر الشبكة المحلية باستخدام البروتوكولات العادية الحالية لتنفيذ الأوامر.
يُعدّ تصحيح أخطاء عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية خطوة حاسمة لبناء عمليات الدمج بجودة الإنتاج، إلا أنّها عملية صعبة وتستغرق وقتًا طويلاً بدون أدوات اختبار وتحديد المشاكل وحلّها مفيدة وسهلة الاستخدام. لتسهيل تصحيح أخطاء عمليات الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية، تتوفّر مقاييس وسجلّات ومجموعة اختبارات المنزل الذكي في 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
) لعرض تطبيق الويب. في واجهة مستخدم الويب، انقر على الزر تحديث لتعديل HomeGraph من خلال طلب المزامنة باستخدام أحدث البيانات الوصفية للجهاز من تطبيق الغسالة الذي يتضمّن عيوبًا:
يُرجى فتح تطبيق Google Home والتأكّد من ظهور جهاز الغسالة باسم جديد "غسالة متعطّلة". تذكَّر تخصيص الجهاز لغرفة يتوفّر فيها جهاز Nest.
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
لربط أداة تصحيح الأخطاء بتطبيقك المخصّص للتنفيذ على الجهاز، اتّبِع الخطوات التالية:
- تأكَّد من ربط جهاز Google Home بمستخدم لديه إذن بالوصول إلى مشروع Developer Console.
- يُرجى إعادة تشغيل جهاز Google Home، ما يتيح له الحصول على عنوان URL لملف HTML بالإضافة إلى إعدادات الفحص التي وضعتها في Developer Console.
- افتح Chrome على جهاز التطوير.
- افتح علامة تبويب جديدة في Chrome وأدخِل
chrome://inspect
في حقل العنوان لتشغيل أداة الفحص.
من المفترض أن تظهر لك قائمة بالأجهزة في الصفحة، ويجب أن يظهر عنوان URL لتطبيقك ضمن اسم جهاز Google Home.
افتح أداة الفحص.
انقر على فحص ضمن عنوان URL لتطبيقك لبدء تشغيل "أدوات مطوّري برامج Chrome". اختَر علامة التبويب وحدة التحكّم وتأكَّد من أنّه يمكنك الاطّلاع على محتوى طلب IDENTIFY
الذي يطبعه تطبيق TypeScript.
تعني هذه النتيجة أنّه تم تشغيل معالِج 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".
الوصول إلى "تسجيلات السحابة الإلكترونية"
لنلقِ نظرة على كيفية استخدام تسجيلات Cloud للعثور على الأخطاء. للوصول إلى "تسجيلات Cloud" لمشروعك:
- في وحدة تحكّم Cloud Platform، انتقِل إلى صفحة المشاريع.
- اختَر مشروع المنزل الذكي.
- ضمن العمليات، اختَر التسجّل > مستكشف السجلات.
يتمّ إدارة الوصول إلى بيانات التسجيل من خلال إدارة الهوية والوصول (IAM) لمستخدمي مشروع عمليات الدمج. لمزيد من التفاصيل حول الأدوار والأذونات لتسجيل البيانات، يُرجى الاطّلاع على التحكّم في الوصول في "تسجيلات السحابة الإلكترونية".
استخدام الفلاتر المتقدّمة
نعلم أنّه تحدث أخطاء في طلب البحث IDENTIFY
، لأنّ المسار المحلي لا يعمل بسبب تعذُّر تحديد الجهاز المحلي. نريد معرفة المشكلة تحديدًا، لذا لنفلتر الأخطاء التي تحدث في معالِج IDENTIFY
أولاً.
انقر على زر التبديل عرض الطلب، ومن المفترض أن يتحول إلى مربّع أداة إنشاء طلبات البحث. أدخِل jsonPayload.intent="IDENTIFY"
في مربّع أداة إنشاء طلبات البحث وانقر على الزر تنفيذ طلب البحث.
ونتيجةً لذلك، ستحصل على جميع سجلات الأخطاء التي يتم طرحها في معالِج IDENTIFY
. بعد ذلك، وسِّع الخطأ الأخير. ستجد errorCode
وdebugString
اللذَين تم ضبطهما للتو عند رفض الوعد في معالِج IDENTIFY
.
من 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.
يمكنك الآن محاولة إرسال الأوامر إلى جهازك مرة أخرى.
"Ok Google، أريد استخدام البيانات المتوفّرة على الجهاز فقط".
"Ok Google، أريد إيقاف الغسالة".
"Ok Google، أريد تشغيل غسّالتي".
...
"Ok Google، فرض الإعداد التلقائي".
6- تشغيل مجموعة اختبارات للمنزل الذكي
بعد إثبات ملكية جهازك باستخدام عناصر التحكّم باللمس في تطبيق Google Home أو من خلال الأوامر الصوتية، يمكنك استخدام مجموعة الاختبار للمنزل الذكي المبرمَجة للتحقّق من حالات الاستخدام استنادًا إلى أنواع الأجهزة والسمات المرتبطة بعملية الدمج. تُجري "مجموعة الاختبار" سلسلة من الاختبارات لرصد المشاكل في عملية الدمج، وتعرض رسائل معلوماتية لحالات الاختبار التي تعذّر إكمالها لتسريع عملية تصحيح الأخطاء قبل الاطّلاع على سجلّات الأحداث.
تشغيل مجموعة الاختبار للمنزل الذكي
اتّبِع التعليمات التالية لاختبار عملية الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية باستخدام Test Suite:
- في متصفّح الويب، افتح مجموعة اختبارات الأجهزة المنزلية الذكية.
- سجِّل الدخول إلى Google باستخدام الزر في أعلى يسار الصفحة. يتيح ذلك لمجموعة الاختبار إرسال الطلبات مباشرةً إلى "مساعد Google".
- في حقل رقم تعريف المشروع، أدخِل رقم تعريف عملية الدمج من السحابة الإلكترونية إلى السحابة الإلكترونية. بعد ذلك، انقر على التالي للمتابعة.
- في خطوة اختبار الإعدادات، من المفترض أن يظهر لك جهاز الغسيل الذي يتضمّن عيوبًا في قسم الأجهزة والبيانات.
- أوقِف خيار مزامنة طلبات الاختبار لأنّ تطبيق غسّالة الملابس التجريبي لا يتضمّن واجهة مستخدم لإضافة غسّالة الملابس أو إزالتها أو تغيير اسمها. في نظام التشغيل، عليك بدء طلب المزامنة كلما أضاف المستخدم أجهزة أو أزالها أو أعاد تسميتها.
- اترك خيار حزمة تطوير البرامج (SDK) المحلية للمنزل مفعّلاً لأنّنا سنختبر كلاً من المسارات المحلية والسحابية.
- انقر على التالي: بيئة الاختبار لبدء إجراء الاختبار.
عند اكتمال الاختبارات، ستلاحظ أنّ اختبارات الإيقاف المؤقت/استئناف البث في المسار على الجهاز ستتعذّر إكمالها بينما تجتاز اختبارات الإيقاف المؤقت/استئناف البث في المسار على السحابة الإلكترونية.
تحليل رسالة الخطأ
اطّلِع عن كثب على رسائل الخطأ في حالات الاختبار التي تعذّر إكمالها. وتوضّح لك الحالة المتوقّعة لهذا الاختبار والحالة الفعلية. في هذه الحالة، بالنسبة إلى "إيقاف الغسالة مؤقتًا"، تكون الحالة المتوقّعة هي isPaused: true
، ولكن في الحالة الفعلية، حصلنا على isPaused: false
. وبالمثل، بالنسبة إلى "إيقاف الغسالة مؤقتًا"، تكون الحالة المتوقّعة هي isPaused: true
، ولكن في الحالة الفعلية، حصلنا على isPaused: false
.
استنادًا إلى رسائل الخطأ، يبدو أنّنا نضبط حالة 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.
اختبار الحلّ
الآن، أعِد تشغيل مجموعة اختبارات المنزل الذكي باستخدام الإعدادات نفسها، وستلاحظ أنّ جميع حالات الاختبار قد اجتازت الاختبار.
7- تهانينا
تهانينا! لقد تعرّفت بنجاح على كيفية تحديد المشاكل وحلّها في تطبيق Home على الجهاز المحلي من خلال مجموعة الاختبار للأجهزة المنزلية الذكية وتسجيل Cloud.
مزيد من المعلومات
في ما يلي بعض الإجراءات الإضافية التي يمكنك تجربتها:
- أضِف المزيد من السمات المتوافقة إلى جهازك واختبره باستخدام "مجموعة أدوات الاختبار".
- أضِف المزيد من السجلات المخصّصة في كلّ من معالِجات النية وعرضها في "سجلّات السحابة الإلكترونية".
- أنشئ لوحات بيانات، وإعداد التنبيهات، والوصول إلى بيانات المقاييس آليًا للحصول على مقاييس استخدام مفيدة عن عملية الدمج.
يمكنك أيضًا الاطّلاع على مزيد من المعلومات حول اختبار عملية الدمج وإرسالها للمراجعة، بما في ذلك عملية الاعتماد لنشر عملية الدمج للمستخدمين.