كيفية نقل الحمولات بين الأجهزة وDPS

الأجهزة التي تسجل مع DPS مطلوبة لتوفير معرف تسجيل وبيانات اعتماد صالحة (مفاتيح أو شهادات X.509) عند التسجيل. ومع ذلك، قد تكون هناك حلول أو سيناريوهات IoT تكون هناك حاجة إلى بيانات إضافية من الجهاز. على سبيل المثال، قد يستخدم خطاف ويب نهج التخصيص المخصص معلومات مثل رقم طراز الجهاز لتحديد مركز IoT لتوفير الجهاز إليه. وبالمثل، قد يتطلب الجهاز بيانات إضافية في استجابة التسجيل لتسهيل منطقه من جانب العميل. يوفر DPS إمكانية الأجهزة لإرسال واستقبال حمولة اختيارية عند التسجيل.

متى يتم استخدامها

السيناريوهات الشائعة لإرسال الحمولات الاختيارية هي:

  • يمكن لنهج التخصيص المخصصة استخدام حمولة الجهاز للمساعدة في تحديد مركز IoT لجهاز أو تعيين التوأم الأولي الخاص به. على سبيل المثال، قد ترغب في تخصيص أجهزتك استنادا إلى طراز الجهاز. في هذه الحالة، يمكنك تكوين الجهاز للإبلاغ عن معلومات النموذج الخاص به عند تسجيله. سيقوم DPS بتمرير حمولة الجهاز إلى إخطار على الويب المخصص للتخصيص. ثم يمكن لخطاف الويب الخاص بك تحديد مركز IoT الذي سيتم توفير الجهاز له استنادا إلى معلومات نموذج الجهاز. إذا لزم الأمر، يمكن لخطاف الويب أيضا إرجاع البيانات مرة أخرى إلى الجهاز ككائن JSON في استجابة خطاف الويب. لمعرفة المزيد، راجع استخدام حمولات الجهاز في التخصيص المخصص.

  • قد تستخدم أجهزة IoT أجهزة التوصيل و التشغيل (PnP) الحمولة لإرسال معرف النموذج عند التسجيل مع DPS. يمكنك العثور على أمثلة لهذا الاستخدام في عينات PnP في SDK أو نماذج المستودعات. على سبيل المثال، منظم الحرارة C# PnP أو Node.js وحدة تحكم درجة حرارة PnP.

  • يجب أن تتبع أجهزة IoT Central التي تتصل من خلال DPS اصطلاحات IoT أجهزة التوصيل و التشغيل وإرسال معرف النموذج عند التسجيل. يستخدم IoT Central معرف النموذج لتعيين الجهاز إلى قالب الجهاز الصحيح. لمعرفة المزيد، راجع تنفيذ الجهاز وأفضل الممارسات ل IoT Central.

يرسل الجهاز حمولة البيانات إلى DPS

عندما يتصل جهازك بجهاز التسجيل للتسجيل مع DPS، يمكن أن يتضمن بيانات إضافية في خاصية الحمولة. على سبيل المثال، يظهر JSON التالي النص الأساسي لطلب التسجيل باستخدام شهادة TPM:

{ 
    "registrationId": "mydevice", 
    "tpm": { 
        "endorsementKey": "xxxx-device-endorsement-key-xxxx", 
        "storageRootKey": "xxx-device-storage-root-key-xxxx" 
    }, 
    "payload": { A JSON object that contains your additional data } 
} 

يجب أن تكون خاصية الحمولة كائن JSON ويمكن أن تحتوي على أي بيانات ذات صلة بحل أو سيناريو IoT الخاص بك.

يقوم DPS بإرجاع البيانات إلى الجهاز

يمكن ل DPS إرجاع البيانات مرة أخرى إلى الجهاز في استجابة التسجيل. حاليا، يتم استخدام هذه الميزة حصريا في سيناريوهات التخصيص المخصصة. إذا كان خطاف ويب نهج التخصيص المخصص يحتاج إلى إرجاع البيانات إلى الجهاز، فإنه يمكن تمرير البيانات مرة أخرى ككائن JSON في استجابة الإخطار على الويب. سيقوم DPS بعد ذلك بتمرير تلك البيانات مرة أخرى في خاصية registrationState.payload في استجابة جهاز التسجيل. على سبيل المثال، يظهر JSON التالي نص استجابة ناجحة للتسجيل باستخدام شهادة TPM.

{
   "operationId":"5.316aac5bdc130deb.b1e02da8-xxxx-xxxx-xxxx-7ea7a6b7f550",
   "status":"assigned",
   "registrationState":{
      "registrationId":"my-tpm-device",
      "createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
      "assignedHub":"sample-iot-hub-1.azure-devices.net",
      "deviceId":"my-tpm-device",
      "status":"assigned",
      "substatus":"initialAssignment",
      "lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
      "etag":"xxxx-etag-value-xxxx",
      "tpm": {"authenticationKey": "xxxx-encrypted-authentication-key-xxxxx"},
      "payload": { A JSON object that contains the data returned by the webhook }
   }
}

يجب أن تكون خاصية الحمولة كائن JSON ويمكن أن تحتوي على أي بيانات ذات صلة بحل أو سيناريو IoT الخاص بك.

دعم عدة تطوير البرامج

تتوفر هذه الميزة في C وC# وJAVA وSDKs للعميل Node.js. لمعرفة المزيد حول Azure IoT SDKs المتوفرة ل IoT Hub وخدمة توفير جهاز IoT Hub، راجع Microsoft Azure IoT SDKs.

دعم IoT Edge

بدءا من الإصدار 1.4، يدعم IoT Edge إرسال حمولة بيانات مضمنة في ملف JSON. تتم قراءة ملف الحمولة وإرساله إلى DPS عندما يكون الجهاز (إعادة) مسجلا، والذي يحدث عادة عند التشغيل iotedge config apply للمرة الأولى. يمكنك أيضا فرض إعادة قراءته وتسجيله باستخدام أمر iotedge system reprovisionإعادة توفير CLI .

فيما يلي مثال على القصاصة البرمجية حيث /etc/aziot/config.toml يتم تعيين الخاصية payload إلى مسار ملف JSON محلي.

   [provisioning]
   source = "dps"
   global_endpoint = "https://global.azure-devices-provisioning.net"
   id_scope = "0ab1234C5D6"

   # Uncomment to send a custom payload during DPS registration
   payload = { uri = "file:///home/aziot/payload.json" }
 

يمكن أن يحتوي ملف الحمولة (في هذه الحالة /home/aziot/payload.json) على أي JSON صالح مثل:

{
    "modelId": "dtmi:com:example:edgedevice;1"
}

الخطوات التالية