مشاركة عبر


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

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

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

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

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

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

تسجيل الجهاز والحصول على سلسلة الاتصال

أضف جهازك إلى سجل الجهاز في مركز IoT والحصول على سلسلة الاتصال IoT Hub الذي ينشئه الجهاز.

  1. في مدخل Microsoft Azure، افتح صفحة مركز IoT المقترنة بمثيل تحديث الجهاز.
  2. في جزء التنقل الأيمن، حدد أجهزة إدارة>الأجهزة.
  3. في صفحة الأجهزة ، حدد إضافة جهاز.
  4. ضمن Device ID، أدخل اسما للجهاز. تأكد من تحديد خانة الاختيار Autogenerate keys.
  5. حدد حفظ. يظهر الجهاز في القائمة على صفحة الأجهزة .
  6. في صفحة الأجهزة ، حدد الجهاز الذي قمت بتسجيله.
  7. في صفحة الجهاز، حدد أيقونة النسخ بجوار سلسلة الاتصال (المفتاح الأساسي) . احفظ هذا الجهاز سلسلة الاتصال لاستخدامه عند تكوين عامل تحديث الجهاز.

إشعار

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

إعداد Raspberry Pi

يحتوي ملف Tutorial_RaspberryPi3.zip على جميع الملفات المطلوبة لبرنامج تعليمي. قم بتنزيل الملف من قسم الأصول في الإصدار الأخير على صفحة إصدارات تحديث جهاز GitHub، وقم بفك ضغطه.

في مجلد Tutorial_RaspberryPi3 المستخرج، الصورة الأساسية التي يمكنك وميضها على لوحة Raspberry Pi هي adu-base-image-raspberrypi3.wic. تستخدم الصورة الأساسية بناء Yocto استنادا إلى الإصدار 3.4.4. تحتوي الصورة على عامل تحديث الجهاز و SWUpdate، والتي تمكن تحديث القسم المزدوج لتحديث الجهاز. لمزيد من المعلومات حول طبقات Yocto، راجع إنشاء نظام مخصص يستند إلى Linux باستخدام عامل تحديث الجهاز باستخدام مشروع Yocto.

ملفات التحديث التي تقوم باستيرادها من خلال تحديث الجهاز هي:

  • ملف SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
  • example-a-b-update.sh البرنامج النصي المخصص ل SWUpdate
  • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json البيان

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

هام

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

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

استخدم أداة وميض لنظام التشغيل لتثبيت الصورة الأساسية لتحديث الجهاز على بطاقة SD التي تستخدمها في جهاز Raspberry Pi. تستخدم bmaptool الإرشادات التالية للوميض إلى بطاقة SD. <device> استبدل العنصر النائب باسم جهازك والعن <path to image> العنصر النائب بالمسار إلى ملف الصورة الذي تم تنزيله.

  1. bmap-tools قم بتثبيت الأداة المساعدة إذا لم يكن لديك.

    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. فلاش بطاقة SD.

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

    تلميح

    لوميض أسرع، يمكنك تنزيل ملف bimap وملف الصورة ووضعهما في نفس الدليل.

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

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

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

    ssh raspberrypi3 -l root
    

إنشاء ملفات تكوين تحديث الجهاز

يجب أن يكون du-config.json تحديث الجهاز وملفات تكوين du-diagnostics-config.json على الجهاز. لإنشاء الملفات، قم بتشغيل الأوامر التالية في المحطة الطرفية التي سجلت الدخول إلى Raspberry Pi.

  1. لإنشاء ملف du-config.json أو فتحه للتحرير، قم بتشغيل الأمر التالي:

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

    {
       "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"
          }
       ]
    }  
    
  3. اضغط على Ctrl+X للخروج من المحرر، وأدخل y لحفظ التغييرات.

  4. إنشاء ملف du-diagnostics-config.json باستخدام أوامر مماثلة. إنشاء الملف وفتحه:

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

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. اضغط على Ctrl+X للخروج من المحرر، وأدخل y لحفظ التغييرات.

  7. استخدم الأمر التالي لإظهار الملفات الموجودة في الدليل /adu/ . يجب أن تشاهد كلا ملفي التكوين.

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

    systemctl start deviceupdate-agent
    
  9. تحقق من أن العامل مباشر عن طريق تشغيل الأمر التالي:

    systemctl status deviceupdate-agent
    

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

الاتصال بالجهاز في IoT Hub وإضافة علامة مجموعة

  1. في صفحة مركز IoT لمدخل Microsoft Azure لمثيل Device Update، حدد Device management>Devices من التنقل الأيسر.

  2. في صفحة الأجهزة ، حدد اسم جهازك.

  3. في أعلى صفحة الجهاز، حدد Device twin.

  4. في صفحة Device twin ، ضمن "reported" قسم من قسم device twin "properties" ، ابحث عن إصدار Linux kernel لجهازك.

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

    تحتوي أسماء ملفات الصور الأساسية والتحديثية على تنسيق adu-image< type-image-machine-version><<> number.<>ملحق>. لاحظ أرقام الإصدارات التي يجب استخدامها عند استيراد التحديث.

إضافة علامة مجموعة

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

  1. في الجهاز المزدوج، احذف أي قيم علامة Device Update موجودة عن طريق تعيينها إلى قيمة خالية، ثم أضف علامة مجموعة Device Update الجديدة التالية. إذا كنت تستخدم هوية الوحدة النمطية مع عامل تحديث الجهاز، أضف العلامة في Module Identity Twin بدلا من الجهاز المزدوج.

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

    تظهر لقطة الشاشة التالية مكان إضافة العلامة في الملف.

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

  2. حدد حفظ.

قم باستيراد تحديث

  1. في صفحة مركز IoT لمدخل Microsoft Azure لمثيل تحديث الجهاز، حدد إدارة الجهاز> Updates من التنقل الأيسر.

  2. في صفحة التحديثات ، حدد استيراد تحديث جديد.

  3. في صفحة Import update ، حدد Select from storage container.

  4. في صفحة Storage accounts ، حدد حساب تخزين موجودا أو أنشئ حسابا جديدا عن طريق تحديد Storage account.

  5. في صفحة Containers ، حدد حاوية موجودة أو أنشئ حاوية جديدة عن طريق تحديد Container. يمكنك استخدام الحاوية لتنظيم ملفات التحديث للاستيراد.

    Screenshot that shows Storage accounts and Containers.

    تلميح

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

  6. في صفحة الحاوية، حدد Upload. اسحب ملفات التحديث التالية من مجلد Tutorial_RaspberryPi3 الذي قمت بتنزيله أو استعرض للوصول إليها وحددها:

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. حدد تحميل. بعد تحميلها، تظهر الملفات على صفحة الحاوية.

  8. في صفحة الحاوية، راجع الملفات المراد استيرادها وحددها، ثم حدد تحديد.

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

  9. في شاشة Import update ، حدد Import update.

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

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

Screenshot that shows job status.

تحديد مجموعة الأجهزة

يمكنك استخدام علامة المجموعة التي قمت بتطبيقها على جهازك لنشر التحديث إلى مجموعة الأجهزة. حدد علامة التبويب Groups and Deployments في أعلى صفحة Updates لعرض قائمة المجموعات والنشرات ومخطط توافق التحديث.

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

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

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

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

توزيع تحديث

  1. في صفحة تفاصيل المجموعة، حدد علامة التبويب النشر الحالي، ثم حدد نشر بجوار التحديث المطلوب في قسم التحديثات المتوفرة. يتم الإشارة إلى أفضل تحديث متوفر للمجموعة باستخدام أفضل تمييز.

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

  2. في صفحة Create deployment ، قم بجدولة التوزيع لبدء تشغيله على الفور أو في المستقبل، ثم حدد Create.

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

    تلميح

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

  3. ضمن "تفاصيل التوزيع"، تتحول "الحالة" إلى "نشط". ضمن التحديثات المتوفرة، يتم وضع علامة (نشر) على التحديث المحدد.

    لقطة شاشة تعرض التوزيع على أنه

  4. في صفحة التحديثات ، اعرض مخطط التوافق للتأكد من أن التحديث قيد التقدم الآن. بعد تحديث جهازك بنجاح، يتم تحديث مخطط التوافق وتفاصيل النشر لتعكس هذه الحالة.

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

عرض محفوظات نشر التحديث

لعرض محفوظات النشر:

  1. حدد علامة التبويب محفوظات النشر في أعلى صفحة تفاصيل المجموعة، وحدد ارتباط التفاصيل بجوار النشر الذي أنشأته.

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

  2. في صفحة Deployment details ، حدد Refresh لعرض أحدث تفاصيل الحالة.

    لقطة شاشة تعرض تفاصيل التوزيع.

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

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

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

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