عمليات الدفق جهاز IoT Hub (معاينة)

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

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

المزايا

توفر عمليات دفق أجهزة IoT Hub المزايا التالية:

  • اتصال آمن صديق لجدار الحماية: يمكن الوصول إلى أجهزة إنترنت الأشياء من نقاط نهاية الخدمة دون فتح منفذ جدار الحماية الوارد في محيط الجهاز أو الشبكة (يلزم فقط الاتصال الصادر بمركز إنترنت الأشياء عبر المنفذ 443).

  • المصادقه: يحتاج كل من جانبي الجهاز والخدمة في النفق إلى المصادقة باستخدام IoT Hub باستخدام بيانات الاعتماد المقابلة لهما.

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

  • بساطة الاتصال: في كثير من الحالات، يلغي استخدام تدفقات الأجهزة الحاجة إلى الإعداد المعقد للشبكات الافتراضية الخاصة لتمكين الاتصال بأجهزة إنترنت الأشياء.

  • التوافق مع مكدس TCP/IP: يمكن أن تستوعب تدفقات أجهزة IoT Hub حركة مرور تطبيقات TCP/IP. وهذا يعني أن مجموعة واسعة من البروتوكولات الخاصة وكذلك القائمة على المعايير يمكن أن تستفيد من هذه الميزة.

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

مهام سير عمل دفق الجهاز

يتم بدء دفق الجهاز عندما تطلب الخدمة الاتصال بجهاز من خلال توفير معرّف الجهاز الخاص به. يتناسب سير العمل هذا بشكل خاص مع نموذج اتصال العميل/الخادم، بما في ذلك SSH وRDP، حيث ينوي المستخدم الاتصال عن بعد بخادم SSH أو RDP الذي يعمل على الجهاز باستخدام برنامج عميل SSH أو RDP.

تتضمن عملية إنشاء دفق الجهاز تفاوضاً بين الجهاز والخدمة ونقاط النهاية الأساسية والمتدفقة لـ IoT hub. بينما تنظم نقطة النهاية الأساسية لـ IoT hub إنشاء دفق الجهاز، فإن نقطة نهاية الدفق تعالج نسبة استخدام الشبكة التي تتدفق بين الخدمة والجهاز.

تدفق إنشاء دفق الجهاز

يتضمن الإنشاء البرمجي لدفق جهاز باستخدام SDK الخطوات التالية ، الموضحة أيضا في الشكل أدناه:

  1. يسجل تطبيق الجهاز رد الاتصال مقدماً ليتم إشعاره عند بدء دفق جهاز جديد على الجهاز. تحدث هذه الخطوة عادةً عند بدء تشغيل الجهاز والاتصال بـ IoT Hub.

  2. يبدأ البرنامج من جانب الخدمة دفق الجهاز عند الحاجة عن طريق توفير معرف الجهاز (وليس عنوان IP).

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

  4. يعمل الجهاز على إنشاء اتصال TCP خارجي آمن بنقطة نهاية الدفق عبر المنفذ 443 وترقية الاتصال إلى WebSocket. يتم توفير عنوان URL لنقطة نهاية البث بالإضافة إلى بيانات الاعتماد لاستخدامها للمصادقة إلى الجهاز بواسطة IoT Hub كجزء من الطلب المرسل في الخطوة 3.

  5. يتم إشعار الخدمة بنتيجة قبول الجهاز للدفق ومتابعة إنشاء عميل WebSocket إلى نقطة نهاية الدفق. وبالمثل، فإنه يتلقى عنوان URL الخاص بنقطة نهاية الدفق ومعلومات المصادقة من IoT Hub.

في عملية المصافحة أعلاه:

  • يجب أن تكتمل عملية المصافحة في غضون 60 ثانية (الخطوة من 2 إلى 5) ، وإلا ستفشل المصافحة مع انتهاء المهلة وسيتم إخطار الخدمة وفقا لذلك.

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

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

  • ضمانات الموثوقية والطلب لدفق ثابت على قدم المساواة مع TCP.

  • تستخدم جميع الاتصالات ب IoT Hub ونقطة نهاية البث TLS ويتم تشفيرها.

تدفق الإنهاء

ينتهي الدفق الذي تم إنشاؤه عند قطع اتصال أي من اتصالات TCP بالبوابة (بواسطة الخدمة أو الجهاز). يمكن أن يحدث ذلك طواعية عن طريق إغلاق WebSocket على الجهاز أو برامج الخدمة ، أو بشكل لا إرادي في حالة انتهاء مهلة الاتصال بالشبكة أو فشل العملية. عند إنهاء اتصال أي من الجهازين أو الخدمة بنقطة نهاية البث، سيتم أيضا إنهاء اتصال TCP الآخر (بالقوة) وستكون الخدمة والجهاز مسؤولين عن إعادة إنشاء البث، إذا لزم الأمر.

متطلبات الاتصال

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

بدلا من ذلك، يمكن استرداد معلومات نقاط النهاية باستخدام Azure CLI ضمن قسم خصائص الموزع، وعلى وجه التحديد، property.hostname والمفاتيح property.deviceStreams .

az iot hub devicestream show --name <YourIoTHubName>

الإخراج هو كائن JSON لجميع نقاط النهاية التي قد يحتاج جهاز الموزع وخدمته إلى الاتصال بها لإنشاء دفق جهاز.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

ملاحظة

تأكد من تثبيت الإصدار 2.0.57 من Azure CLI أو إصدار أحدث. يمكنك تنزيل أحدث إصدار من صفحة تثبيت Azure CLI .

السماح بالاتصال الصادر بنقاط نهاية تدفق الجهاز

كما هو مذكور في بداية هذه المقالة، يقوم جهازك بإنشاء اتصال صادر بنقطة نهاية تدفق IoT Hub أثناء عملية بدء تدفقات الأجهزة. يجب أن تسمح جدران الحماية الموجودة على الجهاز أو شبكته بالاتصال الصادر ببوابة البث عبر المنفذ 443 (لاحظ أن الاتصال يتم عبر اتصال WebSocket مشفر باستخدام طبقة النقل الآمنة (TLS).

يمكن العثور على اسم مضيف نقطة نهاية دفق الجهاز على مدخل Azure IoT Hub ضمن علامة التبويب نظرة عامة.

بدلا من ذلك، يمكنك العثور على هذه المعلومات باستخدام Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

ملاحظة

تأكد من تثبيت الإصدار 2.0.57 من Azure CLI أو إصدار أحدث. يمكنك تنزيل أحدث إصدار من صفحة تثبيت Azure CLI .

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

يمكنك إعداد Azure Monitor لجمع سجلات الموارد لتدفقات الأجهزة المنبعثة من مركز إنترنت الأشياء. يمكن أن يكون هذا مفيدا جدا في سيناريوهات استكشاف الأخطاء وإصلاحها.

اتبع الخطوات أدناه لإنشاء إعداد تشخيصات لإرسال سجلات تدفقات الجهاز لمركز إنترنت الأشياء إلى سجلات Azure Monitor:

  1. في مدخل Azure، انتقل إلى مركز إنترنت الأشياء. في الجزء الأيسر، ضمن Monitoring، حدد Diagnostic settings. ثم حدد ⁧⁩إضافة إعداد تشخيص⁧⁩.

  2. أدخل اسما لإعداد التشخيصات وحدد DeviceStreams من قائمة السجلات. ثم حدد إرسال إلى تسجيل التحليلات. سيتم إرشادك لاختيار مساحة عمل Log Analytics حالية أو إنشاء مساحة عمل جديدة.

    Enable device streams logs

  3. بعد إنشاء إعداد تشخيصي لإرسال سجلات تدفقات جهازك إلى مساحة عمل Log Analytics، يمكنك الوصول إلى السجلات عن طريق تحديد السجلات ضمن المراقبة في الجزء الأيمن من مركز إنترنت الأشياء في مدخل Azure. ستظهر سجلات تدفقات الجهاز في AzureDiagnostics الجدول وتحتوي على Category=DeviceStreams. كن على علم بأن الأمر قد يستغرق عدة دقائق بعد العملية حتى تظهر السجلات في الجدول.

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

لمعرفة المزيد حول استخدام Azure Monitor مع IoT Hub، راجع مراقبة IoT Hub. للحصول على معلومات حول كافة سجلات الموارد والمقاييس والجداول المتوفرة ل IoT Hub، راجع مراقبة مرجع بيانات Azure IoT Hub.

التوفر الإقليمي

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

توفر SDK

يستخدم جانبان من كل دفق (على جانب الجهاز والخدمة) حزمة SDK لمركز إنترنت الأشياء لإنشاء النفق. أثناء المعاينة العامة، يمكن للعملاء الاختيار من بين لغات SDK التالية:

  • يتم بث جهاز دعم C و C # SDK على جانب الجهاز.

  • يدعم NodeJS و C # SDK تدفقات الأجهزة على جانب الخدمة.

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

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