جدولة مهام البث (Azure CLI)

استخدم مركز loT لـ Azure لجدولة المهام التي تحدث ملايين الأجهزة وتعقبها. استخدام الوظائف لإجراء ما يلي:

  • تحديث الخصائص المطلوبة
  • تحديث العلامات
  • استدعاء أساليب مباشرة

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

في المقالات التالية نتعرف على المزيد حول كل من هذه الإمكانات:

إشعار

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

توضح هذه المقالة كيفية إنشاء جلستي Azure CLI:

  • جلسة عمل تنشئ جهاز محاكاة. تم تكوين جهاز المحاكاة لإرجاع رمز الحالة وحمولة JSON عند استدعاء أي أسلوب مباشر.

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

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

  • Azure CLI يمكنك أيضا تشغيل الأوامر في هذه المقالة باستخدام Azure Cloud Shell، وهي واجهة CLI تفاعلية تعمل في المستعرض أو في تطبيق مثل وحدة طرفية لـ Windows. إذا كنت تستخدم Cloud Shell، فلن تحتاج إلى تثبيت أي شيء. إذا كنت تفضل استخدام CLI محليا، تتطلب هذه المقالة الإصدار 2.36 من Azure CLI أو أحدث. قم بتشغيل az --version للعثور على الإصدار. لتثبيت Azure CLI أو ترقيته محليا، راجع تثبيت Azure CLI.

  • مركز IoT في اشتِراك Azure الخاص بك. إذا لم تكن لديك مركز بعد، فإنه يمكنك اتباع الخطوات الواردة في إنشاء مركز IoT.

  • تأكد من أن المنفذ 8883 مفتوح في جدار الحماية. يستخدم نموذج الجهاز في هذه المقالة بروتوكول MQTT، الذي يتصل عبر المنفذ 8883. قد يُحظر هذا المنفذ في بعض بيئات الشبكات التعليمية، وشبكات الشركات. لمزيد من المعلومات وطرق التغلب على هذه المشكلة، راجع الاتصال بمركز IoT (MQTT).

إعداد Cloud Shell

إذا كنت ترغب في استخدام Azure Cloud Shell، يجب أولا تشغيله وتكوينه. إذا كنت تستخدم CLI محليا، فانتقل إلى قسم Prepare two CLI sessions .

  1. حدد أيقونة Cloud Shell من رأس الصفحة في مدخل Microsoft Azure.

    لقطة شاشة لعناصر التحكم العمومية من رأس صفحة مدخل Microsoft Azure، مع تمييز أيقونة Cloud Shell.

    إشعار

    إذا كانت هذه المرة الأولى لاستخدامك Cloud Shell، فسيوجهك إلى إنشاء مخزن، وهو مطلوب لاستخدام Cloud Shell. حدد اشتراكاً لإنشاء حساب تخزين ومشاركة ملفات Microsoft Azure.

  2. استخدم محدد البيئة في شريط أدوات Cloud Shell لتحديد بيئة CLI المفضلة لديك. تستخدم هذه المقالة بيئة Bash . يمكنك أيضا استخدام بيئة PowerShell .

    إشعار

    تتطلب بعض الأوامر بناء جملة أو تنسيقا مختلفا في بيئات Bash وPowerShell. لمزيد من المعلومات، راجع تلميحات لاستخدام Azure CLI بنجاح.

    لقطة شاشة لنافذة Azure Cloud Shell، مع تمييز محدد البيئة في شريط الأدوات.

إعداد جلستي CLI

بعد ذلك، يجب إعداد جلستي Azure CLI. إذا كنت تستخدم Cloud Shell، يمكنك تشغيل هذه الجلسات في علامات تبويب Cloud Shell منفصلة. إذا كنت تستخدم عميل CLI محلي، يمكنك تشغيل مثيلات CLI منفصلة. استخدم جلسات CLI المنفصلة للمهام التالية:

  • تحاكي الجلسة الأولى جهاز IoT الذي يتصل بمركز IoT الخاص بك.
  • تعمل الجلسة الثانية على جدولة المهام لجهاز المحاكاة الخاص بك باستخدام مركز IoT الخاص بك.

إشعار

يطالبك Azure CLI بتسجيل الدخول إلى حساب Azure الخاص بك. إذا كنت تستخدم Cloud Shell، يتم تسجيل دخولك تلقائيا إلى حساب Azure الخاص بك. إذا كنت تستخدم عميل CLI محلي، فيجب عليك تسجيل الدخول إلى كل جلسة CLI. جميع الاتصالات التي تجري بين جلسة Azure CLI shell ومركز IoT الخاصين بك مصادقة ومشفرة. ونتيجة لذلك، لا تحتاج هذه المقالة إلى مصادقة إضافية تستخدمها مع جهاز حقيقي، مثل سلسلة الاتصال. لمزيد من المعلومات حول تسجيل الدخول باستخدام Azure CLI، راجع تسجيل الدخول باستخدام Azure CLI.

  1. في جلسة CLI الأولى، قم بتشغيل الأمر az extension add. يضيف الأمر Microsoft Azure IoT Extension لـ Azure CLI إلى CLI shell الخاص بك. يضيف الملحق أوامر محددة ل IoT Hub وIoT Edge وخدمة توفير جهاز IoT (DPS) إلى Azure CLI. بعد تثبيت الملحق، لن تحتاج إلى تثبيته مرة أخرى في أي جلسة عمل Cloud Shell.

    az extension add --name azure-iot
    

    إشعار

    تستخدم هذه المقالة أحدث إصدار من ملحق Azure IoT، ويطلق عليه azure-iot. يسمى الإصدار القديم azure-cli-iot-ext. يجب أن يكون لديك إصدار واحد فقط مُثبت في كل مرة. يمكنك استخدام الأمر az extension list للتحقق من صحة الملحقات المثبتة حالياً.

    استخدم az extension remove --name azure-cli-iot-ext لإزالة الإصدار القديم من الملحق.

    استخدم az extension add --name azure-iot لإضافة الإصدار الجديد من الملحق.

    لمعرفة ما هي الملحقات التي قمت بتثبيتها، استخدم az extension list.

  2. افتح جلسة CLI الثانية. إذا كنت تستخدم Cloud Shell في مستعرض، فحدد أيقونة فتح جلسة عمل جديدة على شريط أدوات جلسة CLI الأولى. إذا كنت تستخدم CLI محلياً، فافتح مثيل CLI ثانياً.

    لقطة شاشة لنافذة Azure Cloud Shell، مع تمييز أيقونة Open New Session في شريط الأدوات.

إنشاء جهاز ومحاكاته

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

لإنشاء جهاز محاكاة وبدء تشغيله:

  1. في جلسة CLI الأولى، قم بتشغيل الأمر az iot hub device-identity create ، واستبدل العناصر النائبة التالية بالقيم المقابلة لها. ينشئ هذا الأمر هوية الجهاز لجهاز المحاكاة الخاص بك.

    {DeviceName}. اسم جهازك الذي تمت محاكاته.

    {HubName}. اسم مركز IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. في جلسة CLI الأولى، قم بتشغيل الأمر az iot device simulate ، واستبدل العناصر النائبة التالية بالقيم المقابلة لها. يحاكي هذا الأمر الجهاز الذي أنشأته في الخطوة السابقة. يتم تكوين جهاز المحاكاة لإرجاع رمز الحالة والحمولة كلما تم استدعاء أسلوب مباشر.

    {DeviceName}. اسم جهازك الذي تمت محاكاته.

    {HubName}. اسم مركز IoT.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    تلميح

    بشكل افتراضي، يرسل الأمر az iot device simulate 100 رسالة من جهاز إلى سحابة بفاصل زمني مدته 3 ثوان بين الرسائل. تنتهي المحاكاة بعد إرسال جميع الرسائل. إذا كنت تريد تشغيل المحاكاة لفترة أطول، يمكنك استخدام المعلمة --msg-count لتحديد المزيد من الرسائل أو المعلمة --msg-interval لتحديد فاصل زمني أطول بين الرسائل. يمكنك أيضا تشغيل الأمر مرة أخرى لإعادة تشغيل جهاز المحاكاة.

جدولة مهمة لاستدعاء أسلوب مباشر

في هذا القسم، يمكنك جدولة مهمة في جلسة CLI الثانية لاستدعاء أسلوب مباشر على جهاز المحاكاة الذي يعمل في جلسة CLI الأولى.

  1. تأكد من تشغيل جهاز المحاكاة في جلسة CLI الأولى. إذا لم يكن الأمر كذلك، فعد تشغيله عن طريق تشغيل الأمر az iot device simulate مرة أخرى من إنشاء جهاز ومحاكاته.

  2. في جلسة CLI الثانية، قم بتشغيل الأمر az iot hub job create ، مع استبدال العناصر النائبة التالية بالقيم المقابلة لها. في هذا المثال، لا يوجد أسلوب موجود مسبقا للجهاز. يقوم الأمر بجدولة مهمة تستدعي اسم أسلوب مثال على جهاز المحاكاة، ما يوفر قيمة خالية لحمولة الأسلوب. يوفر الأسلوب رمز الحالة والحمولة في استجابته.

    {HubName}. اسم مركز IoT.

    {JobName}. اسم وظيفتك المجدولة. أسماء الوظائف فريدة، لذا اختر اسم مهمة مختلف في كل مرة تقوم فيها بتشغيل هذا الأمر.

    {MethodName}. اسم أسلوبك المباشر. لا يحتوي الجهاز المحاكي على أسلوب موجود مسبقا، لذلك يمكنك اختيار أي اسم تريده لهذا الأمر.

    {DeviceName}. اسم جهازك الذي تمت محاكاته.

    az iot hub job create --hub-name {HubName} --job-id {JobName} \
                          --job-type scheduleDeviceMethod \
                          --method-name {MethodName} --method-payload 'null' \
                          --query-condition "deviceId = '{DeviceName}'"
    

    تلميح

    عند جدولة مهمة az iot hub job create الأمر الذي يستدعي أسلوبا مباشرا، يجب تحديد قيم لكل من --method-name المعلمات والاختيارية --method-payload . بالنسبة للأساليب المباشرة التي لا تقبل حمولة، حدد null للمعلمة --method-payload .

  3. في جلسة CLI الأولى، تأكد من أن الإخراج يظهر استدعاء الأسلوب. في لقطة الشاشة التالية، استخدمنا SampleDevice وSampleMethod للعناصر {DeviceName} النائبة و {MethodName} ، على التوالي، في az iot hub job create أمر CLI من الخطوة السابقة.

    لقطة شاشة لجهاز تمت محاكاته يعرض الإخراج بعد استدعاء الأسلوب.

جدولة مهمة لتحديث خصائص توأم الجهاز

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

  1. تأكد من تشغيل جهاز المحاكاة في جلسة CLI الأولى. إذا لم يكن الأمر كذلك، فعد تشغيله عن طريق تشغيل الأمر az iot device simulate مرة أخرى من إنشاء جهاز ومحاكاته.

  2. في جلسة CLI الثانية، قم بتشغيل الأمر az iot hub job create ، مع استبدال العناصر النائبة التالية بالقيم المقابلة لها. في هذا المثال، نقوم بجدولة وظيفة لتعيين قيمة الخاصية BuildingNo المزدوجة المطلوبة إلى 45 لجهاز المحاكاة الخاص بنا.

    {HubName}. اسم مركز IoT.

    {JobName}. اسم وظيفتك المجدولة. أسماء الوظائف فريدة، لذا اختر اسم مهمة مختلف في كل مرة تقوم فيها بتشغيل هذا الأمر.

    {DeviceName}. اسم جهازك الذي تمت محاكاته.

    az iot hub job create --hub-name {HubName} --job-id {JobName} \
                          --job-type scheduleUpdateTwin \
                          --twin-patch '{"properties":{"desired": {"BuildingNo": 45}}}' \
                          --query-condition "deviceId = '{DeviceName}'"
    
  3. في جلسة CLI الأولى، تأكد من أن الإخراج يظهر التحديث الناجح للخاصية المزدوجة للجهاز الذي تم الإبلاغ عنه، مما يشير إلى أنه تم تحديث خاصية الجهاز المزدوج المطلوبة أيضا.

    لقطة شاشة لجهاز محاكاة يعرض الإخراج بعد تحديث خاصية توأم الجهاز.

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

في هذه المقالة، استخدمت Azure CLI لمحاكاة جهاز وجدولة المهام لتشغيل أسلوب مباشر وتحديث خصائص الجهاز المزدوج لهذا الجهاز المحاكي.

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