نقاط نهاية IoT Hub

يعرض Azure IoT Hub نقاط نهاية مختلفة لدعم الأجهزة والخدمات التي تتفاعل معه.

إشعار

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

أسماء IoT Hub

يمكنك العثور على اسم مضيف مركز IoT في مدخل Microsoft Azure، في جزء عمل نظرة عامة على مركز IoT. بشكل افتراضي، يبدو اسم DNS لمركز IoT مثل المثال التالي:

{your iot hub name}.azure-devices.net

نقاط نهاية IoT Hub للتطوير والإدارة

Azure IoT Hub هي خدمة متعددة المستأجرين تعرض وظائفها لمختلف الجهات الفاعلة. يوضح الرسم البياني التالي نقاط النهاية المختلفة التي يعرضها IoT Hub.

رسم تخطيطي يوضح قائمة نقاط نهاية IoT Hub المنشئة.

تصف القائمة التالية نقاط النهاية:

  • موفر الموارد: واجهة Azure Resource Manager . تمكّن هذه الواجهة مالكي اشتراك Azure من إنشاء وحذف لوحات IoT hubs، وتحديث خصائص IoT hubs. تتحكم خصائص IoT Hub في نهج الوصول المشترك على مستوى الموزع، بدلا من التحكم في الوصول على مستوى الجهاز، والخيارات الوظيفية للمراسلة من سحابة إلى جهاز ومن جهاز إلى سحابة. يتيح لك موفر موارد IoT Hub أيضاً تصدير هويات الجهاز .

  • إدارة هوية الجهاز: مجموعة من نقاط نهاية HTTPS REST لإدارة هويات الجهاز (إنشاء واسترداد وتحديث وحذف). تُستخدم هويات الجهاز لمصادقة الجهاز والتحكم في الوصول.

  • إدارة الجهاز المزدوج: مجموعة من نقطة نهاية HTTPS REST المواجهة للخدمة للاستعلام عن توائم الجهاز وتحديثها (تحديث العلامات والخصائص).

  • إدارة الوظائف: مجموعة من نقطة نهاية HTTPS REST المواجهة للخدمة للاستعلام عن الوظائف وإدارتها.

  • نقاط نهاية الجهاز: مجموعة من نقاط النهاية لكل جهاز في سجل الهوية. باستثناء ما تم ذكره، يتم عرض نقاط النهاية هذه باستخدام بروتوكولات MQTT v3.1.1 وHTTPS 1.1 و AMQP 1.0 . تتوفر AMQP وMQTT أيضاً عبر WebSockets على المنفذ 443. تتضمن نقاط نهاية الجهاز هذه ما يلي:

    • إرسال رسائل من جهاز إلى سحابة

    • تلقي رسائل من السحابة إلى الجهاز

    • بدء تحميل الملفات

    • استرداد وتحديث خصائص الجهاز المزدوجة (HTTPS غير مدعوم)

    • تلقي طلبات الأسلوب المباشر (HTTPS غير مدعوم)

  • نقاط نهاية الخدمة: مجموعة من نقاط النهاية للحل الخلفي للاتصال بأجهزتك. باستثناء واحد، يتم عرض نقاط النهاية هذه فقط باستخدام AMQP وAMQP عبر بروتوكولات WebSockets. يتم عرض نقطة نهاية استدعاء الطريقة المباشرة عبر بروتوكول HTTPS.

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

    • إرسال رسائل من السحابة إلى الجهاز وتلقي إعلامات التسليم

    • تلقي إعلامات تحميل الملفات

    • استدعاء أسلوب مباشر

تصف مقالة Azure IoT Hub SDKs الطرق المختلفة للوصول إلى نقاط النهاية هذه.

تستخدم جميع نقاط نهاية IoT Hub بروتوكول TLS ، ولا يتم عرض أي نقطة نهاية على الإطلاق على القنوات غير المشفرة/غير الآمنة.

هام

الوظائف التالية للأجهزة التي تستخدم مصادقة المرجع المصدق (CA) X.509 ليست متاحة بعد بشكل عام، ويجب تمكين وضع المعاينة:

  • HTTPS وMQTT عبر WebSockets وAMQP عبر بروتوكولات WebSockets.
  • تحميلات الملف (كل البروتوكولات).

تتوفر هذه الميزات بشكل عام على الأجهزة التي تستخدم مصادقة X.509 thumbprint. لمعرفة المزيد حول مصادقة X.509 مع IoT Hub، راجع شهادات X.509 المدعومة.

نقاط النهاية المخصصة لتوجيه الرسائل

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

يدعم IoT Hub حاليا خدمات Azure التالية كنقاط نهاية مخصصة:

  • حاويات التخزين
  • مراكز الأحداث
  • قوائم انتظار ناقل الخدمة
  • مواضيع ناقل الخدمة
  • Cosmos DB

للحصول على حدود نقاط النهاية لكل مركز، راجع الحصص النسبية والتقييد.

نقطة النهاية المضمنة

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

Azure Storage كنقطة نهاية توجيهية

توجد خدمتا تخزين يمكن لـ IoT Hub توجيه الرسائل إلى: حسابات Azure Blob Storage و Azure Data Lake Storage Gen2 (ADLS Gen2). كلاهما يستخدم كائنات ثنائية كبيرة الحجم لتخزينها.

يدعم IoT Hub كتابة البيانات إلى Azure Storage بتنسيق Apache Avro وتنسيق JSON. القيمة الافتراضية هي «AVRO». لاستخدام ترميز JSON، قم بتعيين الخاصية contentType إلى خاصية application/json و contentEncoding إلى UTF-8 في خصائص نظام الرسائل. كل من هذه القيم غير حساسة لحالة الأحرف. إذا لم يتم تعيين ترميز المحتوى، فسيكتب IoT Hub الرسائل بتنسيق ترميز أساسي 64.

يمكن تعيين تنسيق الترميز فقط عند تكوين نقطة نهاية تخزين الكائن الثنائي كبير الحجم؛ لا يمكن تحريره لنقطة نهاية موجودة.

يجمع IoT Hub الرسائل وكتابة البيانات إلى التخزين كلما وصلت الدفعة إلى حجم معين أو انقضى وقت معين. يتم تعيين IoT Hub افتراضيا إلى اصطلاح تسمية الملف التالي: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}.

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

نوصي بإدراج الكائنات الثنائية كبيرة الحجم أو الملفات ثم تكرارها، للتأكد من قراءة جميع الكائنات الثنائية كبيرة الحجم أو الملفات دون إجراء أي افتراضات للتقسيم. من المحتمل أن يتغير نطاق القسم في أثناء تجاوز الفشل الذي تم بدء تشغيله بواسطة Microsoft أو تجاوز الفشل اليدوي لمركز IoT Hub. يمكنك استخدام List Blobs API لتعداد قائمة النقط الكبيرة أو List ADLS Gen2 API لقائمة الملفات. على سبيل المثال:

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

لإنشاء حساب تخزين متوافق مع Azure Data Lake Gen2، قم بإنشاء حساب تخزين V2 جديد وحدد Enable hierarchical namespace من قسم Data Lake Storage Gen2 من علامة التبويب Advanced ، كما هو موضح في الصورة التالية:

لقطة شاشة توضح كيفية تحديد تخزين Azure Date Lake Gen2.

قوائم انتظار ناقل خدمة Microsoft Azure وموضوعات ناقل خدمة Microsoft Azure كنقطة نهاية للتوجيه

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

مراكز الأحداث باعتبارها نقطة نهاية للتوجيه

بصرف النظر عن نقطة النهاية المتوافقة مع مراكز الأحداث (محاور الأحداث) المضمنة، يمكنك أيضًا توجيه البيانات إلى نقاط نهاية مخصصة من نوع Event Hubs.

Azure Cosmos DB كنقطة نهاية توجيه

يمكنك إرسال البيانات مباشرة إلى Azure Cosmos DB من IoT Hub. يدعم IoT Hub الكتابة إلى Cosmos DB في JSON (إذا تم تحديده في نوع محتوى الرسالة) أو كثنائي مشفر بقاعدة 64.

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

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

تنبيه

إذا كنت تستخدم الهوية المدارة المعينة من قبل النظام للمصادقة على Cosmos DB، فيجب عليك استخدام Azure CLI أو Azure PowerShell لتعيين تعريف الدور المضمن ل Cosmos DB Data Contributor للهوية. تعيين الدور ل Cosmos DB غير مدعوم حاليا من مدخل Microsoft Azure. لمزيد من المعلومات حول الأدوار المختلفة، راجع تكوين الوصول المستند إلى الدور ل Azure Cosmos DB. لفهم تعيين الأدوار عبر CLI، راجع إدارة موارد دور Azure Cosmos DB SQL.

صحة نقطة النهاية

يمكنك استخدام واجهة برمجة تطبيقات REST Get Endpoint Health للحصول على الحالة الصحية لنقاط النهاية. نوصي باستخدام قياسات توجيه IoT Hub المتعلقة بوقت استجابة رسالة التوجيه لتحديد الأخطاء وتصحيحها عندما تكون سلامة نقطة النهاية ميتة أو غير صحية، حيث نتوقع أن يكون وقت الاستجابة أعلى عندما تكون نقطة النهاية في إحدى تلك الحالات. لمعرفة المزيد حول استخدام قياسات IoT Hub، راجع Monitor IoT Hub .

الحالة الصحية ‏‏الوصف
صحي تقبل نقطة النهاية الرسائل كما هو متوقع.
غير صحي لا تقبل نقطة النهاية الرسائل ويعيد IoT Hub محاولة إرسال الرسائل إلى نقطة النهاية هذه.
غير معروف لم يحاول IoT Hub تسليم الرسائل إلى نقطة النهاية هذه.
متدهورة تقبل نقطة النهاية الرسائل بشكل أبطأ من المتوقع أو تتعافى من حالة غير صحية.
ميت لم يعد IoT Hub يسلم الرسائل إلى نقطة النهاية هذه. فشلت محاولات إعادة إرسال الرسائل إلى نقطة النهاية هذه.

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

تعرف على المزيد حول هذه المواضيع: