بدء استخدام هويات وحدة IoT Hub وتوائم الوحدة النمطية باستخدام Azure CLI

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

ملاحظة

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

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

  • إنشاء هوية جهاز، ثم إنشاء هوية وحدة نمطية لهذا الجهاز.

  • تحديث مجموعة من الخصائص المطلوبة للوحدة المزدوجة المقترنة بهوية الوحدة النمطية.

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

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

  • مركز IoT. أنشئ واحدًا باستخدام CLI أو مدخل Azure.

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

مصادقة الوحدة النمطية

يمكنك استخدام مفاتيح متماثلة أو شهادات X.509 لمصادقة هويات الوحدة النمطية. لمصادقة شهادة X.509، يجب أن يكون لشهادة الوحدة النمطية اسمها الشائع (CN) منسق مثل CN=<deviceid>/<moduleid>. على سبيل المثال:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

إعداد 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.

  1. إذا كنت تستخدم Cloud Shell، فانتقل إلى الخطوة التالية. وإلا، قم بتشغيل الأمر az login في جلسة CLI لتسجيل الدخول إلى حساب Azure الخاص بك.

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

    az login
    
  2. في جلسة 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.

إنشاء هوية الجهاز وهوية الوحدة

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

لإنشاء هوية الجهاز وهوية الوحدة النمطية:

  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 hub module-identity create ، واستبدل العناصر النائبة التالية بالقيم المقابلة لها. ينشئ هذا الأمر هوية الوحدة النمطية للوحدة النمطية الخاصة بك، ضمن هوية الجهاز التي قمت بإنشائها في الخطوة السابقة.

    {DeviceName}. اسم جهازك.

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

    {ModuleName}. اسم الوحدة النمطية لجهازك.

    az iot hub module-identity create --device-id {DeviceName} --hub-name {HubName} \
                                      --module-id {ModuleName}
    

تحديث الوحدة المزدوجة

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

  1. في جلسة CLI، قم بتشغيل الأمر az iot hub module-twin update ، واستبدل العناصر النائبة التالية بالقيم المقابلة لها. في هذا المثال، نقوم بتحديث خصائص متعددة مطلوبة على الوحدة المزدوجة لهوية الوحدة النمطية التي أنشأناها في القسم السابق.

    {DeviceName}. اسم جهازك.

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

    {ModuleName}. اسم الوحدة النمطية لجهازك.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. في جلسة CLI، تأكد من أن استجابة JSON تعرض نتائج عملية التحديث. في مثال استجابة JSON التالي، استخدمنا SampleDevice و SampleModule للعناصر {DeviceName} النائبة و {ModuleName} ، على التوالي، في az iot hub module-twin update أمر CLI.

    {
      "authenticationType": "sas",
      "capabilities": null,
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Disconnected",
      "deviceEtag": "Mzg0OEN1NzW=",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": "SampleModule",
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
            "$lastUpdatedVersion": 2,
            "conditions": {
              "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
              "$lastUpdatedVersion": 2,
              "temperature": {
                "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                "$lastUpdatedVersion": 2,
                "critical": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                },
                "warning": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                }
              }
            }
          },
          "$version": 2,
          "conditions": {
            "temperature": {
              "critical": 100,
              "warning": 75
            }
          }
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "0001-01-01T00:00:00Z"
          },
          "$version": 1
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": null,
      "version": 3,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

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

لمعرفة كيفية استخدام Azure CLI لتوسيع حل IoT وجدولة التحديثات على الأجهزة، راجع جدولة مهام البث.

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