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

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

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

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

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

ملاحظة

الميزات الموضحة في هذه المقالة متوفرة فقط في المستوى القياسي لـ IoT Hub. لمزيد من المعلومات حول مستويات 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. أنشئ واحدًا باستخدام CLI أو مدخل Azure.

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

إعداد Cloud Shell

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

  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 Device Provisioning Service (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، مع تمييز أيقونة فتح جلسة عمل جديدة في شريط الأدوات.

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

في هذا القسم، يمكنك إنشاء هوية جهاز لمركز 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 وأنماط إدارة الأجهزة، قم بتحديث صورة في البرنامج التعليمي تحديث الجهاز ل Azure IoT Hub باستخدام Raspberry Pi 3 B+ صورة مرجعية.