البرنامج التعليمي: استخدام إثراء رسائل Azure IoT Hub

إثراءات الرسائل هي قدرة Azure IoT Hub على ختم الرسائل بمعلومات إضافية قبل إرسال الرسائل إلى نقطة النهاية المحددة. من أسباب استخدام إثراء الرسائل هو تضمين البيانات التي يمكن استخدامها لتبسيط معالجة انتقال البيانات من الخادم. على سبيل المثال، يمكن أن يؤدي إثراء رسائل الجهاز بعلامة الجهاز المزدوجة إلى تقليل الحمل على العملاء لإجراء مكالمات API المزدوجة للجهاز للحصول على هذه المعلومات. لمزيد من المعلومات، راجع نظرة عامة على إثراء الرسائل.

في الجزء الأول من هذا البرنامج التعليمي، رأيت كيفية إنشاء نقاط نهاية مخصصة وتوجيه الرسائل إلى خدمات Azure الأخرى. في هذا البرنامج التعليمي، سترى كيفية إنشاء وتكوين الموارد الإضافية اللازمة لاختبار تحسينات الرسائل لمركز إنترنت الأشياء. تتضمن الموارد حاوية تخزين ثانية لحساب تخزين موجود (تم إنشاؤه في الجزء الأول من البرنامج التعليمي) للاحتفاظ بالرسائل المخصّصة ومسار رسالة لإرسالها هناك. بعد الانتهاء من التكوينات الخاصة بتوجيه الرسائل وإثراء الرسائل، يمكنك استخدام تطبيق لإرسال الرسائل إلى مركز IoT. ثم يقوم المركز بتوجيهها إلى كل من حاويتي التخزين. يتم إثراء الرسائل المرسلة إلى نقطة النهاية لحاوية التخزين التي تم إثراؤها فقط.

في هذا البرنامج التعليمي، تنفذ المهام التالية:

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

المتطلبات الأساسية

لا توجد متطلبات أساسية أخرى لمدخل Microsoft Azure.

قم بإنشاء حاوية ثانية في حساب التخزين الخاص بك

في الجزء الأول من هذا البرنامج التعليمي، قمت بإنشاء حساب تخزين وحاوية للرسائل التي تم توجيهها. الآن يجب عليك إنشاء حاوية ثانية للرسائل التي تم إثراؤها.

  1. افتح مدخل Microsoft Azure وابحث عن Storage accounts.

  2. حدد الحساب الذي أنشأته سابقًا.

  3. في قائمة حساب التخزين، حدد Containers من قسم Data storage.

  4. حدد الحاويات لإنشاء حاوية جديدة.

    لقطة شاشة لإنشاء حاوية تخزين.

  5. قم بتسمية الحاوية enriched، وحدد Create.

توجيه الرسائل إلى نقطة نهاية ثانية

إنشاء نقطة نهاية ثانية وتوجيه للرسائل التي تم إثراؤها.

  1. في مدخل Microsoft Azure، انتقل إلى مركز IoT.

  2. في قائمة الموارد ضمن Hub settings، حدد Message routing ثم حدد Add.

    لقطة شاشة تعرض موقع الزر إضافة، لإضافة مسار جديد في مركز IoT.

  3. في علامة التبويب Endpoint ، قم بإنشاء نقطة نهاية تخزين عن طريق توفير المعلومات التالية:

    المعلمة القيمة
    نوع نقطة النهاية اختار التخزين .
    اسم نقطة النهاية أدخل ContosoStorageEndpointEnriched.
    حاوية تخزين Azure حدد "Pick a container". اتبع المطالبات لتحديد حساب التخزين والحاوية التي قمت بإنشائها في القسم السابق.
    الترميز حدد JSON. إذا كان هذا الحقل رمادي اللون، فإن منطقة حساب التخزين لا تدعم JSON. في هذه الحالة، تابع مع AVROالافتراضي.

    لقطة شاشة تعرض اختيار حاوية لنقطة نهاية.

  4. اقبل القيم الافتراضية لبقية المعلمات وحدد Create + next.

  5. تابع إنشاء المسار الجديد، الآن بعد أن أضفت نقطة نهاية التخزين. قدم المعلومات التالية لمسار الاختبار الجديد:

    المعلمة القيمة
    الاسم ContosoStorageRouteEnriched
    مصدر البيانات تحقق من تحديد رسائل بيانات تتبع استخدام الجهاز من القائمة المنسدلة.
    تمكين المسار تحقق من تعيين هذا الحقل إلى enabled.
    استعلام التوجيه أدخل level="storage" مثل سلسة الاستعلام.

    لقطة شاشة تعرض حفظ معلومات توجيه الاستعلام.

  6. حدد Create + add enrichments.

إضافة إثراء الرسائل إلى نقطة النهاية الجديدة

إنشاء ثلاث عمليات إثراء للرسائل التي سيتم توجيهها إلى حاوية التخزين التي تم إثراؤها.

  1. في علامة التبويب Enrichment في معالج Add a route ، أضف ثلاث عمليات إثراء رسائل للرسائل التي تنتقل إلى نقطة النهاية لحاوية التخزين المسماة enriched.

    أضف هذه القيم كإثراء رسائل لنقطة نهاية ContosoStorageEndpointEnriched:

    الاسم القيمة‬
    myIotHub $hubname
    DeviceLocation $twin.tags.location (بافتراض أن توأم الجهاز لديه علامة موقع)
    customerID 6ce345b8-1e4a-411e-9398-d34587459a3a

    عند الانتهاء، يجب أن تبدو عمليات الإثراء مشابهة لهذه الصورة:

    لقطة شاشة للجدول مع إضافة جميع التخصيب.

  2. حدد Add لإضافة إثراء الرسائل.

لديك الآن عمليات إثراء الرسائل التي تم إعدادها لجميع الرسائل التي تم توجيهها إلى نقطة النهاية التي أنشأتها للرسائل التي تم إثراؤها. إذا كنت لا تريد إضافة علامة موقع إلى توأم الجهاز، يمكنك التخطي إلى قسم Test message enrichments لمتابعة البرنامج التعليمي.

إضافة علامة الموقع للجهاز المزدوج

يحدد أحد عمليات إثراء الرسائل التي تم تكوينها على مركز IoT مفتاح DeviceLocation بقيمته التي يحددها المسار المزدوج للجهاز التالي: $twin.tags.location. إذا لم يكن لدى الجهاز المزدوج علامة موقع، فسيتم ختم مسار التوأم، $twin.tags.locationكسلسلة لمفتاح DeviceLocation في إثراء الرسائل.

اتبع هذه الخطوات لإضافة علامة موقع إلى توأم جهازك:

  1. انتقل إلى IoT Hub الخاص بك في مدخل Microsoft Azure.

  2. حدد الأجهزة في قائمة التنقل في مركز IoT، ثم حدد جهازك.

  3. حدد علامة التبويب Device twin أعلى صفحة الجهاز وأضف السطر التالي قبل قوس الإغلاق أسفل الجهاز المزدوج مباشرةً. ثم حدد حفظ.

      , "tags": {"location": "Plant 43"}
    

    لقطة شاشة لإضافة علامة الموقع إلى الجهاز المزدوج في مدخل Microsoft Azure

تلميح

انتظر حوالي خمس دقائق قبل المتابعة إلى القسم التالي. قد يستغرق الأمر ما يصل إلى هذا الوقت حتى تنعكس تحديثات الجهاز المزدوج في قيم إثراء الرسائل.

لمعرفة المزيد حول كيفية التعامل مع المسارات المزدوجة للأجهزة من خلال إثراءات الرسائل، راجع قيود إثراءات الرسائل. لمعرفة المزيد حول الأجهزة المزدوجة، راجع التعرف على الأجهزة المزدوجة واستخدامها في IoT Hub.

اختبار إثراء الرسائل

الآن بعد أن تم تكوين تحسينات الرسائل لنقطة نهاية ContosoStorageEndpointEnriched، قم بتشغيل تطبيق الجهاز المحاكى لإرسال الرسائل إلى مركز إنترنت الأشياء. عند هذه النقطة، تم إعداد توجيه الرسائل على النحو التالي:

  • لن يتم إثراء الرسائل التي تم توجيهها إلى نقطة نهاية التخزين التي أنشأتها في الجزء الأول من البرنامج التعليمي وسيتم تخزينها في حاوية التخزين التي أنشأتها بعد ذلك.

  • سيتم إثراء الرسائل الموجهة إلى نقطة نهاية التخزين ContosoStorageEndpointEnriched وتخزينها في حاوية التخزين الثرية.

إذا لم تكن لا تزال تقوم بتشغيل تطبيق وحدة تحكم SimulatedDevice من الجزء الأول من هذا البرنامج التعليمي، فقم بتشغيله مرة أخرى:

تلميح

إذا كنت تتبع خطوات Azure CLI لهذا البرنامج التعليمي، فقم بتشغيل نموذج التعليمات البرمجية في جلسة منفصلة. بهذه الطريقة، يمكنك السماح لمواصلة تشغيل نموذج التعليمات البرمجية أثناء اتباع باقي خطوات CLI.

  1. في المجلد النموذجي، انتقل إلى /iot-hub/Tutorials/Routing/SimulatedDevice/ المجلد.

  2. يجب أن تظل تعريفات المتغيرات التي قمت بتحديثها من قبل صالحة، ولكن إذا لم يكن صحيحًا، فقم بتحريرها في Program.cs الملف:

    1. ابحث عن تعريفات المتغير في أعلى فئة البرنامج. قم بتحديث المتغيرات التالية بمعلوماتك الخاصة:

      • s_myDeviceId: معرف الجهاز الذي قمت بتعيينه عند تسجيل الجهاز في مركز IoT.
      • s_iotHubUri: اسم مضيف مركز IoT الخاص بك، والذي يأخذ التنسيق IOTHUB_NAME.azure-devices.net.
      • s_deviceKey: المفتاح الأساسي للجهاز الموجود في معلومات هوية الجهاز.
    2. احفظ الملف وأغلقه.

  3. شغل التعليمات البرمجية النموذجية:

    dotnet run
    

بعد مغادرة تطبيق وحدة التحكم للتشغيل لبضع دقائق، اعرض البيانات:

  1. في Azure portal، انتقل إلى حساب التخزين الخاص بك.

  2. حدد مستعرض التخزين من قائمة التنقل. حدد حاويات Blob لمشاهدة الحاويتين اللتين أنشأتهما خلال هذه البرامج التعليمية.

    لقطة شاشة تعرض حاويات البيانات الثنائية الكبيرة في حساب التخزين.

الرسائل في الحاوية المسماة enriched تحتوي على إثراء الرسالة في الرسائل. الرسائل الموجودة في الحاوية التي أنشأتها سابقًا تحتوي على رسائل أولية بدون إضافات. انتقل لأسفل إلى الحاوية التي تم إثراؤها حتى تصل إلى أسفل ثم افتح ملف الرسائل الأحدث. ثم قم بنفس الشيء للحاوية الأخرى للتحقق من إثراء واحدة والأخرى ليست كذلك.

عندما تنظر إلى الرسائل التي تم تحسينها، يجب أن ترى "myIotHub"مع اسم المركز والموقع ومعرف العميل، على النحو التالي:

{
  "EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z",
  "Properties":
  {
    "level":"storage",
    "myIotHub":"{your hub name}",
    "DeviceLocation":"Plant 43",
    "customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a"
  },
  "SystemProperties":
  {
    "connectionDeviceId":"Contoso-Test-Device",
    "connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
    "connectionDeviceGenerationId":"636930642531278483",
    "enqueuedTime":"2019-05-10T06:06:32.7220000Z"
  },"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9"
}

تنظيف الموارد

لإزالة جميع الموارد التي قمت بإنشائها في كلا الجزأين من هذا البرنامج التعليمي، احذف مجموعة الموارد. يؤدي هذا الإجراء إلى حذف جميع الموارد الموجودة داخل المجموعة. إذا كنت لا تريد حذف مجموعة الموارد بأكملها، يمكنك تحديد موارد فردية داخل لحذفها.

  1. في مدخل Microsoft Azure، انتقل إلى مجموعة الموارد التي تحتوي على مركز IoT وحساب التخزين لهذا البرنامج التعليمي.
  2. راجع جميع الموارد الموجودة في مجموعة الموارد لتحديد الموارد التي تريد تنظيفها.
    • إذا كنت تريد حذف كل المورد، فحدد حذف مجموعة الموارد.
    • إذا كنت تريد حذف مورد معين فقط، فاستخدم خانات الاختيار الموجودة بجانب كل اسم مورد لتحديد تلك التي تريد حذفها. ثم حدد حذف.

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

في هذا البرنامج التعليمي، قمت بتكوين واختبار تحسينات الرسائل لرسائل IoT Hub أثناء توجيهها إلى نقطة نهاية.

لمزيد من المعلومات حول إثراء الرسائل، راجع نظرة عامة على إثراء الرسائل.

لمعرفة المزيد حول IoT Hub، تابع إلى البرنامج التعليمي التالي.