تطوير وحدات 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.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