البرنامج التعليمي: استخدام جهاز محاكاة لاختبار الاتصال بمركز IoT الخاص بك
في هذا البرنامج التعليمي، يمكنك استخدام أدوات مدخل Microsoft Azure IoT Hub وأوامر Azure CLI لاختبار اتصال الجهاز. يستخدم هذا البرنامج التعليمي أيضاً جهاز محاكاة بسيط تقوم بتشغيله على جهاز سطح المكتب.
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
في هذا البرنامج التعليمي، تتعلم كيفية:
- التحقق من مصادقة الجهاز
- التحقق من اتصال الجهاز بالسحابة
- التحقق من اتصال السحابة بالجهاز
- التحقق من مزامنة الجهاز المزدوج
المتطلبات الأساسية
يستخدم هذا البرنامج التعليمي Azure CLI لإنشاء موارد سحابية. هناك طريقتان لتشغيل أوامر CLI:
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع تشغيل سريع لـ Azure Cloud Shell - Bash.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
- قم بتسجيل الدخول إلى CLI Azure باستخدام az login.
- عند مطالبتك، يوصى بتثبيت امتدادات Azure CLI عند الاستخدام الأول. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
- يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إشعار
تستخدم هذه المقالة أحدث إصدار من ملحق Azure IoT، ويطلق عليه
azure-iot
. يسمى الإصدار القديمazure-cli-iot-ext
. يجب أن يكون لديك إصدار واحد فقط مُثبت في كل مرة. يمكنك استخدام الأمرaz extension list
للتحقق من صحة الملحقات المثبتة حالياً.استخدم
az extension remove --name azure-cli-iot-ext
لإزالة الإصدار القديم من الملحق.استخدم
az extension add --name azure-iot
لإضافة الإصدار الجديد من الملحق.لمعرفة ما هي الملحقات التي قمت بتثبيتها، استخدم
az extension list
.يستخدم نموذج التطبيق الذي تقوم بتشغيله في هذا البرنامج التعليمي Node.js. أنت بحاجة إلى Node.js v10.x.x أو إصدار أحدث على جهاز التطوير الخاص بك.
يمكنك تنزيل Node.js لأنظمة أساسية متعددة من nodejs.org.
يمكن التحقق من الإصدار الحالي من Node.js على جهاز التطوير باستخدام الأمر التالي:
node --version
قم باستنساخ نموذج مشروع Node.js أو تنزيله من نماذج Azure IoT Node.js.
تأكد من أن المنفذ 8883 مفتوح في جدار الحماية. يستخدم نموذج الجهاز في هذا البرنامج التعليمي بروتوكول MQTT، الذي يتصل عبر المنفذ 8883. قد يُحظر هذا المنفذ في بعض بيئات الشبكات التعليمية، وشبكات الشركات. لمزيد من المعلومات وطرق التغلب على هذه المشكلة، راجع الاتصال بمركز IoT (MQTT).
إنشاء مركز IoT
في هذا المقطع، يمكنك استخدام Azure CLI لإنشاء مركز IoT ومجموعة موارد. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها. يعمل IoT Hub كمركز مركزي للرسائل للاتصال ثنائي الاتجاه بين تطبيق IoT والأجهزة.
إذا كان لديك بالفعل IoT Hub في اشتراكك في Azure، يمكنك تخطي هذا القسم.
لإنشاء مركز IoT ومجموعة موارد:
قم بتشغيل تطبيق CLI الخاص بك. لتشغيل أوامر CLI في بقية هذه المقالة، انسخ بناء جملة الأمر، والصقه في تطبيق CLI، وقم بتحرير قيم المتغيرات، واضغط
Enter
على .- إذا كنت تستخدم Cloud Shell، فحدد الزر Try It في أوامر CLI لتشغيل Cloud Shell في نافذة مستعرض منقسمة. أو يمكنك فتح Cloud Shell في علامة تبويب مستعرض منفصلة.
- إذا كنت تستخدم Azure CLI داخليًا، فابدأ تشغيل تطبيق وحدة تحكم CLI الخاص بك، ثم قم بتسجيل الدخول إلى Azure CLI.
قم بتشغيل «az extension add» لتثبيت أو ترقية ملحق azure-iot إلى الإصدار الحالي.
az extension add --upgrade --name azure-iot
في تطبيق CLI، قم بتشغيل الأمر az group create لإنشاء مجموعة موارد. يقوم الأمر التالي بإنشاء مجموعة موارد تسمى MyResourceGroup في موقعeastus.
إشعار
اختيارياً، يمكنك تعيين موقع مختلف. لمشاهدة المواقع المتوفرة، قم بتشغيل
az account list-locations
. يستخدم هذا التشغيل السريع eastus كما هو موضح في مثال الأمر.az group create --name MyResourceGroup --location eastus
قم بتشغيل الأمر «az iot hub create» لإنشاء مركز IoT. قد يستغرق إنشاء مركز IoT بضع دقائق.
YourIotHubName. استبدل هذا العنصر النائب والأقواس المحيطة في الأمر التالي، باستخدام الاسم الذي اخترته لمركز IoT. يجب أن يكون اسم مركز IoT فريدًا بشكل عمومي في Azure. استخدم اسم مركز IoT الخاص بك في بقية هذا التشغيل السريعة أينما رأيت العنصر النائب.
az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
التحقق من مصادقة الجهاز
تجب مصادقة الجهاز مع المركز قبل أن يتمكن من تبادل أي بيانات مع المركز. يمكنك استخدام أداة أجهزة IoT في قسم إدارة الأجهزة في المدخل لإدارة أجهزتك والتحقق من مفاتيح المصادقة التي تستخدمها. في هذا القسم من البرنامج التعليمي، يمكنك إضافة جهاز اختبار جديد، واسترداد مفتاحه، والتحقق من أن قدرة اتصال جهاز الاختبار بالمركز. فيما بعد يمكنك إعادة تعيين مفتاح المصادقة لمراقبة ما يحدث عندما يحاول جهاز استخدام مفتاح قديم.
تسجيل جهاز
يجب أن يكون الجهاز مسجلاً في مركز إنترنت الأشياء الخاص بك قبل أن يتمكن من الاتصال. في هذا القسم، تستخدم Azure CLI لإنشاء معرّف الجهاز.
إذا كان لديك بالفعل جهاز مسجل في IoT Hub الخاص بك، يمكنك تخطي هذا القسم.
لإنشاء هوية الجهاز:
قم بتشغيل الأمر az iot hub device-identity create في غلاف CLI الخاص بك. يقوم هذا الأمر بإنشاء هوية الجهاز.
your_iot_hub_name. استبدل هذا العنصر النائب أدناه بالاسم الذي اخترته لمركز IoT لديك.
myDevice. يمكنك استخدام هذا الاسم لمعرف الجهاز خلال هذه المقالة، أو توفير اسم جهاز مختلف.
az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
قم بتشغيل الأمر az iot hub device-identity connection-string show.
az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
إخراج سلسلة الاتصال بالتنسيق التالي:
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
احفظ سلسلة الاتصال في موقع آمن.
إشعار
احتفظ بتطبيق CLI الخاص بك مفتوحاً. ستستخدمه في خطوات لاحقة.
محاكاة جهاز اختبار
لمحاكاة جهاز يرسل بيانات تتبع الاستخدام إلى مركز IoT الخاص بك، قم بتشغيل تطبيق جهاز محاكاة Node.js الذي قمت بتنزيله مسبقا.
في نافذة طرفية على جهاز التطوير الخاص بك، انتقل إلى المجلد الجذر لنموذج مشروع Node.js الذي قمت بتنزيله. ثم انتقل إلى المجلد iot-hub\Tutorials\ConnectivityTests.
في نافذة المحطة الطرفية، قم بتشغيل الأوامر التالية لتثبيت المكتبات المطلوبة وتشغيل تطبيق جهاز المحاكاة. استخدم الجهاز سلسلة الاتصال قمت بتدوينه عند تسجيل الجهاز.
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
تعرض نافذة المحطة الطرفية رسالة نجاح بمجرد اتصالها بمركزك:
لقد تمت مصادقتك بنجاح من جهاز باستخدام مفتاح جهاز تم إنشاؤه بواسطة مركز IoT.
إعادة تعيين المفاتيح
في هذا القسم، يمكنك إعادة تعيين مفتاح الجهاز ومراقبة الخطأ عند محاولة جهاز المحاكاة للاتصال.
لإعادة تعيين مفتاح الجهاز الأساسي لجهازك، قم بتشغيل الأمر az iot hub device-identity update :
# Generate a new Base64 encoded key using the current date read key < <(date +%s | sha256sum | base64 | head -c 32) # Reset the primary device key for test device az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
في نافذة المحطة الطرفية على جهاز التطوير الخاص بك، قم بتشغيل تطبيق جهاز المحاكاة مرة أخرى:
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
هذه المرة تشاهد خطأ في المصادقة عند محاولة التطبيق للاتصال:
إنشاء رمز مميز لتوقيع الوصول المشترك (SAS)
إذا كان جهازك يستخدم أحد SDKs لجهاز مركز IoT، فستقوم التعليمات البرمجية لمكتبة SDK بإنشاء رمز SAS المستخدم للمصادقة مع المركز. يتم إنشاء رمز SAS المميز من اسم المركز واسم الجهاز ومفتاح الجهاز.
في بعض السيناريوهات، كما هو الحال في بوابة بروتوكول السحابة أو كجزء من نظام مصادقة مخصص، قد تحتاج إلى إنشاء رمز SAS بنفسك. لاستكشاف مشاكل التعليمات البرمجية لإنشاء SAS، من المفيد إنشاء رمز SAS معروف جيد لاستخدامه أثناء الاختبار.
إشعار
يتضمن نموذج SimulatedDevice-2.js أمثلة لإنشاء رمز SAS باستخدام ودون استخدام SDK.
قم بتشغيل الأمر az iot hub generate-sas-token لإنشاء رمز SAS مميز معروف جيد باستخدام CLI:
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
انسخ النص الكامل رمز SAS المميز الذي تم إنشاؤه. يبدو رمز SAS المميز مثل المثال التالي:
SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
في نافذة المحطة الطرفية على جهاز التطوير الخاص بك انتقل إلى المجلد الجذر لنموذج مشروع Node.js الذي قمت بتنزيله. ثم انتقل إلى المجلد iot-hub\Tutorials\ConnectivityTests.
في نافذة المحطة الطرفية، قم بتشغيل الأوامر التالية لتثبيت المكتبات المطلوبة وتشغيل تطبيق جهاز المحاكاة:
npm install node SimulatedDevice-2.js "{Your SAS token}"
تعرض نافذة المحطة الطرفية رسالة نجاح بمجرد اتصالها بمركزك باستخدام رمز SAS المميز:
لقد تمت مصادقتك بنجاح من جهاز باستخدام رمز SAS تجريبي تم إنشاؤه بواسطة أمر CLI. يتضمن ملف SimulatedDevice-2.js نموذج التعليمات البرمجية التي توضح كيفية إنشاء رمز SAS في التعليمات البرمجية.
البروتوكولات
يمكن لجهاز استخدام أي من البروتوكولات التالية للاتصال بمركز IoT:
البروتوكول | منفذ الصادر |
---|---|
MQTT | 8883 |
MQTT عبر WebSockets | 443 |
AMQP | 5671 |
AMQP عبر WebSockets | 443 |
HTTPS | 443 |
إذا تم حظر منفذ الصادر بواسطة جدار حماية، فلن يتمكن الجهاز من الاتصال:
التحقق من اتصال الجهاز بالسحابة
بعد توصيل الجهاز، يمكنه البدء في إرسال بيانات تتبع الاستخدام إلى مركز IoT الخاص بك. يوضح لك هذا القسم كيف يمكنك التحقق من وصول القياس عن بعد المرسل من قِبَل الجهاز إلى المركز.
إرسال رسائل من جهاز إلى سحابة
نظرا لأننا قمنا بإعادة تعيين سلسلة الاتصال لجهازك في القسم السابق، استخدم الأمر az iot hub device-identity connection-string show لاسترداد سلسلة الاتصال المحدثة:
az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
لتشغيل جهاز محاكاة يرسل رسائل، انتقل إلى المجلد iot-hub\Tutorials\ConnectivityTests في التعليمات البرمجية التي قمت بتنزيلها.
في نافذة المحطة الطرفية، قم بتشغيل الأوامر التالية لتثبيت المكتبات المطلوبة وتشغيل تطبيق جهاز المحاكاة:
npm install node SimulatedDevice-3.js "{your_device_connection_string}"
تعرض نافذة المحطة الطرفية المعلومات أثناء محاولة إرسال القياس عن بعد إلى المركز:
مراقبة الرسائل الواردة
يمكنك استخدام المقاييس في المدخل للتحقق من وصول رسائل القياس عن بعد إلى مركز IoT.
في مدخل Microsoft Azure، حدد مركز IoT في القائمة المنسدلة Resource .
حدد Metrics من قسم Monitoring في قائمة التنقل.
حدد رسائل بيانات تتبع الاستخدام المرسلة كمقياس، ثم قم بتعيين النطاق الزمني إلى الساعة الماضية. يوضح المخطط العدد الإجمالي للرسائل المرسلة بواسطة جهاز المحاكاة:
يستغرق الأمر بضع دقائق حتى تصبح المقاييس متاحة بعد بدء تشغيل جهاز المحاكاة.
التحقق من اتصال السحابة بالجهاز
يوضح هذا القسم كيفية إجراء مكالمة أسلوب مباشر تجريبية لجهاز للتحقق من الاتصال من السحابة إلى الجهاز. يمكنك تشغيل جهاز المحاكاة على جهاز التطوير الخاص بك للاستماع إلى مكالمات الأسلوب المباشر من المركز.
في نافذة المحطة الطرفية، قم بتشغيل الأمر التالية لتشغيل تطبيق جهاز المحاكاة:
node SimulatedDevice-3.js "{your_device_connection_string}"
في نافذة منفصلة، استخدم الأمر az iot hub invoke-device-method لاستدعاء أسلوب مباشر على الجهاز:
az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
يقوم جهاز المحاكاة بطباعة رسالة إلى وحدة التحكم عندما يتلقى استدعاء أسلوب مباشر:
عندما ينجح جهاز المحاكاة في تلقي استدعاء الأسلوب المباشر، يعيد إرسال الإعلام إلى المركز:
التحقق من مزامنة التوأم
تستخدم الأجهزة توائم لمزامنة الحالة بين الجهاز والمركز. في هذا القسم، يمكنك استخدام أوامر CLI لإرسال الخصائص المطلوبة إلى جهاز وقراءة الخصائص التي تم إرسالها بواسطة الجهاز.
يرسل جهاز المحاكاة الذي تستخدمه في هذا القسم خصائص تم الإبلاغ عنها إلى المركز عند بدء تشغيلها، ويطبع الخصائص المطلوبة إلى وحدة التحكم كلما تلقاها.
في نافذة المحطة الطرفية، قم بتشغيل الأمر التالية لتشغيل تطبيق جهاز المحاكاة:
node SimulatedDevice-3.js "{your_device_connection_string}"
في نافذة منفصلة، قم بتشغيل الأمر az iot hub device-twin show للتحقق من أن المركز تلقى الخصائص المبلغ عنها من الجهاز:
az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
في الإخراج من الأمر، يمكنك مشاهدة الخاصية devicelaststarted في قسم الخصائص التي تم الإبلاغ عنها. تعرض هذه الخاصية التاريخ والوقت الذي قمت فيه ببدء تشغيل جهاز المحاكاة.
للتحقق من أن المركز يمكنه إرسال قيم الخصائص المطلوبة إلى الجهاز، استخدم الأمر az iot hub device-twin update :
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
يقوم جهاز المحاكاة بطباعة رسالة عندما يتلقى تحديث خاصية مطلوبة من المركز:
بالإضافة إلى تلقي تغييرات الخاصية المطلوبة أثناء إجرائها، يتحقق جهاز المحاكاة تلقائياً من الخصائص المطلوبة عند بدء تشغيله.
تنظيف الموارد
إذا لم تعد بحاجة إلى مركز IoT، فاحذفه ومجموعة الموارد في المدخل. للقيام بذلك، حدد مجموعة الموارد التي تحتوي على مركز IoT وحدد حذف.
الخطوات التالية
في هذا البرنامج التعليمي، شاهدت كيفية التحقق من مفاتيح الجهاز الخاص بك، والتحقق من اتصال الجهاز بالسحابة، والتحقق من اتصال السحابة بالجهاز، والتحقق من مزامنة توأم الجهاز. لمعرفة المزيد حول كيفية مراقبة مركز IoT، تفضل بزيارة مقالة الكيفية الخاصة بمراقبة مركز IoT.