تطوير وحدات IoT Edge الخاصة بك
ينطبق على: IoT Edge 1.5 IoT Edge 1.4
هام
IoT Edge 1.5 LTS وIoT Edge 1.4 LTS هي إصدارات مدعومة. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي في 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
يمكن لوحدات Azure IoT Edge الاتصال بخدمات Azure الأخرى والمساهمة في خط بيانات السحابة الأكبر. توضح هذه المقالة كيف يمكنك تطوير وحدات للتواصل مع وقت تشغيل IoT Edge وIoT Hub، وبالتالي بقية سحابة 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 والاتصالات المحلية.
الاتصال بلوحة وصل 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 بعد ذلك رسائل جديدة مع بيانات تمت معالجتها. وهكذا يمكن إنشاء سلاسل من وحدات IoT Edge لبناء خطوط أنابيب المعالجة المحلية.
لإرسال رسائل بيانات تتبع الاستخدام من جهاز إلى سحابة باستخدام المسارات:
- استخدم فئة عميل الوحدة النمطية ل Azure IoT SDK. تحتوي كل وحدة نمطية على نقاط نهاية الإدخال والإخراج.
- استخدم أسلوب إرسال رسالة من فئة Module Client لإرسال رسائل على نقطة نهاية الإخراج للوحدة النمطية الخاصة بك.
- قم بإعداد مسار في الوحدة النمطية edgeHub لجهازك لإرسال نقطة نهاية الإخراج هذه إلى IoT Hub.
لمعالجة الرسائل باستخدام المسارات:
- قم بإعداد مسار لإرسال رسائل قادمة من نقطة نهاية أخرى (وحدة نمطية أو جهاز) إلى نقطة نهاية الإدخال للوحدة النمطية.
- استمع إلى الرسائل الموجودة على نقطة نهاية الإدخال للوحدة النمطية الخاصة بك. في كل مرة تأتي رسالة جديدة مرة أخرى، يتم تشغيل دالة رد الاتصال بواسطة SDK IoT Azure.
- عالج رسالتك باستخدام دالة رد الاتصال هذه وأرسل (اختياريا) رسائل جديدة في قائمة انتظار نقطة نهاية الوحدة النمطية.
إشعار
لمعرفة المزيد حول الإعلان عن مسار، راجع التعرف على كيفية نشر الوحدات النمطية وإنشاء المسارات في IoT Edge
العمليات المزدوجة
التوائم هي واحدة من البدائيات التي تقدمها مركز 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 ومعظم حاويات ARM64 Linux. هناك دعم لحاويات Debian 11 ARM32، أيضا.
لغة التطوير | أدوات التطوير |
---|---|
C | تعليمة Visual Studio برمجية Visual Studio 2019/2022 |
C# | تعليمة Visual Studio برمجية Visual Studio 2019/2022 |
Java | تعليمة Visual Studio برمجية |
Node.js | تعليمة Visual Studio برمجية |
Python | تعليمة Visual Studio برمجية |
إشعار
للتحويل البرمجي عبر الأنظمة الأساسية، مثل التحويل البرمجي لوحدة ARM32 IoT Edge على جهاز تطوير AMD64، تحتاج إلى تكوين جهاز التطوير لتجميع التعليمات البرمجية على بنية الجهاز الهدف المطابقة لوحدة IoT Edge. لمزيد من المعلومات حول بنيات الجهاز الهدف، راجع تطوير وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code.
Windows
لم نعد ندعم حاويات Windows. IoT Edge ل Linux على Windows هو الطريقة الموصى بها لتشغيل IoT Edge على أجهزة Windows.
أمان الوحدة النمطية
يجب عليك تطوير الوحدات النمطية الخاصة بك مع وضع الأمان في الاعتبار. لمعرفة المزيد حول تأمين الوحدات النمطية الخاصة بك، راجع أمان Docker.
للمساعدة في تحسين أمان الوحدة النمطية، يقوم IoT Edge بتعطيل بعض ميزات الحاوية بشكل افتراضي. يمكنك تجاوز الإعدادات الافتراضية لتوفير قدرات مميزة للوحدات النمطية الخاصة بك إذا لزم الأمر.
السماح بأذونات Docker المرتفعة
في ملف التكوين على جهاز IoT Edge، هناك معلمة تسمى allow_elevated_docker_permissions
. عند التعيين إلى true، تسمح هذه العلامة --privileged
بالعلامة وأي قدرات إضافية تقوم بتعريفها في CapAdd
حقل Docker HostConfig في خيارات إنشاء الحاوية.
إشعار
حاليا، هذه العلامة صحيحة بشكل افتراضي، ما يسمح عمليات التوزيع بمنح أذونات مميزة للوحدات النمطية. نوصي بتعيين هذه العلامة إلى خطأ لتحسين أمان الجهاز.
تمكين CAP_CHOWN CAP_SETUID
يتم تعطيل قدرات Docker CAP_CHOWN CAP_SETUID بشكل افتراضي. يمكن استخدام هذه الإمكانات للكتابة لتأمين الملفات على الجهاز المضيف ومن المحتمل أن تحصل على الوصول الجذر.
إذا كنت بحاجة إلى هذه الإمكانات، يمكنك إعادة تمكينها يدويا باستخدام CapADD في خيارات إنشاء الحاوية.
الخطوات التالية
إعداد بيئة التطوير والاختبار ل IoT Edge
تطوير وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code
تصحيح أخطاء وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code