برنامج تعليمي: تحديث الجهاز Azure IoT Hub باستخدام Raspberry Pi 3 B + صورة مرجعية

يدعم Device Update لـ Azure IoT Hub التحديثات المستندة إلى الصور والقائمة على الحزم والبرامج النصية.

تتيح تحديثات الصور مستوى أعلى من الثقة في الحالة النهائية للجهاز. يكون من الأسهل عادةً تكرار نتائج تحديث الصورة بين بيئة ما قبل الإنتاج وبيئة الإنتاج لأنها لا تشكل نفس التحديات مثل الحزم وتبعياتها. يمكنك أيضًا اعتماد نموذج تجاوز الفشل A / B بسهولة، بسبب طبيعتها الذرية.

يرشدك هذا البرنامج التعليمي خلال الخطوات لإكمال تحديث شامل قائم على الصورة باستخدام Device Update لـIoT Hub على لوحة Raspberry Pi 3 B +.

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

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

ملاحظة

تم التحقق من صحة تحديثات الصور في هذا البرنامج التعليمي على لوحة Raspberry Pi B3.

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

إذا لم تكن قمت بذلك بالفعل، فأنشئ حساب Device Update ومثيل وكون مركز IoT. يحتاج هذا البرنامج التعليمي إلى توصيل الجهاز عبر اتصال ethernet.

قم بتنزيل الملفات في الأصول على صفحة إصدارات GitHub لتحديث الجهاز. يحتوي Tutorial_RaspberryPi.zip على جميع الملفات المطلوبة لبرنامج تعليمي.

إنشاء جهاز في IoT Hub والحصول على سلسلة اتصال

الآن، أضف الجهاز إلى مركز IoT. من داخل مركز Azure IoT، سيتم إنشاء سلسلة اتصال للجهاز.

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

  2. في الجزء الأيسر، حدد ⁧⁩Devices⁧⁩. ثم حدد New.

  3. ضمن Device ID، أدخل اسما للجهاز. تأكد من تحديد خانة الاختيار Autogenerate keys.

  4. حدد ⁧⁩حفظ⁧⁩. في الصفحة Devices يجب أن يكون الجهاز الذي أنشأته في القائمة.

  5. احصل على سلسلة اتصال الجهاز بالانتقال إلى طريقة عرض الجهاز، وحدد أيقونة النسخ بجوار سلسلة الاتصال الأساسية.

  6. الصق الأحرف المنسوخة في مكان ما لاستخدامها فيما بعد في الخطوات التالية:

    ⁩هذه السلسلة المنسوخة هي سلسلة اتصالك بالجهاز.⁩

ملاحظة

يستخدم هذا البرنامج التعليمي سلسلة اتصال الجهاز للمصادقة والاتصال ب IoT Hub لتسهيل الإعداد. بالنسبة لسيناريوهات الإنتاج، نوصي باستخدام هوية الوحدة والاستفادة من AIS (خدمة هوية IoT) لتوفير الأجهزة. التعرف على المزيد

إعداد Raspberry Pi

نحن نقدم ملفات الصور والتحديثات الأساسية في الأصول في صفحة إصدارات GitHub لتحديث الجهاز. يحتوي Tutorial_RaspberryPi.zip على جميع الملفات المطلوبة لبرنامج تعليمي. ملف .wic هو الصورة الأساسية التي يمكنك الوميض عليها إلى لوحة Raspberry Pi 3 B+. ملف swUpdate(.swu) والبرنامج النصي المخصص swupdate والبيان هي ملفات التحديث التي يمكنك استيرادها من خلال Device Update ل IoT Hub.

تستخدم هذه الصورة الأساسية بنية Yocto (استنادا إلى إصدار 3.4.4) مع:

  • SWUpdate الذي يمكن تحديث القسم المزدوج باستخدام DU
  • عامل «تحديث الجهاز»

لمعرفة المزيد حول طبقات Yocto المستخدمة، راجع تحديث الجهاز Yocto GitHub.

يمكنك استخدام أداة وميض نظام التشغيل المفضلة لديك لتثبيت الصورة الأساسية لتحديث الجهاز (adu-base-image) على بطاقة SD التي سيتم استخدامها في جهاز Raspberry Pi 3 B+. فيما يلي إرشادات لاستخدام bmaptool للوميض إلى بطاقة SD.

استخدام bmaptool لاستخدام بطاقة SD

  1. قم بتثبيت الأداة bmaptool المساعدة، إذا لم تكن قد فعلت ذلك بالفعل.

    sudo apt-get install bmap-tools
    
  2. حدد مسار بطاقة SD في /dev. يجب أن يبدو المسار مثل /dev/sd* أو /dev/mmcblk*. يمكنك استخدام الأداة المساعدة dmesg للمساعدة في تحديد المسار الصحيح.

  3. قم بإلغاء تحميل جميع الأقسام المثبتة قبل الوميض.

    sudo umount /dev/<device>
    
  4. تأكد من أن لديك أذونات الكتابة إلى الجهاز.

    sudo chmod a+rw /dev/<device>
    
  5. اختياري: للحصول على وميض أسرع، قم بتنزيل ملف bimap وملف الصورة وضعه في نفس الدليل.

  6. فلاش بطاقة SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

يخضع تحديث الجهاز لبرنامج Azure IoT Hub لشروط الترخيص التالية:

اطلع على شروط الترخيص قبل استخدام العامل. يعد تثبيتك واستخدامك قبولاً لهذه الشروط. في حالة عدم موافقتك على شروط الترخيص، فلا تستخدم Device Update لعامل IoT Hub.

تكوين عامل Device Update على Raspberry Pi

  1. تأكد من أن Raspberry Pi3 متصل بالشبكة.

  2. SSH في Raspberry Pi 3 باستخدام الأمر التالي في نافذة PowerShell:

      ssh raspberrypi3 -l root
    
  3. يجب أن تكون ملفات تكوين DU (du-config.json و du-diagnostics-config.json) على الجهاز بحيث يتم تكوين Device Update ل IoT Hub بشكل صحيح.

    1. لإنشاء الملف أو فتحه du-config.json للتحرير باستخدام:
      nano /adu/du-config.json
    
    1. بعد تشغيل الأمر، يجب أن تشاهد محررًا مفتوحًا مع الملف. إذا لم تقم بإنشاء الملف من قبل، فسيكون فارغًا. الآن انسخ محتويات du-config.json أدناه، واستبدل التكوينات المطلوبة لجهازك. ثم استبدل مثال سلسلة الاتصال بسلسلة الجهاز الذي قمت بإنشائه في الخطوات السابقة.

      du-config.json

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
    1. بعد الانتهاء من التغييرات، حدد Ctrl+X للخروج من المحرر. ثم أدخل y لحفظ التغييرات.
  4. الآن تحتاج إلى إنشاء الملف du-diagnostics-config.json باستخدام أوامر مماثلة.

    1. ابدأ بإنشاء الملف أو فتحه du-diagnostics-config.json للتحرير باستخدام:
      nano /adu/du-diagnostics-config.json
    
    1. انسخ محتويات du-diagnostics-config.json المتوفرة أدناه، واستبدل أي تكوينات تختلف عن البنية الافتراضية. يمثل مثال ملف du-diagnostics-config.json مواقع السجل الافتراضية لتحديث الجهاز لـIoT. تحتاج فقط إلى تغيير هذه القيم الافتراضية إذا كان التنفيذ الخاص بك يختلف.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. بعد الانتهاء من التغييرات، حدد Ctrl+X للخروج من المحرر. ثم أدخل y لحفظ التغييرات.
  5. استخدم الأمر التالي لإظهار الملفات الموجودة في الدليل /adu/. يجب أن تشاهد كلا ملفي التكوين files.du-diagnostics-config.json للتحرير باستخدام:

      ls -la /adu/
    
  6. أعد تشغيل البرنامج الخفي لنظام تحديث الجهاز للتأكد من تطبيق التكوينات. استخدم الأمر التالي داخل المحطة الطرفية التي سجلت الدخول إلى raspberrypi:

      systemctl start deviceupdate-agent
    
  7. تحقق من أن العامل مباشر باستخدام الأمر التالي:

      systemctl status deviceupdate-agent
    

    يجب أن ترى الحالة تظهر على أنها حية وأخضر.

قم بتوصيل الجهاز في Device Update لمركز IoT

  1. في الجزء الأيسر، حدد ⁧⁩Devices⁧⁩.

  2. حدد الارتباط باسم جهازك.

  3. في أعلى الصفحة، حدد Device Twin.

  4. ضمن قسم التقارير من خصائص Device Twin، ابحث عن إصدار Linux kernel.

    بالنسبة للجهاز الجديد، الذي لم يتلق تحديثًا من Device Update، فإن قيمة DeviceManagement: DeviceInformation: 1.swVersion ستمثل إصدار البرنامج الثابت الذي يتم تشغيله على الجهاز. بعد تطبيق التحديث على الجهاز، سيستخدم Device Update قيمة الخاصية AzureDeviceUpdateCore: ClientMetadata: 4.installedUpdateId لتمثيل إصدار البرنامج الثابت الذي يتم تشغيله على الجهاز.

  5. تحتوي ملفات الصور الأساسية والمحدثة على رقم إصدار في اسم الملف.

     adu-<image type>-image-<machine>-<version number>.<extension>
    

    استخدم رقم الإصدار هذا في قسم "استيراد التحديث" لاحقًا.

إضافة علامة مجموعة تحديث الجهاز إلى جهازك

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

  2. في الجزء الأيمن، ضمن Devices، ابحث عن جهاز IoT وانتقل إلى الجهاز المزدوج أو الوحدة النمطية المزدوجة.

  3. في الوحدة النمطية المزدوجة لوحدة عامل تحديث الجهاز، احذف أي قيم علامة Device Update موجودة عن طريق تعيينها على قيمة خالية. إذا كنت تستخدم هوية الجهاز مع عامل Device Update، فأجري هذه التغييرات على الجهاز المزدوج.

  4. أضف قيمة علامة Device Update الجديدة، كما هو موضح:

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

    لقطة شاشة تعرض التوأم مع معلومات العلامة.

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

أستورد تحديث

  1. قم بتنزيل نموذج بيان البرنامج التعليمي ونموذج التحديث (ملف.swu) ونموذج البرنامج النصي A/B من Tutorial_RaspberryPi.zip ضمن أصول الإصدار لأحدث عامل.

  2. سجّل الدخول إلى مدخل Microsoft Azure وانتقل إلى مركز IoT باستخدام Device Update. في الجزء الأيسر، ضمنAutomatic Device Management، حدد Updates.

  3. حدد علامة تبويب Updates.

  4. حدد + Import New Update.

  5. حدد + Select من موقع تخزين الحاوية. حدد حسابًا موجودًا أو أنشئ حسابًا جديدًا باستخدام + حساب Storage. ثم حدد حاوية موجودة أو أنشئ حاوية جديدة عن طريق استخدام + Container. سيتم استخدام هذه الحاوية لعرض ملفات التحديث الخاصة بك للاستيراد.

    ملاحظة

    نوصي باستخدام حاوية جديدة في كل مرة تقوم فيها باستيراد تحديث تجنبًا لاستيراد الملفات عن طريق الخطأ من التحديثات السابقة. في حالة عدم استخدام حاوية جديدة، فتأكد من حذف أي ملفات من الحاوية الحالية قبل الانتهاء من هذه الخطوة.

    لقطة شاشة توضح حساب التخزين والحاويات.

  6. في الحاوية الخاصة بك، حدد Upload وانتقل إلى الملفات التي قمت بتحميلها في الخطوة الأولي. بعد تحديد جميع ملفات التحديث الخاصة بك، حددUpload. ثم حدد الزر Select للعودة إلى صفحة Import update.

    لقطة شاشة توضح تحديد الملفات المحملة.

    توضح لقطة الشاشة هذه خطوة الاستيراد. من المحتمل عدم تطابق أسماء الملفات مع الأسماء المستخدمة في المثال.

  7. في صفحة Import update، راجع الملفات التي سيتم استيرادها. ثم حدد Import update لبدء عملية الاستيراد. بالنسبة إلى البرنامج التعليمي، قم باستيراد نموذج بيان البرنامج التعليمي ونموذج التحديث (ملف swu.) ونموذج البرنامج النصي A/B الذي تم تنزيله مسبقا.

    لقطة شاشة توضح استيراد التحديث.

  8. تبدأ عملية الاستيراد وتتغير الشاشة إلى قسم Import History. عندما يشير عمود Status إلى نجاح الاستيراد، حدد العنوان Available updates. يجب أن تشاهد التحديث المستورد في القائمة الآن.

    Screenshot that shows job status.

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

عرض مجموعات الأجهزة

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

  1. انتقل إلى علامة تبويب Groups و Deployments الموجودة أعلى الصفحة.

    لقطة شاشة تعرض أجهزة غير مجمعة.

  2. عرض قائمة المجموعات ومخطط توافق التحديث. يعرض مخطط توافق التحديث عدد الأجهزة في حالات التوافق المختلفة: على آخر تحديث، وتحديثات جديدة متاحة، وتحديثات قيد التقدم. تعرف على كيفية توافق التحديث.

    لقطة شاشة توضح طريقة عرض توافق التحديث.

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

لمزيد من المعلومات حول العلامات والمجموعات، راجع إدارة مجموعات الأجهزة.

استخدام تحديث

  1. بعد إنشاء المجموعة، من المفترض أن ترى تحديثا جديدا متاحا لمجموعة أجهزتك مع ارتباط تشعبي للتحديث ضمن Best update. من المحتمل أن تحتاج لإعادة تحديث مرة أخري.

    لمزيد من المعلومات حول التوافق، راجع توافق تحديث الجهاز.

  2. حدد المجموعة المستهدفة عن طريق تحديد اسم المجموعة. يتم توجيهك إلى تفاصيل المجموعة ضمن Group basics.

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

  3. لبدء الاستخدام انتقل إلى علامة التبويب Current deployment. ثم حدد ارتباطdeploy بجوار التحديث المطلوب من قسم Available updates. يُرمز إلى أفضل تحديث متاح لمجموعة معينة بـ Best.

    لقطة شاشة تعرض اختيار تحديث.

  4. رتّب الاستخدام الخاص بك للبدء في الحال أو في المستقبل. ثم حدد "Create".

    تلميح

    بشكل افتراضي، يكون تاريخ ووقت البدء 24 ساعة من وقتك الحالي. تأكد من تحديد تاريخ ووقت مختلفين في حال كنت تريد أن يبدأ الاستخدام في وقت مبكر.

    لقطة شاشة توضح إنشاء عملية نشر.

  5. ضمن تفاصيل Deployment،Status تتحول إلى Active. توضع علامة على التحديث المستخدم(deploying).

    لقطة شاشة تظهر نشاط عملية النشر.

  6. اعرض مخطط التوافق للتأكد أن التحديث قيد التقدم الآن.

  7. بعد تحديث جهازك بنجاح، سترى أنه تم تحديث مخطط التوافق وتفاصيل التوزيع لتعكس نفس الشيء.

    لقطة شاشة توضح نجاح التحديث.

مراقبة نشر التحديث

  1. حدد علامة تبويب Deployment history في الجزء العلوي من الصفحة.

    لقطة شاشة تعرض محفوظات النشر.

  2. حدد الارتباط التشعبيالتفاصيل بجوار عملية النشر التي أنشأتها.

    لقطة شاشة توضح تفاصيل عملية النشر.

  3. حدد تحديث لعرض تفاصيل الحالة الأخيرة.

لقد أكملت الآن تحديثًا ناجحًا للصورة من طرف إلى طرف باستخدام Device Update لـIoT Hub على جهاز Raspberry Pi 3 B +.

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

عند عدم الحاجة إلى ذلك، نظّف حساب تحديث الجهاز الخاص بك، على سبيل المثال، IoT hub وIoT device.

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