تطوير وحدات IoT Edge الخاصة بك

ينطبق على:نعم أيقونة IoT Edge 1.1 الإصدارات الأخرى:IoT Edge 1.4

هام

كان تاريخ انتهاء دعم IoT Edge 1.1 هو 13 ديسمبر 2022. تحقق من دورة حياة المنتج من Microsoft للحصول على معلومات حول كيفية دعم هذا المنتج أو الخدمة أو التقنية أو API.

ينطبق على:IoT Edge 1.4 علامة اختيار IoT Edge 1.4 الإصدارات الأخرى:IoT Edge 1.1

يمكن لوحدات Azure IoT Edge الاتصال بخدمات Azure الأخرى والمساهمة في خط بيانات السحابة الأكبر. توضح هذه المقالة كيف يمكنك تطوير وحدات للتواصل مع وقت تشغيل IoT Edge ومركز IoT، وبالتالي بقية سحابة Azure.

بيئة وقت التشغيل IoT الحافة

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

تعبئة برنامجك كوحدة IoT Edge

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

استخدام مركز IoT Edge

يوفر مركز IoT Edge وظيفتين رئيسيتين: الوكيل إلى IoT Hub والاتصالات المحلية.

الاتصال بلوحة وصل IoT Edge من وحدة نمطية

يتضمن الاتصال بمركز IoT Edge المحلي من وحدة نمطية نفس خطوات الاتصال مثل أي عملاء. لمزيد من المعلومات، راجع الاتصال بمركز IoT Edge.

لاستخدام توجيه IoT Edge عبر AMQP، يمكنك استخدام ModuleClient من Azure IoT SDK. إنشاء مثيل ModuleClient لتوصيل الوحدة النمطية بلوحة وصل IoT Edge قيد التشغيل على الجهاز، على غرار كيفية توصيل مثيلات DeviceClient لأجهزة IoT بلوحة وصل IoT. لمزيد من المعلومات حول فئة ModuleClient وأساليب الاتصال الخاصة بها، راجع مرجع واجهة برمجة التطبيقات للغة SDK المفضلة لديك: C#‎ أو C أو Python أو Java أو Node.js.

الإعدادات الأولية لمركز IoT

يرى IoT Hub مثيل وحدة نمطية على نحو مماثل لجهاز، بمعنى ما يلي:

حاليا، لا يمكن للوحدات تلقي رسائل من السحابة إلى الجهاز أو استخدام ميزة تحميل الملف.

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

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

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

لإرسال رسائل القياس عن بعد من جهاز إلى مجموعة نظراء باستخدام التوجيه، استخدم ModuleClient SDK Azure IoT. باستخدام Azure IoT SDK، تحتوي كل وحدة نمطية على مفهوم نقاط نهاية إدخالوإخراج الوحدة النمطية. ModuleClient.sendMessageAsync استخدم الأسلوب وسيرسل رسائل على نقطة نهاية الإخراج للوحدة النمطية الخاصة بك. ثم قم بتكوين توجيه في edgeHub لإرسال نقطة النهاية الإخراج هذه إلى مركز IoT.

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

التوائم.

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

للحصول على وحدة نمطية مزدوجة مع Azure IoT SDK، استدع ModuleClient.getTwin الأسلوب .

لتلقي تصحيح الوحدة النمطية المزدوجة مع Azure IoT SDK، قم بتنفيذ دالة رد الاتصال وتسجيلها باستخدام ModuleClient.moduleTwinCallback الأسلوب من Azure IoT SDK بحيث يتم تشغيل وظيفة رد الاتصال في كل مرة يأتي فيها تصحيح مزدوج.

تلقي طرق مباشرة

لتلقي أسلوب مباشر باستخدام Azure IoT SDK، قم بتنفيذ دالة رد الاتصال وتسجيلها باستخدام ModuleClient.methodCallback الأسلوب من Azure IoT SDK بحيث يتم تشغيل دالة رد الاتصال في كل مرة يأتي فيها أسلوب مباشر.

دعم اللغة والهندسة المعمارية

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

Linux

لجميع اللغات في الجدول التالي، يدعم IoT Edge تطوير حاويات AMD64 وARM32 Linux.

لغة التطوير أدوات التطوير
C تعليمة Visual Studio برمجية
Visual Studio 2017/2019
C#‎ تعليمة Visual Studio برمجية
Visual Studio 2017/2019
Java تعليمة Visual Studio برمجية
Node.js تعليمة Visual Studio برمجية
Python تعليمة Visual Studio برمجية

ملاحظة

بالنسبة إلى التحويل البرمجي عبر الأنظمة الأساسية، مثل تجميع وحدة ARM32 IoT Edge على جهاز تطوير AMD64، تحتاج إلى تكوين جهاز التطوير لتجميع التعليمات البرمجية على بنية الجهاز الهدف التي تطابق وحدة IoT Edge. لمزيد من المعلومات، راجع إنشاء وتصحيح وحدات IoT Edge النمطية على جهازك البعيد لتكوين جهاز التطوير لتحويل التعليمات البرمجية برمجيا على بنية الجهاز الهدف المطابقة لوحدة IoT Edge.

بالإضافة إلى ذلك، يتوفر دعم حاويات ARM64 Linux في المعاينة العامة. لمزيد من المعلومات، راجع تطوير وتصحيح وحدات ARM64 IoT Edge في Visual Studio Code (معاينة).

Windows

لجميع اللغات في الجدول التالي، يدعم IoT Edge تطوير حاويات AMD64 Windows.

لغة التطوير أدوات التطوير
C Visual Studio 2017/2019
C#‎ Visual Studio Code (لا توجد قدرات تصحيح الأخطاء)
Visual Studio 2017/2019

IoT Edge 1.1 LTS هي قناة الإصدار الأخيرة التي تدعم حاويات Windows. بدءا من الإصدار 1.2، تكون الحاويات الخاصة بـ Windows غير معتمدة.

للحصول على معلومات حول التطوير باستخدام حاويات Windows، راجع إصدار IoT Edge 1.1 من هذه المقالة.

أمان الوحدة النمطية

يجب عليك تطوير وحداتك النمطية مع وضع الأمان في الاعتبار. لمعرفة المزيد حول تأمين الوحدات النمطية الخاصة بك، راجع أمان Docker.

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

السماح بأذونات Docker المرتفعة

في ملف التكوين على جهاز IoT Edge، هناك معلمة تسمى allow_elevated_docker_permissions. عند التعيين إلى صحيح، تسمح هذه العلامة بالعلامة --privileged بالإضافة إلى أي قدرات إضافية تحددها في CapAdd حقل Docker HostConfig في خيارات إنشاء الحاوية.

ملاحظة

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

تمكين CAP_CHOWN CAP_SETUID

يتم تعطيل قدرات Docker CAP_CHOWNCAP_SETUID بشكل افتراضي. يمكن استخدام هذه الإمكانات للكتابة لتأمين الملفات على الجهاز المضيف وربما الوصول إلى الجذر.

إذا كنت بحاجة إلى هذه الإمكانات، يمكنك إعادة تمكينها يدويا باستخدام CapADD في خيارات إنشاء الحاوية.

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

إعداد بيئة التطوير والاختبار ل IoT Edge

استخدام Visual Studio لتطوير وحدات C# ل IoT Edge

استخدام Visual Studio Code لتطوير وحدات نمطية ل IoT Edge

فهم واستخدام Azure IoT Hub SDKs