إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة الإرشادية، ستقوم بتوفير جهاز باستخدام مفاتيح متماثلة عبر HTTPS دون استخدام SDK لجهاز Azure IoT DPS. توفر معظم اللغات مكتبات لإرسال طلبات HTTP، ولكن بدلا من التركيز على لغة معينة، في هذه المقالة، ستستخدم أداة سطر أوامر cURL لإرسال HTTPS وتلقيه.
يمكنك اتباع الخطوات الواردة في هذه المقالة على جهاز Linux أو Windows. إذا كنت تعمل على نظام Windows الفرعي لـ Linux (WSL) أو تعمل على جهاز Linux، يمكنك إدخال جميع الأوامر على النظام المحلي في موجه Bash. إذا كنت تعمل على Windows، أدخل جميع الأوامر على النظام المحلي في موجه GitBash.
هناك مسارات مختلفة من خلال هذه المقالة اعتمادا على نوع إدخال التسجيل الذي تختار استخدامه. بعد تثبيت المتطلبات الأساسية، تأكد من قراءة نظرة عامة قبل المتابعة.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
إكمال الخطوات في إعداد خدمة تزويد الأجهزة بمركز IoT باستخدام مدخل Microsoft Azure.
تأكد من تثبيت Python 3.7 أو أحدث على جهازك. يمكنك التحقق من إصدار Python الذي تستخدمه عن طريق تشغيل
python --version.إذا كنت تعمل في Windows، فقم بتثبيت أحدث إصدار من Git. تأكد من إضافة Git إلى متغيرات البيئة التي يمكن الوصول إليها من نافذة الأمر. راجع أدوات عميل Software Freedom Conservancy's Git للحصول على أحدث إصدار من أدوات
gitللتثبيت، والتي تتضمن Git Bash، وهو تطبيق سطر الأوامر الذي يمكن استخدامه للتفاعل مع مستودع Git المحلي خاصتك. في Windows، يمكنك إدخال جميع الأوامر على نظامك المحلي في موجه GitBash.Azure CLI لديك خياران لتشغيل أوامر Azure CLI في هذه المقالة:
- استخدم Azure Cloud Shell، وهي واجهة تفاعلية تقوم بتشغيل أوامر CLI في المستعرض. يوصى بهذا الخيار؛ لأنك لا تحتاج إلى تثبيت أي شيء. إذا كنت تستخدم Cloud Shell لأول مرة، فسجل الدخول إلى مدخل Azure. تتبع الخطوات في التشغيل السريع لـ Cloud Shellلبدء Cloud Shellوحدد بيئة Bash.
- اختياريًا، قم بتشغيل Azure CLI على الجهاز المحلي. إذا تم بالفعل تثبيت Azure CLI،
az upgradeفحدث CLI والملحقات إلى الإصدار الحالي. لتثبيت Azure CLI، راجع كيفية تثبيت Azure CLI.
إذا كنت تعمل في بيئة Linux أو WSL، فافتح موجه Bash لتشغيل الأوامر محليا. إذا كنت تعمل في بيئة Windows، فافتح موجه GitBash.
نظرة عامة
بالنسبة لهذه المقالة، يمكنك استخدام إما تسجيل فردي أو مجموعة تسجيل لتوفير من خلال DPS.
بالنسبة للتسجيل الفردي، أكمل استخدام تسجيل فردي.
بالنسبة لمجموعة تسجيل، أكمل استخدام مجموعة تسجيل.
بعد إنشاء إدخال التسجيل الفردي أو مجموعة التسجيل، تابع إنشاء رمز SAS المميزوتسجيل جهازك باستخدام DPS.
استخدام تسجيل فردي
إذا كنت ترغب في إنشاء تسجيل فردي جديد لاستخدامه في هذه المقالة، يمكنك استخدام الأمر az iot dps enrollment create لإنشاء تسجيل فردي لإثبات المفتاح المتماثل.
ينشئ الأمر التالي إدخال تسجيل مع نهج التخصيص الافتراضي لمثيل DPS الخاص بك ويسمح ل DPS بتعيين المفاتيح الأساسية والثانوية لجهازك:
az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type symmetrickey
استبدل اسم مجموعة الموارد ومثيل DPS.
معرف التسجيل هو معرف التسجيل لجهازك. معرف التسجيل عبارة عن سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة:
'-'، ،'.'،'_'.':'يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-'). تأكد من أن معرف التسجيل الذي تستخدمه في الأمر يلتزم بهذا التنسيق.
يتم إرجاع المفاتيح المتماثلة المعينة في خاصية التصديق في الاستجابة:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
قم بتدوين المفتاح الأساسي ومعرف التسجيل (معرف التسجيل) لإدخال التسجيل الفردي الخاص بك، وتستخدمهما لاحقا في هذه المقالة.
إذا كنت ترغب في استخدام تسجيل فردي موجود لهذه المقالة، يمكنك الحصول على المفتاح الأساسي باستخدام الأمر az iot dps enrollment show :
az iot dps enrollment show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
استخدام مجموعة تسجيل
إذا كنت ترغب في إنشاء مجموعة تسجيل جديدة لاستخدامها في هذه المقالة، يمكنك استخدام الأمر az iot dps enrollment-group create لإنشاء مجموعة تسجيل لإثبات المفتاح المتماثل.
ينشئ الأمر التالي إدخال مجموعة تسجيل مع نهج التخصيص الافتراضي لمثيل DPS الخاص بك ويسمح ل DPS بتعيين المفاتيح الأساسية والثانوية لمجموعة التسجيل:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id}
استبدل اسم مجموعة الموارد ومثيل DPS.
معرف التسجيل هو سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة:
'-'، ، ،'.'.'_'':'يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-'). يمكن أن يكون أي اسم تختار استخدامه لمجموعة التسجيل.
يتم إرجاع المفاتيح المتماثلة المعينة في خاصية التصديق في الاستجابة:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
دون المفتاح الأساسي.
إذا كنت ترغب في استخدام تسجيل فردي موجود لهذه المقالة، يمكنك الحصول على المفتاح الأساسي باستخدام الأمر az iot dps enrollment-group show :
az iot dps enrollment-group show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
اشتقاق مفتاح جهاز
عند استخدام إثبات المفتاح المتماثل مع عمليات تسجيل المجموعة، لا تستخدم مفاتيح مجموعة التسجيل مباشرة. بدلا من ذلك، يمكنك اشتقاق مفتاح فريد لكل جهاز من مفتاح مجموعة التسجيل. لمزيد من المعلومات، راجع عمليات تسجيل المجموعة باستخدام مفاتيح متماثلة.
في هذا القسم، يمكنك إنشاء مفتاح جهاز من المفتاح الأساسي لمجموعة التسجيل لحساب HMAC-SHA256 لمعرف التسجيل الفريد للجهاز. ثم يتم تحويل النتيجة إلى تنسيق Base64.
إنشاء مفتاحك الفريد باستخدام openssl. يمكنك استخدام البرنامج النصي Bash shell التالي. استبدل
{primary-key}بالمفتاح الأساسي لمجموعة التسجيل الذي نسخته سابقا واستبدل{contoso-simdevice}بمعرف التسجيل الذي تريد استخدامه للجهاز. معرف التسجيل عبارة عن سلسلة غير حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة:'-'، ،'.'،'_'.':'يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-').KEY={primary-key} REG_ID={contoso-simdevice} keybytes=$(echo $KEY | base64 --decode | xxd -p -u -c 1000) echo -n $REG_ID | openssl sha256 -mac HMAC -macopt hexkey:$keybytes -binary | base64يخرج البرنامج النصي شيئا مثل المفتاح التالي:
p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
لاحظ أسفل مفتاح الجهاز المشتق ومعرف التسجيل الذي استخدمته لإنشاءه، ستستخدمهما في القسم التالي.
يمكنك أيضا استخدام Azure CLI أو PowerShell لاشتقاق مفتاح الجهاز. لمعرفة المزيد، راجع اشتقاق مفتاح جهاز.
إنشاء رمز SAS مميز
عند استخدام تصديق المفتاح المتماثل، تصادق الأجهزة باستخدام DPS باستخدام رمز مميز لتوقيع الوصول المشترك (SAS). بالنسبة للأجهزة التي يتم توفيرها من خلال تسجيل فردي، يتم توقيع الرمز المميز باستخدام المفتاح الأساسي أو الثانوي الذي تم تعيينه في إدخال التسجيل. بالنسبة لإدارة حسابات الجهاز من خلال مجموعة تسجيل، يتم توقيع الرمز المميز باستخدام مفتاح جهاز مشتق، والذي بدوره يتم إنشاؤه باستخدام المفتاح الأساسي أو الثانوي الذي تم تعيينه في إدخال مجموعة التسجيل. يحدد الرمز المميز وقت انتهاء الصلاحية وURI للمورد الهدف.
يمكن استخدام البرنامج النصي Python التالي لإنشاء رمز SAS المميز:
from base64 import b64encode, b64decode
from hashlib import sha256
from time import time
from urllib.parse import quote_plus, urlencode
from hmac import HMAC
def generate_sas_token(uri, key, policy_name, expiry=3600):
ttl = time() + expiry
sign_key = "%s\n%d" % ((quote_plus(uri)), int(ttl))
print(sign_key)
signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())
rawtoken = {
'sr' : uri,
'sig': signature,
'se' : str(int(ttl))
}
if policy_name is not None:
rawtoken['skn'] = policy_name
return 'SharedAccessSignature ' + urlencode(rawtoken)
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= '[policy]'
print(generate_sas_token(uri, key, policy, expiry))
المكان:
[resource_uri]هو URI للمورد الذي تحاول الوصول إليه باستخدام هذا الرمز المميز. بالنسبة إلى DPS، إنه من النموذج[dps_id_scope]/registrations/[dps_registration_id]، حيث[dps_id_scope]هو نطاق المعرف لمثيل DPS الخاص بك، وهو[dps_registration_id]معرف التسجيل الذي استخدمته لجهازك.يمكنك الحصول على نطاق المعرف لمثيل DPS الخاص بك من جزء Overview للمثيل الخاص بك في مدخل Microsoft Azure، أو يمكنك استخدام الأمر az iot dps show Azure CLI (استبدل العناصر النائبة باسم مجموعة الموارد ومثيل DPS):
az iot dps show -g {resource_group_name} --name {dps_name}[device_key]هو مفتاح الجهاز المقترن بجهازك. هذا المفتاح هو إما المفتاح المحدد أو الذي تم إنشاؤه تلقائيا لك في تسجيل فردي، أو مفتاح مشتق لتسجيل مجموعة.إذا كنت تستخدم تسجيلا فرديا، فاستخدم المفتاح الأساسي الذي حفظته في استخدام تسجيل فردي.
إذا كنت تستخدم مجموعة تسجيل، فاستخدم مفتاح الجهاز المشتق الذي أنشأته في استخدام مجموعة تسجيل.
[expiry_in_seconds]هي فترة صلاحية رمز SAS المميز هذا بالثوان.[policy]هو النهج الذي يرتبط به مفتاح الجهاز. بالنسبة لتسجيل جهاز DPS، يتم ترميز النهج إلى "التسجيل".
قد تبدو مجموعة أمثلة من المدخلات لجهاز يسمى my-symkey-device بفترة صلاحية 30 يوما على هذا النحو.
uri = '0ne00111111/registrations/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 2592000
policy='registration'
تعديل البرنامج النصي لجهازك ومثيل DPS وحفظه كملف Python؛ على سبيل المثال، generate_token.py. قم بتشغيل البرنامج النصي، على سبيل المثال، python generate_token.py. يجب أن يخرج رمز SAS المميز المشابه للمثال التالي:
0ne00111111%2Fregistrations%2Fmy-symkey-device
1663952627
SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration
انسخ واحفظ السطر بأكمله الذي يبدأ ب SharedAccessSignature. هذا السطر هو رمز SAS المميز. أنت بحاجة إليها في الأقسام التالية.
لمعرفة المزيد حول استخدام رموز SAS المميزة مع DPS وهيكلها، راجع التحكم في الوصول إلى Azure IoT Hub Device Provisioning Service (DPS) باستخدام توقيعات الوصول المشتركة والرموز المميزة للأمان.
تسجيل جهازك
يمكنك استدعاء واجهة برمجة تطبيقات Register Device REST لتوفير جهازك من خلال DPS.
استخدم الأمر curl التالي:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
المكان:
-Lيخبر curl باتباع عمليات إعادة توجيه HTTP.–iيخبر curl بتضمين عناوين البروتوكول في الإخراج. هذه الرؤوس ليست ضرورية تماما، ولكنها يمكن أن تكون مفيدة.-X PUTيخبر curl أن هذا الأمر هو أمر HTTP PUT. مطلوب لاستدعاء واجهة برمجة التطبيقات هذا.-H 'Content-Type: application/json'يخبر DPS أننا ننشر محتوى JSON ويجب أن يكون 'application/json'.-H 'Content-Encoding: utf-8'يخبر DPS الترميز الذي نستخدمه لنص الرسالة. تعيين إلى القيمة المناسبة لنظام التشغيل/العميل الخاص بك؛ ومع ذلك، فإنه بشكلutf-8عام .-H 'Authorization: [sas_token]'يخبر DPS بالمصادقة باستخدام رمز SAS المميز الخاص بك. استبدل [sas_token] بالرمز المميز الذي أنشأته في إنشاء رمز SAS مميز.-d '{"registrationId": "[registration_id]"}'، المعلمة–dهي "البيانات" أو نص الرسالة التي ننشرها. يجب أن يكون JSON، في شكل "{"registrationId":"[registration_id"}". بالنسبة للحليقة ، يتم لفها في علامات اقتباس مفردة. خلاف ذلك ، تحتاج إلى الهروب من علامات الاقتباس المزدوجة في JSON.وأخيرا، المعلمة الأخيرة هي عنوان URL للنشر إليه. بالنسبة إلى DPS "العادية" (أي غير المحلية)، يتم استخدام نقطة نهاية DPS العمومية، global.azure-devices-provisioning.net:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31. يجب عليك استبدال[dps_scope_id]القيم المناسبة[registration_id].
على سبيل المثال:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' -d '{"registrationId": "my-symkey-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register?api-version=2021-06-01
توفر المكالمة الناجحة استجابة مشابهة للمثال التالي:
HTTP/1.1 202 Accepted
Date: Wed, 31 Aug 2022 22:02:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register
Retry-After: 3
x-ms-request-id: a021814f-0cf6-4ce9-a1e9-ead7eb5118d9
Strict-Transport-Security: max-age=31536000; includeSubDomains
{"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550","status":"assigning"}
تحتوي الاستجابة على معرف عملية وحالة. في هذه الحالة، يتم تعيين الحالة إلى assigning. من المحتمل أن يكون تسجيل DPS عملية طويلة الأمد، لذلك يتم ذلك بشكل غير متزامن. عادة ما تقوم باستطلاع للحالة باستخدام واجهة برمجة تطبيقات REST للبحث عن حالة العملية لتحديد وقت تعيين جهازك أو ما إذا كان هناك عطل.
قيم الحالة الصالحة ل DPS هي:
assignedتشير قيمة الإرجاع من استدعاء الحالة إلى IoT Hub الذي تم تعيين الجهاز له.:assigning: لا تزال العملية قيد التشغيل.disabled: تم تعطيل سجل التسجيل في DPS، لذلك لا يمكن تعيين الجهاز.failed: فشل التعيين. يتم إرجاع وerrorCodeerrorMessageفيregistrationStateسجل داخل الاستجابة للإشارة إلى ما فشل.unassigned
لاستدعاء واجهة برمجة تطبيقات البحث عن حالة العملية، استخدم الأمر curl التالي:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31
يمكنك استخدام نفس نطاق المعرف ومعرف التسجيل والرمز المميز SAS كما فعلت في طلب تسجيل الجهاز . استخدم معرف العملية الذي تم إرجاعه في استجابة جهاز التسجيل.
على سبيل المثال:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/operations/5.316aac5bdc130deb.f4f1828c-4dab-4ca9-98b2-dfc63b5835d6?api-version=2021-06-01
يعرض الإخراج التالي الاستجابة لجهاز تم تعيينه بنجاح. لاحظ أن الخاصية status هي assigned وأن الخاصية registrationState.assignedHub معينة إلى مركز IoT حيث تم توفير الجهاز.
HTTP/1.1 200 OK
Date: Wed, 31 Aug 2022 22:05:23 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: ffb98d42-023e-4e75-afb0-1807ff091cbb
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550",
"status":"assigned",
"registrationState":{
"registrationId":"my-symkey-device",
"createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
"assignedHub":"MyExampleHub.azure-devices.net",
"deviceId":"my-symkey-device",
"status":"assigned",
"substatus":"initialAssignment",
"lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
"etag":"IjY5MDAzNTUyLTAwMDAtMDMwMC0wMDAwLTYzMGZkYThhMDAwMCI="
}
}
إرسال رسالة بيانات تتبع الاستخدام
قبل أن تتمكن من إرسال رسالة بيانات تتبع الاستخدام، تحتاج إلى إنشاء رمز SAS المميز لمركز IoT الذي تم تعيين الجهاز إليه. يمكنك توقيع هذا الرمز المميز باستخدام نفس المفتاح الأساسي أو مفتاح الجهاز المشتق الذي استخدمته لتوقيع رمز SAS المميز لمثيل DPS الخاص بك.
إنشاء رمز SAS المميز لمركز IoT الخاص بك
لإنشاء رمز SAS المميز، يمكنك تشغيل نفس التعليمات البرمجية التي قمت بها لإنشاء الرمز المميز لمثيل DPS الخاص بك مع التغييرات التالية:
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= None
المكان:
[resource_uri]هو URI للمورد الذي تحاول الوصول إليه باستخدام هذا الرمز المميز. بالنسبة لجهاز يرسل رسائل إلى مركز IoT، فهو من النموذج[iot-hub-host-name]/devices/[device-id].بالنسبة إلى
[iot-hub-host-name]، استخدم اسم مضيف IoT Hub الذي تم إرجاعه في الخاصيةassignedHubفي القسم السابق.بالنسبة إلى
[device-id]، استخدم معرف الجهاز الذي تم إرجاعه في الخاصيةdeviceIdفي القسم السابق.
[device_key]هو مفتاح الجهاز المقترن بجهازك. هذا المفتاح هو إما المفتاح المحدد أو الذي تم إنشاؤه تلقائيا لك في تسجيل فردي، أو مفتاح مشتق لتسجيل مجموعة. (إنه نفس المفتاح الذي استخدمته سابقا لإنشاء رمز مميز ل DPS.)إذا كنت تستخدم تسجيلا فرديا، فاستخدم المفتاح الأساسي الذي حفظته في استخدام تسجيل فردي.
إذا كنت تستخدم مجموعة تسجيل، فاستخدم مفتاح الجهاز المشتق الذي أنشأته في استخدام مجموعة تسجيل.
[expiry_in_seconds]هي فترة صلاحية رمز SAS المميز هذا بالثوان.policy=Noneلا يلزم نهج لجهاز يرسل بيانات تتبع الاستخدام إلى مركز IoT، لذلك يتم تعيين هذه المعلمة إلىNone.
قد تبدو مجموعة أمثلة من المدخلات لجهاز يسمى my-symkey-device الإرسال إلى IoT Hub المسمى MyExampleHub بفترة صلاحية رمز مميز لمدة ساعة واحدة كما يلي:
uri = 'MyExampleHub.azure-devices.net/devices/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 3600
policy= None
يظهر الإخراج التالي نموذج رمز SAS المميز لهذه المدخلات:
SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026
لمعرفة المزيد حول إنشاء رموز SAS المميزة ل IoT Hub، بما في ذلك مثال التعليمات البرمجية بلغات البرمجة الأخرى، راجع التحكم في الوصول إلى IoT Hub باستخدام توقيعات الوصول المشتركة.
إشعار
كملاءمة، يمكنك استخدام الأمر Azure CLI az iot hub generate-sas-token للحصول على رمز SAS المميز لجهاز مسجل مع مركز IoT. على سبيل المثال، يقوم الأمر التالي بإنشاء رمز SAS مميز بمدة ساعة واحدة. بالنسبة إلى {iothub_name}، تحتاج فقط إلى الجزء الأول من اسم المضيف ، على سبيل المثال ، MyExampleHub.
az iot hub generate-sas-token -d {device_id} -n {iothub_name}
إرسال البيانات إلى مركز IoT
يمكنك استدعاء واجهة برمجة تطبيقات REST لحدث إرسال جهاز IoT Hub لإرسال بيانات تتبع الاستخدام إلى الجهاز.
استخدم الأمر curl التالي:
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
المكان:
-X POSTيخبر curl أن هذا الأمر هو أمر HTTP POST. مطلوب لاستدعاء واجهة برمجة التطبيقات هذا.-H 'Content-Type: application/json'يخبر IoT Hub أننا ننشر محتوى JSON ويجب أن يكون "application/json".-H 'Content-Encoding: utf-8'يخبر IoT Hub الترميز الذي نستخدمه لنص الرسالة. تعيين إلى القيمة المناسبة لنظام التشغيل/العميل الخاص بك؛ ومع ذلك، فإنه بشكلutf-8عام .-H 'Authorization: [sas_token]'يخبر IoT Hub بالمصادقة باستخدام رمز SAS المميز الخاص بك. استبدل[sas_token]بالرمز المميز الذي أنشأته لمركز IoT المعين.-d '{"temperature": 30}'، المعلمة–dهي "البيانات" أو نص الرسالة التي ننشرها. بالنسبة لهذه المقالة، نقوم بنشر نقطة بيانات درجة حرارة واحدة. تم تحديد نوع المحتوى على أنه application/json، لذلك، لهذا الطلب، النص الأساسي هو JSON. بالنسبة للحليقة ، يتم لفها في علامات اقتباس مفردة. خلاف ذلك ، تحتاج إلى الهروب من علامات الاقتباس المزدوجة في JSON.المعلمة الأخيرة هي عنوان URL للنشر إليه. بالنسبة إلى واجهة برمجة تطبيقات حدث إرسال الجهاز، يكون عنوان URL هو:
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13.استبدل
[assigned_iot_hub_name]باسم مركز IoT الذي تم تعيين جهازك إليه.استبدل
[device_id]بمعرف الجهاز الذي تم تعيينه عند تسجيل جهازك. بالنسبة للأجهزة التي يتم توفيرها من خلال مجموعات التسجيل، يكون معرف الجهاز هو معرف التسجيل. بالنسبة إلى التسجيلات الفردية، يمكنك، اختياريا، تحديد رقم تعريف جهاز مختلف عن معرف التسجيل في إدخال التسجيل.
على سبيل المثال، لجهاز بمعرف my-symkey-device جهاز لإرسال نقطة بيانات تتبع الاستخدام إلى مركز IoT يسمى MyExampleHub:
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-symkey-device/messages/events?api-version=2020-03-13
المكالمة الناجحة لها استجابة مشابهة للمثال التالي:
HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 9e278582-3561-417b-b807-76426195920f
Date: Wed, 14 Sep 2022 00:32:53 GMT
الخطوات التالية
لمعرفة المزيد حول إثبات المفتاح المتماثل، راجع إثبات المفتاح المتماثل.
لمعرفة المزيد حول الرموز المميزة SAS وهيكلها، راجع التحكم في الوصول إلى Azure IoT Hub Device Provisioning Service (DPS) باستخدام توقيعات الوصول المشتركة والرموز المميزة للأمان.