البرنامج التعليمي: توفير الأجهزة باستخدام مجموعات تسجيل المفاتيح المتماثلة
يوضح هذا البرنامج التعليمي كيفية توفير أجهزة مفاتيح متماثلة متعددة محاكاة بأمان إلى IoT Hub واحد باستخدام مجموعة تسجيل.
تدعم خدمة توفير جهاز Azure IoT Hub نوعين من التسجيلات لأجهزة التوفير:
- مجموعات التسجيل: تُستخدم لتسجيل أجهزة متعددة ذات صلة. يوضح هذا البرنامج التعليمي التوفير مع مجموعات التسجيل.
- التسجيلات الفردية: تُستخدم لتسجيل جهاز واحد.
تدعم خدمة توفير جهاز Azure IoT Hub ثلاثة أشكال من المصادقة لتوفير الأجهزة:
- شَهادات X.509
- وحدة النظام الأساسي الموثوق بها (TPM)
- مفاتيح متماثلة - يوضح هذا البرنامج التعليمي إثبات المفتاح المتماثل
قد لا تحتوي بعض الأجهزة على شهادة أو TPM أو أي ميزة أمان أخرى يمكن استخدامها لتحديد الجهاز بشكل آمن. بالنسبة إلى هذه الأجهزة، تتضمن خدمة توفير جهاز Azure IoT Hub (DPS) إثبات المفتاح المتماثل. يمكن استخدام إثبات المفتاح المتماثل لتحديد جهاز استنادا إلى معلومات فريدة مثل عنوان MAC أو رقم تسلسلي.
في هذا البرنامج التعليمي، يمكنك إكمال الأهداف التالية:
- تعريف معرف تسجيل فريد لكل جهاز.
- إنشاء مجموعة تسجيل تستخدم إثبات المفتاح المتماثل.
- إنتاج مفتاح جهاز لكل جهاز باستخدام معرف التسجيل الفريد ومفتاح مجموعة التسجيل المشترك.
- توفير الأجهزة باستخدام مفتاح الجهاز ونموذج التعليمات البرمجية في حزم SDK لجهاز Azure IoT.
هذا البرنامج التعليمي موجه نحو محطة عمل مستندة إلى Windows. ومع ذلك، يمكنك تنفيذ الإجراءات على Linux. للحصول على مثال Linux، راجع البرنامج التعليمي: توفير زمن الانتقال الجغرافي.
إشعار
إذا كنت قد أكملت التشغيل السريع مسبقا: توفير جهاز مفتاح متماثل محاكاة ولا يزال لديك موارد Azure وبيئة التطوير الخاصة بك معدة، يمكنك المتابعة إلى إنشاء مجموعة تسجيل مفاتيح متماثلة في هذا البرنامج التعليمي.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
إكمال الخطوات في إعداد خدمة تزويد الأجهزة بمركز IoT باستخدام مدخل Microsoft Azure.
إذا كنت تستخدم بيئة تطوير Windows، فقم بتثبيت Visual Studio 2022 مع تمكين حمل العمل "تطوير سطح المكتب مع C++". يتم أيضا دعم Visual Studio 2019 وVisual Studio 2017 وVisual Studio 2015. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.
تثبيت أحدث نظام بناء CMake. تأكد من التحقق من الخيار الذي يضيف CMake القابل للتنفيذ إلى المسار الخاص بك.
هام
تأكد من تثبيت المتطلبات الأساسية لبرنامج Visual Studio (حمل عمل Visual Studio و"تطوير سطح المكتب باستخدام C ++") على جهازك، قبل بدء تثبيت
CMake
. بمجرد أن يتم وضع المتطلبات الأساسية، ويتم التحقق من التنزيل، قم بتثبيت نظام بنية CMake. انتبه أيضًا إلى أن الإصدارات الأقدم من نظام بنية CMake تفشل في إنشاء ملف الحل المستخدم في هذه المقالة. تأكد من استخدام أحدث إصدار من CMake.
قم بتثبيت .NET SDK 6.0 أو أحدث على جهازك المستند إلى Windows. يمكنك استخدام الأمر التالي للتحقق من الإصدار الخاص بك.
dotnet --info
- تثبيت Node.js الإصدار 4.0 والأعلى.
- تثبيت إصدار Python 3.7 أو أحدث على جهازك الذي يعمل بنظام تشغيل Windows. يمكنك التحقق من إصدار Python الذي تستخدمه عن طريق تشغيل
python --version
.
تثبيت Java SE Development Kit 8 أو أحدث على جهازك.
تنزيل وتثبيت Maven.
- تثبيت آخر إصدار من Git. تأكد من إضافة Git إلى متغيرات البيئة التي يمكن الوصول إليها من نافذة الأمر. راجع أدوات عميل Software Freedom Conservancy's Git للحصول على أحدث إصدار من أدوات
git
للتثبيت، والتي تتضمن Git Bash، وهو تطبيق سطر الأوامر الذي يمكن استخدامه للتفاعل مع مستودع Git المحلي خاصتك.
جهز بيئة التطوير الخاصة بك
في هذا القسم، تقوم بإعداد بيئة تطوير لإنشاء Azure IoT Device SDK ل C. توفر عينة التعليمات البرمجية الجهاز أثناء تسلسل تمهيد الجهاز.
في مستعرض ويب، انتقل إلى صفحة الإصدار من Azure IoT C SDK.
انسخ اسم العلامة لأحدث إصدار من Azure IoT C SDK، على سبيل المثال:
lts_03_2024
.افتح موجه أوامر Windows وقم بتشغيل الأوامر التالية لاستنساخ أحدث إصدار من Azure IoT Device SDK لمستودع C GitHub. استبدل
<release-tag>
بالعلامة التي نسختها في الخطوة السابقة.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
توقع أن تستغرق هذه العملية عدة دقائق لإكمالها.
عند اكتمال العملية، قم بتشغيل الأوامر التالية من دليل
azure-iot-sdk-c
:mkdir cmake cd cmake
يستخدم نموذج التعليمات البرمجية مفتاح متماثل لتوفير الشهادة. بادر بتشغيل الأمر التالي لإنشاء إصدار من SDK خاص بنظام عميل التطوير الأساسي الخاصة بك، والذي يتضمن على عميل توفير الجهاز:
cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON ..
تلميح
إذا لم يعثر
cmake
على برنامج التحويل البرمجي C ++، فقد تحصل على أخطاء في الإنشاء في أثناء تشغيل الأمر أعلاه. إذا حدث ذلك، فحاول تشغيل الأمر في موجه الأوامر Visual Studio.عند اكتمال البنية بنجاح، تبدو أسطر الإخراج القليلة الأخيرة مشابهة للإخراج التالي:
$ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON .. -- Building for: Visual Studio 16 2019 -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22621. -- The C compiler identification is MSVC 19.29.30146.0 -- The CXX compiler identification is MSVC 19.29.30146.0 ... -- Configuring done -- Generating done -- Build files have been written to: C:/azure-iot-sdk-c/cmake
افتح موجه الأوامر أو محطة Git Bash الطرفية.
استنساخ مستودع Azure IoT SDK ل C# GitHub باستخدام الأمر التالي:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
افتح موجه الأوامر أو محطة Git Bash الطرفية.
استنسخ مستودع GitHub Azure IoT SDK لـ Node.js باستخدام الأوامر التالية:
git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
افتح موجه الأوامر أو محطة Git Bash الطرفية.
استنساخ Azure IoT Device SDK لمستودع GitHub Python باستخدام الأمر التالي:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
إشعار
العينات المستخدمة في هذا البرنامج التعليمي موجودة في فرع v2 من مستودع azure-iot-sdk-python. يتوفر الإصدار 3 من Python SDK للاستخدام في الإصدار التجريبي. للحصول على معلومات حول تحديث نماذج التعليمات البرمجية V2 لاستخدام إصدار V3 من Python SDK، راجع Azure IoT Device SDK لدليل ترحيل Python.
افتح موجه الأوامر أو محطة Git Bash الطرفية.
استنسخ مستودع Azure IoT SDK لـ Java GitHub باستخدام الأوامر التالية:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
بادر بالانتقال إلى الدليل
azure-iot-sdk-java
الجذر وبناء المشروع لتنزيل جميع الحزم المطلوبة. قد تستغرق هذه الخطوة عدة دقائق حتى تكتمل.cd azure-iot-sdk-java mvn install -DskipTests=true
إنشاء مجموعة تسجيل مفاتيح متماثلة
سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى مثيل خدمة تزويد الأجهزة.
حدد إدارة التسجيلات من قسم الإعدادات في قائمة التنقل.
حدد Add enrollment group.
في علامة التبويب Registration + provisioning في صفحة Add enrollment group ، قم بتوفير المعلومات التالية لتكوين تفاصيل مجموعة التسجيل:
الحقل الوصف شهاده حدد مفتاح متماثل كآلية التصديق. إعدادات المفتاح المتماثل حدد المربع إنشاء مفاتيح متماثلة تلقائيا إذا كنت تريد استخدام مفاتيح تم إنشاؤها عشوائيا. قم بإلغاء تحديد هذا المربع إذا كنت تريد توفير المفاتيح الخاصة بك. اسم المجموعة أدخل اسما لمجموعة الأجهزة. اسم مجموعة التسجيل عبارة عن سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة: '-'
،'.'
، ،'_'
.':'
يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-'
).حالة التوفير حدد المربع تمكين هذا التسجيل إذا كنت تريد أن تكون مجموعة التسجيل هذه متاحة لتوفير الأجهزة. قم بإلغاء تحديد هذا المربع إذا كنت تريد تعطيل المجموعة. يمكنك تغيير هذا الإعداد لاحقا. نهج إعادة التزويد اختر نهج إعادة توفير يعكس الطريقة التي تريد أن تتعامل بها DPS مع الأجهزة التي تطلب إعادة التزويد. لمزيد من المعلومات، راجع نهج إعادة التوفير حدد Next: IoT hubs.
في علامة التبويب IoT hubs في صفحة Add enrollment group ، قم بتوفير المعلومات التالية لتحديد مراكز IoT التي يمكن لمجموعة التسجيل توفير الأجهزة لها:
الحقل الوصف مراكز IoT المستهدفة حدد واحدا أو أكثر من مراكز IoT المرتبطة، أو أضف ارتباطا جديدا إلى مركز IoT. لمعرفة المزيد حول ربط مراكز IoT بمثيل DPS، راجع كيفية ربط مراكز IoT وإدارتها. نهج التخصيص إذا حددت أكثر من مركز IoT مرتبط واحد، فحدد الطريقة التي تريد بها تعيين الأجهزة إلى المراكز المختلفة. لمعرفة المزيد حول نهج التخصيص، راجع كيفية استخدام نهج التخصيص.
إذا حددت مركز IoT مرتبطا واحدا فقط، نوصي باستخدام نهج التوزيع المرجح بالتساوي.حدد Next: Device settings
في علامة التبويب Device settings في صفحة Add enrollment group ، قم بتوفير المعلومات التالية لتحديد كيفية تكوين الأجهزة التي تم توفيرها حديثا:
الحقل الوصف IoT Edge تحقق من تمكين IoT Edge على الأجهزة المتوفرة إذا كانت جميع الأجهزة التي تم توفيرها من خلال هذه المجموعة ستقوم بتشغيل Azure IoT Edge. قم بإلغاء تحديد هذا المربع إذا كانت هذه المجموعة مخصصة للأجهزة التي لا تدعم IoT Edge فقط. إما أن تكون جميع الأجهزة في المجموعة ممكنة ل IoT Edge أو لا يمكن أن يكون أي منها ممكنا. علامات الجهاز استخدم مربع النص هذا لتوفير أي علامات تريد تطبيقها على توائم الجهاز للأجهزة المتوفرة. الخصائص المطلوبة استخدم مربع النص هذا لتوفير أي خصائص مطلوبة تريد تطبيقها على توائم الجهاز للأجهزة المتوفرة. لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.
حدّد Next: Review + create.
في علامة التبويب Review + create ، تحقق من جميع القيم الخاصة بك ثم حدد Create.
عند إنشاء مجموعة التسجيل، تنشئ DPS مفتاحا أساسيا ومفتاحا ثانويا، ثم تضيفها إلى إدخال التسجيل. تظهر مجموعة تسجيل المفاتيح المتماثلة ضمن عمود اسم المجموعة في علامة التبويب مجموعات التسجيل.
افتح التسجيل وانسخ قيمة المفتاح الأساسي. هذا المفتاح هو مفتاح مجموعتك.
اختيار معرف تسجيل فريد للجهاز
يجب تعريف معرف تسجيل فريد لتعريف كل جهاز. يمكنك استخدام عنوان MAC أو الرقم التسلسلي أو أي معلومات فريدة من الجهاز.
في هذا المثال، نستخدم مجموعة من عنوان MAC والرقم التسلسلي الذي يشكل السلسلة التالية لمعرف التسجيل.
sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
إنشاء معرفات تسجيل فريدة لكل جهاز. معرف التسجيل هو سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة التالية: - . _ :
. يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة (-
).
اشتقاق مفتاح جهاز
لإنشاء مفاتيح الجهاز، استخدم المفتاح الأساسي لمجموعة التسجيل لحساب تجزئة HMAC-SHA256 لمعرف التسجيل لكل جهاز. ثم يتم تحويل النتيجة إلى تنسيق Base 64 لكل جهاز.
تحذير
يجب أن تتضمن التعليمات البرمجية للجهاز الخاص بك لكل جهاز مفتاح الجهاز المشتق لهذا الجهاز فقط. لا تقم بتضمين المفتاح الأساسي للمجموعة في التعليمات البرمجية لجهازك. مفتاح المجموعة المخترق لديه القدرة على اختراق أمان جميع الأجهزة التي تتم مصادقتها معها.
يوفر ملحق IoT ل Azure CLI الأمر az iot dps enrollment-group compute-device-key لإنشاء مفاتيح الأجهزة المشتقة. يمكن استخدام هذا الأمر من كل من الأنظمة المستندة إلى Windows وLinux.
استبدل قيمة المعلمة --key
بالمفتاح الأساسي من مجموعة التسجيل الخاصة بك.
استبدل قيمة المعلمة --registration-id
بمعرف التسجيل الخاص بك.
az iot dps enrollment-group compute-device-key --key <group_primary_key> --registration-id <device_registration_id>
مثال على النتيجة:
"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="
يستخدم كل جهاز مفتاح الجهاز المشتق ومعرف التسجيل الفريد لإجراء إثبات المفتاح المتماثل مع مجموعة التسجيل أثناء التوفير.
إعداد وتشغيل التعليمات البرمجية لتوفير الجهاز
في هذا القسم، يمكنك تحديث نموذج التعليمات البرمجية للجهاز لإرسال تسلسل تمهيد الجهاز إلى مثيل خدمة توفير الجهاز. يؤدي تسلسل التمهيد هذا إلى التعرف على الجهاز ومصادقته وتعيينه إلى مركز IoT مرتبط بمثيل خدمة تزويد الأجهزة.
نموذج التعليمة البرمجية الخاصة بالتوفير ينجز المهام التالية بالترتيب:
مصادقة جهازك باستخدام مورد توفير الجهاز باستخدام المعلمات الثلاث التالية:
- نطاق معرف خدمة توفير جهازك
- معرف التسجيل لجهازك.
- مفتاح الجهاز المشتق لجهازك.
تعيين الجهاز إلى مركز IoT المرتبط بالفعل بمثيل خدمة توفير الأجهزة.
لتحديث نموذج التوفير وتشغيله بمعلومات جهازك:
في القائمة الرئيسية لخدمة توفير الجهاز، حدد Overview.
انسخ قيمة ID Scope.
في Visual Studio، افتح ملف الحل azure_iot_sdks.sln الذي تم إنشاؤه بواسطة تشغيل CMake. يجب أن يكون ملف الحل في الموقع التالي:
\azure-iot-sdk-c\cmake\azure_iot_sdks.sln
تلميح
إذا لم يتم إنشاء الملف في دليل cmake تأكد من استخدام إصدار حديث من نظام بناء CMake.
في نافذة مستكشف الحلول Visual Studio، انتقل إلى مجلد Provision_Samples. قم بتوسيع نموذج المشروع المسمى prov_dev_client_sample. قم بتوسيع ملفات المصدر، وافتح prov_dev_client_sample.c.
ابحث عن
id_scope
الثابت، واستبدل القيمة بقيمة نطاق المعرف التي نسختها من مدخل Microsoft Azure.static const char* id_scope = "0ne00002193";
ابحث عن تعريف الدالة
main()
في نفس الملف. تأكد من تعيين المتغيرhsm_type
كما هو موضحSECURE_DEVICE_TYPE_SYMMETRIC_KEY
أدناه:SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; //hsm_type = SECURE_DEVICE_TYPE_X509; hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
ابحث عن الاستدعاء إلى
prov_dev_set_symmetric_key_info()
في prov_dev_client_sample.c الذي تم التعليق عليه.// Set the symmetric key if using they auth type //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
قم بإلغاء تعليق استدعاء الدالة واستبدل قيم العنصر النائب (بما في ذلك أقواس الزاوية) بمعرف التسجيل الذي اخترته في اختيار معرف تسجيل فريد للجهاز ومفتاح الجهاز المشتق الذي أنشأته في اشتقاق مفتاح الجهاز.
// Set the symmetric key if using they auth type prov_dev_set_symmetric_key_info("sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6", "Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc=");
تنبيه
يجب أن تدرك أن هذه الخطوة تترك مفتاح الجهاز المشتق مضمنا كجزء من الصورة لكل جهاز، وهو ليس من أفضل ممارسات الأمان الموصى بها. وهذا هو أحد الأسباب التي يجعل الأمان وسهولة الاستخدام غالبا ما تكون مفاضلات. يجب عليك مراجعة أمان أجهزتك بالكامل بناء على متطلباتك الخاصة.
حفظ الملف.
انقر بزر الماوس الأيمن فوق مشروع prov_dev_client_sample وحدد تعيين كمشروع بدء التشغيل.
في القائمة Visual Studio حدد Debug> البدء من دون تصحيح الأخطاء لتشغيل الحل. في إعادة إنشاء موجه المشروع حدد نعم لإعادة إنشاء المشروع قبل تشغيل.
الإخراج التالي مثال للجهاز الذي يتصل بنجاح بمثيل خدمة التوفير ليتم تعيينه إلى لوحة وصل IoT:
Provisioning API Version: 1.9.1 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 Press enter key to exit:
نموذج التعليمة البرمجية الخاصة بالتوفير ينجز المهام التالية بالترتيب:
مصادقة جهازك باستخدام مورد توفير الجهاز باستخدام المعلمات الثلاث التالية:
- نطاق معرف خدمة توفير جهازك
- معرف التسجيل لجهازك.
- مفتاح الجهاز المشتق لجهازك.
تعيين الجهاز إلى مركز IoT المرتبط بالفعل بمثيل خدمة توفير الأجهزة.
إرسال رسالة اختبار إلى مركز IoT.
لتحديث نموذج التوفير وتشغيله بمعلومات جهازك:
في القائمة الرئيسية لخدمة توفير الجهاز، حدد Overview.
انسخ قيمة ID Scope.
افتح موجه الأوامر وانتقل إلى SymmetricKeySample في مستودع SDK المستنسخ:
cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
في مجلد SymmetricKeySample، افتح Parameters.cs في محرر النص. يعرض هذا الملف المعلمات المشار إليها بواسطة العينة. يتم استخدام المعلمات الثلاثة الأولى المطلوبة فقط في هذه المقالة عند تشغيل العينة. راجع التعليمات البرمجية في هذا الملف. لا توجد حاجة لإجراء تغييرات.
المعلمة المطلوب الوصف --i
أو--IdScope
صواب نطاق المعرف الخاص بمثيل DPS --r
أو--RegistrationId
صواب معرف التسجيل للجهاز. معرف التسجيل عبارة عن سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة: '-'
، ،'.'
،'_'
.':'
يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-'
).--p
أو--PrimaryKey
صواب المفتاح الأساسي للتسجيل الفردي أو مفتاح الجهاز المشتق لتسجيل المجموعة. --g
أو--GlobalDeviceEndpoint
خطأ نقطة النهاية العمومية للأجهزة للاتصال بها. الإعدادات الافتراضية لـ global.azure-devices-provisioning.net
--t
أو--TransportType
خطأ النقل للاستخدام للتواصل مع مثيل توفير الجهاز. الإعدادات الافتراضية لـ Mqtt
. تشمل القيم المحتملةMqtt
،Mqtt_WebSocket_Only
،Mqtt_Tcp_Only
،Amqp
،Amqp_WebSocket_Only
،Amqp_Tcp_only
وHttp1
.في مجلد SymmetricKeySample افتح ProvisioningDeviceClientSample.cs في محرر النص. يوضح هذا الملف كيفية عمل فئة SecurityProviderSymmetricKey مع فئة ProvisioningDeviceClient لتوفير جهاز المفتاح المتماثل المحاكي. راجع التعليمات البرمجية في هذا الملف. لا توجد حاجة لإجراء تغييرات.
إنشاء وتشغيل نموذج التعليمات البرمجية باستخدام الأمر التالي:
- استبدل
<id-scope>
بالنطاق المعرف الذي نسخته من مدخل Microsoft Azure. - استبدل
<registration-id>
بمعرف التسجيل الذي اخترته في اختيار معرف تسجيل فريد للجهاز. - استبدل
<primarykey>
بمفتاح الجهاز المشتق الذي أنشأته.
dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
- استبدل
يجب أن تشاهد شيئا مشابها للإخراج التالي. أُرسِلت سلسلة "TestMessage" إلى المركز باعتبارها رسالة تجريبية.
D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ== Initializing the device provisioning client... Initialized for registration Id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Registering with the device provisioning service... Registration status: Assigned. Device sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 registered to contoso-hub-2.azure-devices.net. Creating symmetric key authentication for IoT Hub... Testing the provisioned device with IoT Hub... Sending a telemetry message... Finished.
نموذج التعليمة البرمجية الخاصة بالتوفير ينجز المهام التالية بالترتيب:
مصادقة جهازك باستخدام مورد توفير الجهاز باستخدام المعلمات الأربعة التالية:
PROVISIONING_HOST
PROVISIONING_IDSCOPE
PROVISIONING_REGISTRATION_ID
PROVISIONING_SYMMETRIC_KEY
تعيين الجهاز إلى مركز IoT المرتبط بالفعل بمثيل خدمة توفير الأجهزة.
يرسل رسالة تجريبية بيانات تتبع الاستخدام إلى مركز IoT.
لتحديث نموذج التوفير وتشغيله بمعلومات جهازك:
في القائمة الرئيسية لخدمة توفير الجهاز، حدد Overview.
انسخ قيمة ID Scope.
افتح موجه الأوامر لتنفيذ أوامر Node.js، وانتقل إلى الدليل التالي:
cd azure-iot-sdk-node\provisioning\device\samples
في المجلد توفير/جهاز/نماذج افتح register_symkey.js وراجع التعليمات البرمجية.
يتم تعيين النموذج افتراضيا إلى MQTT كبروتوكول نقل. إذا كنت ترغب في استخدام بروتوكول مختلف، فعلق على السطر التالي وقم بإلغاء التعليق على السطر للبروتوكول المناسب.
var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
لاحظ أيضا أن نموذج التعليمات البرمجية يعين حمولة مخصصة:
provisioningClient.setProvisioningPayload({a: 'b'});
يمكنك التعليق على هذه التعليمة البرمجية، لأنها غير مطلوبة مع لهذا البرنامج التعليمي. يمكنك استخدام حمولة مخصصة عند استخدام خطاف ويب مخصص للتخصيص لتعيين جهازك إلى IoT Hub. لمزيد من المعلومات، راجع البرنامج التعليمي: استخدام نُهج الموقع المخصص.
يحاول الأسلوب
provisioningClient.register()
تسجيل جهازك.في موجه الأوامر، قم بتشغيل الأوامر التالية لتعيين متغيرات البيئة المستخدمة من قبل النموذج:
- يعين
PROVISIONING_HOST
الأمر الأول متغير البيئة إلى نقطة نهاية الجهاز العمومي. نقطة النهاية هذه هي نفسها لجميع مثيلات DPS. - استبدل
<id-scope>
بالنطاق المعرف الذي نسخته من مدخل Microsoft Azure. - استبدل
<registration-id>
بمعرف التسجيل الذي اخترته في اختيار معرف تسجيل فريد للجهاز. - استبدل
<derived-device-key>
بمفتاح الجهاز المشتق الذي أنشأته في اشتقاق مفتاح جهاز.
set PROVISIONING_HOST=global.azure-devices-provisioning.net
set PROVISIONING_IDSCOPE=<id-scope>
set PROVISIONING_REGISTRATION_ID=<registration-id>
set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
- يعين
إنشاء نموذج التعليمات البرمجية وتشغيلها باستخدام الأوامر التالية:
npm install
node register_symkey.js
يجب أن ترى شيئاً مشابهاً للإخراج التالي. تم إرسال مثال سلسلة "مرحبًا بالعالم" إلى المركز كرسالة تجريبية.
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 payload=undefined Client connected send status: MessageEnqueued
نموذج التعليمة البرمجية الخاصة بالتوفير ينجز المهام التالية بالترتيب:
مصادقة جهازك باستخدام مورد توفير الجهاز باستخدام المعلمات الأربعة التالية:
PROVISIONING_HOST
PROVISIONING_IDSCOPE
PROVISIONING_REGISTRATION_ID
PROVISIONING_SYMMETRIC_KEY
تعيين الجهاز إلى مركز IoT المرتبط بالفعل بمثيل خدمة توفير الأجهزة.
إرسال رسالة اختبار إلى مركز IoT.
لتحديث نموذج التوفير وتشغيله بمعلومات جهازك:
في القائمة الرئيسية لخدمة توفير الجهاز، حدد Overview.
انسخ قيمة ID Scope.
افتح موجه الأوامر وانتقل إلى الدليل حيث يوجد نموذج الملف، provision_symmetric_key.py.
cd azure-iot-sdk-python\samples\async-hub-scenarios
في موجه الأوامر، قم بتشغيل الأوامر التالية لتعيين متغيرات البيئة المستخدمة من قبل النموذج:
- يعين
PROVISIONING_HOST
الأمر الأول متغير البيئة إلى نقطة نهاية الجهاز العمومي. نقطة النهاية هذه هي نفسها لجميع مثيلات DPS. - استبدل
<id-scope>
بالنطاق المعرف الذي نسخته من مدخل Microsoft Azure. - استبدل
<registration-id>
بمعرف التسجيل الذي اخترته في اختيار معرف تسجيل فريد للجهاز. - استبدل
<derived-device-key>
بمفتاح الجهاز المشتق الذي أنشأته في اشتقاق مفتاح جهاز.
set PROVISIONING_HOST=global.azure-devices-provisioning.net
set PROVISIONING_IDSCOPE=<id-scope>
set PROVISIONING_REGISTRATION_ID=<registration-id>
set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
- يعين
قم بتثبيت مكتبة azure-iot-device من خلال تشغيل الأمر التالي.
pip install azure-iot-device
تشغيل نموذج التعليمات البرمجية Python في provision_symmetric_key.py.
python provision_symmetric_key.py
يجب أن ترى شيئاً مشابهاً للإخراج التالي. يتم أيضاً إرسال بعض الأمثلة على رسائل سرعة بيانات تتبع الاستخدام عن بُعد إلى المركز كاختبار.
D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py The complete registration result is sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 contoso-hub-2.azure-devices.net initialAssignment null Will send telemetry from the provisioned device sending message #1 sending message #2 sending message #3 sending message #4 sending message #5 sending message #6 sending message #7 sending message #8 sending message #9 sending message #10 done sending message #1 done sending message #2 done sending message #3 done sending message #4 done sending message #5 done sending message #6 done sending message #7 done sending message #8 done sending message #9 done sending message #10
نموذج التعليمة البرمجية الخاصة بالتوفير ينجز المهام التالية بالترتيب:
مصادقة جهازك باستخدام مورد توفير الجهاز باستخدام المعلمات الأربعة التالية:
GLOBAL_ENDPOINT
SCOPE_ID
REGISTRATION_ID
SYMMETRIC_KEY
تعيين الجهاز إلى مركز IoT المرتبط بالفعل بمثيل خدمة توفير الأجهزة.
إرسال رسالة اختبار إلى مركز IoT.
لتحديث نموذج التوفير وتشغيله بمعلومات جهازك:
في القائمة الرئيسية لخدمة توفير الجهاز، حدد Overview.
انسخ قيمة ID Scope.
افتح نموذج التعليمة البرمجية لجهاز Java للتحرير. المسار الكامل إلى نموذج التعليمة البرمجية للجهاز هو:
azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java
تعيين قيمة المتغيرات التالية ل DPS وتسجيل الجهاز:
- استبدل
[Your scope ID here]
بالنطاق المعرف الذي نسخته من مدخل Microsoft Azure. - استبدل
[Your Provisioning Service Global Endpoint here]
بنقطة نهاية الجهاز العمومي: global.azure-devices-provisioning.net. نقطة النهاية هذه هي نفسها لجميع مثيلات DPS. - استبدل
[Enter your Symmetric Key here]
بمفتاح الجهاز المشتق الذي أنشأته في اشتقاق مفتاح جهاز. - استبدل
[Enter your Registration ID here]
بمعرف التسجيل الذي اخترته في اختيار معرف تسجيل فريد للجهاز.
private static final String SCOPE_ID = "[Your scope ID here]"; private static final String GLOBAL_ENDPOINT = "[Your Provisioning Service Global Endpoint here]"; private static final String SYMMETRIC_KEY = "[Enter your Symmetric Key here]"; private static final String REGISTRATION_ID = "[Enter your Registration ID here]";
تنبيه
يجب أن تدرك أن هذه الخطوة تترك مفتاح الجهاز المشتق مضمنا كجزء من الصورة لكل جهاز، وهو ليس من أفضل ممارسات الأمان الموصى بها. وهذا هو أحد الأسباب التي يجعل الأمان وسهولة الاستخدام غالبا ما تكون مفاضلات. يجب عليك مراجعة أمان أجهزتك بالكامل بناء على متطلباتك الخاصة.
- استبدل
افتح موجه أوامر للبناء. انتقل إلى مجلد مشروع نموذج التوفير لمستودع Java SDK.
cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
إنشاء العينة
mvn clean install
انتقل إلى
target
المجلد وقم بتنفيذ الملف الذي تم إنشاؤه.jar
. فيjava
الأمر ، استبدل{version}
العنصر النائب بالإصدار الموجود.jar
في اسم الملف على جهازك.cd target java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
يجب أن ترى شيئاً مشابهاً للإخراج التالي.
Starting... Beginning setup. WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. 2022-10-07 18:14:48,388 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2 2022-10-07 18:14:48,390 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread... Waiting for Provisioning Service to register 2022-10-07 18:14:48,392 INFO (global.azure-devices-provisioning.net-002edcf5-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service... 2022-10-07 18:14:48,518 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message 2022-10-07 18:14:48,521 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using symmetric key 2022-10-07 18:14:49,252 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device... 2022-10-07 18:14:49,253 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING 2022-10-07 18:14:52,459 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully IotHUb Uri : contoso-hub-2.azure-devices.net Device ID : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 2022-10-07 18:14:58,424 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-10-07 18:14:58,436 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-10-07 18:14:58,440 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.1 2022-10-07 18:14:58,450 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection... 2022-10-07 18:14:58,471 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet... 2022-10-07 18:14:59,314 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged 2022-10-07 18:14:59,315 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# 2022-10-07 18:14:59,378 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# was acknowledged 2022-10-07 18:14:59,379 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully 2022-10-07 18:14:59,381 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established 2022-10-07 18:14:59,383 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK 2022-10-07 18:14:59,389 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads 2022-10-07 18:14:59,392 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details 2022-10-07 18:14:59,395 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully 2022-10-07 18:14:59,404 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully Sending message from device to IoT Hub... 2022-10-07 18:14:59,408 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) Press any key to exit... 2022-10-07 18:14:59,409 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-10-07 18:14:59,777 DEBUG (MQTT Call: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-10-07 18:14:59,779 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK Message received! Response status: OK
تأكد من تسجيل توفير جهازك
في هذا البرنامج التعليمي، استخدمت نهج تخصيص التكوين الثابت لتعيين الأجهزة التي تسجل من خلال مجموعة التسجيل إلى مركز IoT نفسه. ومع ذلك، بالنسبة للتخصيصات التي قد يتم فيها توفير جهاز إلى أحد مراكز IoT المتعددة، يمكنك فحص سجلات تسجيل مجموعة التسجيل لمعرفة مركز IoT الذي تم توفير الجهاز له:
في مدخل Microsoft Azure، انتقل إلى مثيل DPS.
في قائمة الإعدادات، حدد "إدارة التسجيلات".
حدد Enrollment groups.
حدد مجموعة التسجيل التي أنشأتها لهذا البرنامج التعليمي.
في صفحة Enrollment Group Details ، حدد Registration status.
ابحث عن معرف الجهاز لعمود معرف الجهاز ولاحظ أسفل مركز IoT في عمود مركز IoT المعين.
يمكنك تحديد سجل الجهاز لمشاهدة مزيد من التفاصيل مثل التوأم الأولي المعين للجهاز.
للتحقق من الجهاز على مركز IoT الخاص بك:
في مدخل Microsoft Azure، انتقل إلى مركز IoT الذي تم تعيين جهازك إليه.
في قائمة إدارة الأجهزة، حدد الأجهزة.
إذا تم توفير جهازك بنجاح، يجب أن يظهر معرف الجهاز الخاص به في القائمة، مع تعيين الحالة على أنه ممكن. إذا لم تتمكن من رؤية جهازك، فحدد تحديث.
إشعار
إذا قمت بتغيير حالة الجهاز المزدوج الأولية من القيمة الافتراضية في مجموعة التسجيل، يمكن للجهاز سحب الحالة المزدوجة المطلوبة من المركز والعمل وفقا لذلك. لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.
توفير المزيد من الأجهزة
لتوفير المزيد من الأجهزة من خلال مجموعة التسجيل، اتبع الخطوات الواردة في الأقسام السابقة من أجل:
اشتقاق مفتاح جهاز. كما فعلت سابقا، استخدم المفتاح الأساسي لمجموعة التسجيل كمفتاح المجموعة.
تشغيل رمز تزويد الجهاز. استبدل البيانات الاصطناعية الضرورية بمفتاح الجهاز المشتق الجديد ومعرف التسجيل.
تنظيف الموارد
إذا كنت تخطط لمواصلة العمل على نموذج عميل الجهاز واستكشافه، فلا تنظف الموارد التي تم إنشاؤها في هذا البرنامج التعليمي. إذا كنت لا تخطط للمتابعة، فاستخدم الخطوات التالية لحذف جميع الموارد التي تم إنشاؤها في هذا البرنامج التعليمي.
حذف مجموعة التسجيل
لا يؤدي حذف مجموعة تسجيل إلى حذف سجلات التسجيل المقترنة بها. تحسب هذه السجلات المعزولة مقابل الحصة النسبية للتسجيلات لمثيل DPS. لهذا السبب، من الأفضل حذف جميع سجلات التسجيل المقترنة بمجموعة تسجيل قبل حذف مجموعة التسجيل نفسها.
في مدخل Microsoft Azure، انتقل إلى مثيل DPS.
في قائمة الإعدادات، حدد "إدارة التسجيلات".
حدد علامة التبويب Enrollment groups.
حدد اسم مجموعة التسجيل التي استخدمتها لهذا البرنامج التعليمي لفتح صفحة التفاصيل الخاصة بها.
في صفحة تفاصيل التسجيل، حدد حالة التسجيل. ثم حدد خانة الاختيار بجوار رأس عمود معرف الجهاز لتحديد جميع سجلات التسجيل لمجموعة التسجيل. حدد حذف في أعلى الصفحة لحذف سجلات التسجيل.
ارجع إلى صفحة إدارة التسجيلات .
حدد خانة الاختيار بجوار اسم مجموعة التسجيل التي استخدمتها لهذا البرنامج التعليمي.
في الجزء العلوي من الصفحة، حدد حذف.
حذف تسجيلات الجهاز من IoT Hub
في مدخل Microsoft Azure، انتقل إلى مركز IoT الذي تم تعيين جهازك إليه.
حدد Devices من قسم Device management بقائمة التنقل.
حدد خانة الاختيار بجوار معرف الجهاز للأجهزة التي سجلتها في هذا البرنامج التعليمي.
في الجزء العلوي من الصفحة، حدد حذف.
الخطوات التالية
في هذا البرنامج التعليمي، قمت بتوفير أجهزة متعددة إلى مركز IoT واحد باستخدام مجموعة تسجيل. بعد ذلك، تعرف على كيفية توفير أجهزة IoT عبر مراكز متعددة.