استخدام التعليمات البرمجية Visual Studio لتطوير الوحدات النمطية ل Azure IoT Edge وتصحيحها
ينطبق على:
IoT Edge 1.1 IoT Edge 1.2 ![]()
يمكنك تحويل منطق عملك إلى وحدات نمطية ل Azure IoT Edge. توضح لك هذه المقالة كيفية استخدام Visual Studio Code كأداة رئيسية لتطوير الوحدات النمطية وتصحيحها.
هناك طريقتان لتصحيح الوحدات النمطية المكتوبة بلغة #C أو Node.js أو Java في التعليمات البرمجية Visual Studio: يمكنك إرفاق عملية في حاوية وحدة نمطية أو تشغيل التعليمات البرمجية الوحدة النمطية في وضع التصحيح. لتصحيح الوحدات النمطية المكتوبة في Python أو C، يمكنك فقط إرفاق عملية في حاويات Linux amd64.
إذا لم تكن على دراية بإمكانات تصحيح الأخطاء في Visual Studio Code، فاقرأ عن تصحيح الأخطاء.
توفر هذه المقالة إرشادات لتطوير الوحدات النمطية وتصحيحها بلغات متعددة لمعماريات متعددة. حاليا ، يوفر Visual Studio Code الدعم للوحدات المكتوبة باللغات C # و C و Python و Node.js و Java. معماريات الأجهزة المدعومة هي X64 و ARM32. لمزيد من المعلومات حول أنظمة التشغيل واللغات والبنى المدعومة، راجع دعم اللغة والبنية المدعومة.
المتطلبات الأساسية
يمكنك استخدام جهاز كمبيوتر أو جهاز ظاهري يعمل Windows أو macOS أو Linux كآلة تطوير. على أجهزة الكمبيوتر Windows ، يمكنك تطوير وحدات Windows أو Linux. لتطوير الوحدات النمطية لـ Windows، استخدم كمبيوتر Windows يعمل بالإصدار 1809إصدار 17763 أو أحدث. لتطوير وحدات Linux، استخدم جهاز كمبيوتر Windows يلبي متطلبات Docker Desktop.
تثبيت التعليمات البرمجية Visual Studio أولا ثم قم بإضافة الملحقات التالية:
- أدوات Azure IoT
- ملحق Docker
- إن ملحق (ملحقات) Visual Studio خاص باللغة التي تطورها:
- C # ، بما في ذلك وظائف Azure: امتداد C #
- بايثون: تمديد بايثون
- جافا: حزمة امتداد جافا لرمز Visual Studio
- C: C / C ++ تمديد
ستحتاج أيضا إلى تثبيت بعض الأدوات الإضافية الخاصة باللغة لتطوير الوحدة النمطية الخاصة بك:
C # ، بما في ذلك وظائف Azure: . NET Core 3.1 SDK
Python: Python و Pip لتثبيت حزم Python (عادة ما يتم تضمينها في تثبيت Python).
Node.js: Node.js. ستحتاج أيضا إلى تثبيت Yeomanومولد وحدة Azure IoT Edge Node.js.
جافا: جافا SE تطوير كيت 10 ومافن. ستحتاج إلى تعيين
JAVA_HOMEمتغير البيئة للإشارة إلى تثبيت JDK.
لإنشاء صورة الوحدة النمطية ونشرها، تحتاج Docker لإنشاء صورة الوحدة النمطية وسجل حاوية للاحتفاظ بصورة الوحدة النمطية:
إصدار مجتمع Docker على جهاز التطوير الخاص بك.
Azure Container Registry or Docker Hub
تلميح
يمكنك استخدام تسجيل Docker محلي لأغراض النموذج الأولي والاختبار بدلا من تسجيل مجموعة النظراء.
ما لم تكن تقوم بتطوير الوحدة النمطية الخاصة بك في C ، فأنت بحاجة أيضا إلى أداة Azure IoT EdgeHub Dev المستندة إلى Python من أجل إعداد بيئة التطوير المحلية الخاصة بك لتصحيح الأخطاء وتشغيل واختبار حل IoT Edge الخاص بك. إذا لم تكن قد قمت بذلك بالفعل ، فقم بتثبيت Python (2.7 / 3.6 / 3.7 / 3.8) و Pip ثم قم بتثبيتiotedgehubdev عن طريق تشغيل هذا الأمر في جهازك الطرفي.
pip install --upgrade iotedgehubdev
ملاحظة
إذا كان لديك العديد من Python بما في ذلك Python 2.7 المثبت مسبقا (على سبيل المثال ، على Ubuntu أو macOS) ، فتأكد من أنك تستخدم الصحيح pip أو pip3 لتثبيت iotedgehubdev
لاختبار الوحدة النمطية على جهاز، ستحتاج إلى مركز IoT نشط مع جهاز IoT Edge واحد على الأقل. لاستخدام الكمبيوتر كجهاز IoT Edge، اتبع الخطوات الواردة في التشغيل السريع لنظام التشغيل Linux أو Windows. إذا كنت تقوم بتشغيل IoT Edge daemon على جهاز التطوير الخاص بك، فقد تحتاج إلى إيقاف EdgeHub و EdgeAgent قبل الانتقال إلى الخطوة التالية.
إنشاء قالب حل جديد
توضح لك الخطوات التالية كيفية إنشاء وحدة IoT Edge بلغة التطوير المفضلة لديك (بما في ذلك وظائف Azure، المكتوبة بلغة C#) باستخدام التعليمات البرمجية Visual Studio وأدوات Azure IoT. تبدأ بإنشاء حل، ثم إنشاء الوحدة النمطية الأولى في هذا الحل. يمكن أن يحتوي كل حل على وحدات متعددة.
حدد View>Command Palette.
في لوحة الأوامر، أدخل الأمر Azure IoT Edge: New IoT Edge Solution وقم بتشغيله.

استعرض وصولا إلى المجلد الذي تريد إنشاء الحل الجديد فيه، ثم حدد تحديد مجلد.
أدخل اسما للحل الخاص بك.
حدد قالب وحدة نمطية للغة التطوير المفضلة لتكون الوحدة النمطية الأولى في الحل.
أدخل اسما للوحدة النمطية. اختر اسما فريدا في سجل الحاويات.
توفير اسم مستودع الصور للوحدة النمطية. يقوم رمز Visual Studio تلقائيا بتعبئة اسم الوحدة النمطية بالمضيف المحلي:5000/<اسم> الوحدة النمطية الخاصة بك. استبدله بمعلومات التسجيل الخاصة بك. إذا كنت تستخدم سجل Docker محلي للاختبار ، فسيكون المضيف المحلي على ما يرام. إذا كنت تستخدم حاوية تسجيل Azure، ثم استخدم ملقم تسجيل الدخول من إعدادات التسجيل الخاص بك. يبدو خادم تسجيل الدخول مثل <اسم> التسجيل.azurecr.io. استبدل فقط الجزء localhost:5000 من السلسلة بحيث تبدو النتيجة النهائية مثل < اسم التسجيل.azurecr.io/<اسم>> الوحدة النمطية الخاصة بك.

تقوم Visual Studio التعليمات البرمجية بأخذ المعلومات التي قدمتها، وتنشئ حل IoT Edge، ثم تقوم بتحميله في نافذة جديدة.
هناك أربعة بنود في الحل:
يحتوي المجلد . vscode على تكوينات تصحيح الأخطاء.
يحتوي مجلد الوحدات النمطية على مجلدات فرعية لكل وحدة نمطية. يوجد داخل المجلد الخاص بكل وحدة نمطية ملف ، module.json ، يتحكم في كيفية إنشاء الوحدات النمطية ونشرها. قد تحتاج إلى تعديل هذا الملف لتغيير التسجيل حاوية نشر الوحدة النمطية من localhost إلى تسجيل بعيد. عند هذه النقطة، لديك وحدة نمطية واحدة فقط. ولكن يمكنك إضافة المزيد في لوحة الأوامر باستخدام الأمر Azure IoT Edge : Add IoT Edge Module.
يسرد ملف . env متغيرات البيئة الخاصة بك. إذا كان Azure Container Registry هو التسجيل الخاص بك، سيكون لديك اسم مستخدم وكلمة مرور سجل Azure Container Registry فيه.
في سيناريوهات الإنتاج، نوصي باستخدام مبادئ الخدمة لتوفير الوصول إلى سجل الحاوية بدلا من ملف .env. لمزيد من المعلومات، راجع إدارة الوصول إلى سجل الحاوية.
ملاحظة
يتم إنشاء ملف البيئة فقط إذا قمت بتوفير مستودع صور للوحدة النمطية. إذا قبلت الإعدادات الافتراضية localhost لاختبار وتصحيح محليا، ثم لا تحتاج إلى تعريف متغيرات البيئة.
يسرد ملف deployment.template.json الوحدة النمطية الجديدة الخاصة بك جنبا إلى جنب مع عينة من وحدة SimulatedTemperatureSensor التي تحاكي البيانات التي يمكنك استخدامها للاختبار. لمزيد من المعلومات حول كيفية عمل بيانات النشر، راجع تعرف على كيفية استخدام بيانات النشر لنشر الوحدات النمطية وإنشاء المسارات.
لمعرفة كيفية عمل وحدة درجة الحرارة المحاكاة، قم بعرض شفرة مصدر SimulatedTemperatureSensor.csproj.
تعيين إصدار وقت تشغيل IoT Edge
ملحق IoT Edge الافتراضي إلى أحدث إصدار مستقر من وقت تشغيل IoT Edge عندما يقوم بإنشاء أصول النشر الخاصة بك. حاليًا، أحدث إصدار مستقر هو الإصدار 1.2. إذا كنت تقوم بتطوير وحدات للأجهزة التي تعمل على إصدار الدعم 1.1 طويل الأجل أو الإصدار السابق 1.0، قم بتحديث إصدار وقت تشغيل IoT Edge في Visual Studio Code لمطابقته.
حدد View>Command Palette.
في لوحة الأوامر، قم بإدخال وتشغيل الأمر Azure IoT Edge: تعيين إصدار وقت تشغيل IoT Edge الافتراضي.
اختر إصدار وقت التشغيل الذي تقوم أجهزة IoT Edge بتشغيله من القائمة.
بعد تحديد إصدار وقت تشغيل جديد، يتم تحديث بيان النشر بشكل حيوي ليعكس التغيير في صور الوحدة النمطية لوقت التشغيل.
إضافة وحدات نمطية إضافية
لإضافة وحدات نمطية إضافية إلى الحل الخاص بك، قم بتشغيل الأمر Azure IoT Edge: Add IoT Edge Module من لوحة الأوامر. يمكنك أيضا النقر بزر الماوس الأيمن فوق مجلد الوحدات النمطية أو deployment.template.json الملف في طريقة العرض مستكشف التعليمات البرمجية Visual Studio ثم تحديد إضافة وحدة IoT Edge النمطية.
تطوير الوحدة النمطية
يتم تحديد موقع التعليمات البرمجية الوحدة النمطية الافتراضية التي تأتي مع الحل في الموقع التالي:
- Azure Function (C#): وحدات نمطية< لاسم>><الوحدة النمطية الخاصة بك اسم> الوحدة النمطية الخاصة بك.cs >
- C #: وحدات ><اسم>> الوحدة الخاصة بك البرنامج.cs
- بايثون: وحدات ><اسم>> الوحدة الخاصة بك main.py
- Node.js: وحدات ><اسم>> الوحدة النمطية الخاصة بك app.js
- جافا: وحدات ><اسم> الوحدة الخاصة بك src > الرئيسية > جافا > كوم > edgemodulemodules > التطبيق.java >
- C: وحدات ><اسم>> الوحدة الرئيسية الخاصة بك.c
يتم إعداد الوحدة النمطية وملف deployment.template.json بحيث يمكنك إنشاء الحل، ودفعه إلى سجل الحاوية الخاص بك، ونشره على جهاز لبدء الاختبار دون لمس أي رمز. تم تصميم الوحدة ببساطة لأخذ المدخلات من مصدر (في هذه الحالة ، وحدة SimulatedTemperatureSensor التي تحاكي البيانات) ونقلها إلى IoT Hub.
عندما تكون مستعدا لتخصيص القالب باستخدام التعليمات البرمجية الخاصة بك، استخدم Azure IoT Hub SDKs لإنشاء وحدات نمطية تلبي الاحتياجات الرئيسية لحلول إنترنت الأشياء مثل الأمان وإدارة الأجهزة والموثوقية.
تصحيح أخطاء وحدة نمطية بدون حاوية (C # ، Node.js ، Java)
إذا كنت تقوم بالتطوير في C # أو Node.js أو Java ، فإن الوحدة النمطية الخاصة بك تتطلب استخدام كائن ModuleClient في رمز الوحدة النمطية الافتراضي حتى تتمكن من بدء تشغيل الرسائل وتشغيلها وتوجيهها. ستستخدم أيضا إدخال قناة الإدخال الافتراضية1 لاتخاذ إجراء عندما تتلقى الوحدة النمطية رسائل.
إعداد محاكي IoT Edge
تحتاج وحدات IoT Edge إلى بيئة IoT Edge لتشغيلها وتصحيحها. يمكنك استخدام محاكي IoT Edge على جهاز التطوير الخاص بك بدلا من تشغيل برنامج IoT Edge الخفي الكامل لأمان IoT Edge ووقت التشغيل. يمكنك إما محاكاة جهاز لتصحيح الحلول باستخدام وحدات متعددة ، أو محاكاة تطبيق وحدة نمطية واحدة.
الخيار 1: محاكاة حل IoT Edge:
- في علامة التبويب مستكشف على الجانب الأيمن، قم بتوسيع قسم Azure IoT Hub . انقر بزر الماوس الأيمن فوق معرف جهاز IoT Edge الخاص بك، ثم حدد إعداد IoT Edge Simulator لبدء تشغيل المحاكي باستخدام سلسلة اتصال الجهاز.
- يمكنك رؤية أنه تم إعداد محاكاة IoT Edge بنجاح من خلال قراءة تفاصيل التقدم في المحطة الطرفية المتكاملة.
الخيار 2: محاكاة وحدة IoT Edge واحدة:
في لوحة أوامر التعليمات البرمجية Visual Studio، قم بتشغيل الأمر Azure IoT Edge: Start IoT Edge Hub Simulator for Single Module.
قم بتوفير أسماء أي مدخلات تريد اختبارها باستخدام الوحدة النمطية الخاصة بك. إذا كنت تستخدم نموذج التعليمة البرمجية الافتراضي، فاستخدم إدخال القيمة1.
يقوم الأمر بتشغيل iotedgehubdev CLI ثم يبدأ تشغيل محاكي IoT Edge وحاوية وحدة وحدة مساعدة للاختبار. يمكنك رؤية النواتج أدناه في المحطة الطرفية المتكاملة إذا تم تشغيل جهاز المحاكاة في وضع الوحدة النمطية واحد بنجاح. يمكنك أيضا رؤية
curlأمر للمساعدة في إرسال رسالة من خلاله. ستستخدمه لاحقًا.
يمكنك استخدام طريقة العرض Docker Explorer في التعليمات البرمجية Visual Studio لمشاهدة حالة تشغيل الوحدة النمطية.

حاوية edgeHubDev هي جوهر محاكي IoT Edge المحلي. يمكن تشغيله على جهاز التطوير الخاص بك دون الخفي أمان IoT Edge ويوفر إعدادات البيئة لتطبيق الوحدة النمطية الأصلي أو حاويات الوحدة النمطية. تعرض حاوية الإدخال واجهات برمجة تطبيقات REST للمساعدة في ربط الرسائل بقناة الإدخال المستهدفة في الوحدة النمطية الخاصة بك.
تصحيح الوحدة النمطية في وضع التشغيل
بعد بدء تشغيل جهاز المحاكاة بنجاح، يمكنك تصحيح أخطاء رمز الوحدة النمطية الخاص بك.
قم بإعداد بيئتك لتصحيح الأخطاء وفقا لمتطلبات لغة التطوير الخاصة بك ، وقم بتعيين نقطة توقف في الوحدة النمطية الخاصة بك ، وحدد تكوين تصحيح الأخطاء لاستخدامه:
C#
في المحطة الطرفية المتكاملة "التعليمات البرمجية Visual Studio" تغيير الدليل إلى <مجلد اسم> الوحدة النمطية ثم قم بتشغيل الأمر التالي لإنشاء تطبيق .NET Core.
dotnet buildافتح الملف
Program.csوأضف نقطة توقف.انتقل إلى طريقة عرض تصحيح أخطاء التعليمات البرمجية Visual Studio عن طريق تحديد رمز التصحيح من القائمة الموجودة على اليسار أو عن طريق الكتابة
Ctrl+Shift+D. حدد "تكوين التصحيح" < الخاص > بك اسم الوحدة النمطية التصحيح المحلي (.NET Core) من القائمة المنسدلة.ملاحظة
إذا كان .NET Core
TargetFrameworkغير متوافق مع مسار البرنامج الخاص بك ،launch.jsonفستحتاج إلى تحديث مسارlaunch.jsonالبرنامج يدويا لمطابقةTargetFrameworkملف .csproj الخاص بك حتى تتمكن Visual Studio Code من تشغيل هذا البرنامج بنجاح.
Node.js
في المحطة الطرفية المتكاملة Visual Studio Code تغيير الدليل إلى <مجلد اسم> الوحدة النمطية ثم قم بتشغيل الأمر التالي لتثبيت حزم العقدة
npm installافتح الملف
app.jsوأضف نقطة توقف.انتقل إلى طريقة عرض تصحيح أخطاء التعليمات البرمجية Visual Studio عن طريق تحديد رمز التصحيح من القائمة الموجودة على اليسار أو عن طريق الكتابة
Ctrl+Shift+D. حدد تكوين <تصحيح الأخطاء اسم> الوحدة النمطية Local Debug (Node.js) من القائمة المنسدلة.
Java
افتح الملف
App.javaوأضف نقطة توقف.انتقل إلى طريقة عرض تصحيح أخطاء التعليمات البرمجية Visual Studio عن طريق تحديد رمز التصحيح من القائمة الموجودة على اليسار أو عن طريق الكتابة
Ctrl+Shift+D. حدد تكوين <تصحيح الأخطاء اسم> الوحدة النمطية Local Debug (Java) من القائمة المنسدلة.
انقر فوق بدء التصحيح أو اضغط F5 لبدء جلسة عمل التصحيح.
في المحطة الطرفية المتكاملة لرمز Visual Studio، قم بتشغيل الأمر التالي لإرسال رسالة مرحبًا بالعالم إلى الوحدة النمطية الخاصة بك. هذا هو الأمر المعروض في الخطوات السابقة عند إعداد محاكاة IoT Edge.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesملاحظة
إذا كنت تستخدم Windows ، فتأكد من أن غلاف المحطة الطرفية المتكاملة لرمز Visual Studio الخاص بك هو Git Bash أو WSL Bash. لا يمكنك تشغيل
curlالأمر من PowerShell أو موجه الأوامر.تلميح
يمكنك أيضا استخدام PostMan أو أدوات واجهة برمجة التطبيقات الأخرى لإرسال الرسائل من خلال بدلا من
curl.في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، سترى المتغيرات في اللوحة اليمنى.
لإيقاف جلسة تصحيح الأخطاء، حدد الزر إيقاف أو اضغط على Shift + F5، ثم قم بتشغيل Azure IoT Edge: Stop IoT Edge Simulator في لوحة الأوامر لإيقاف المحاكي وتنظيفه.
تصحيح الأخطاء في وضع الإرفاق باستخدام IoT Edge Simulator (C # و Node.js و Java و Azure Functions)
الحل الافتراضي الخاص بك يحتوي على وحدتين، واحدة هي وحدة استشعار درجة الحرارة محاكاة والآخر هو وحدة الأنابيب. يرسل مستشعر درجة الحرارة المحاكاة رسائل إلى وحدة الأنابيب ومن ثم يتم توصيل الرسائل إلى مركز IoT. في مجلد الوحدة النمطية الذي قمت بإنشائه، هناك العديد من ملفات Docker لأنواع الحاويات المختلفة. استخدام أي من الملفات التي تنتهي مع ملحق .debug لإنشاء الوحدة النمطية للاختبار.
حاليا، يتم اعتماد التصحيح في وضع إرفاق فقط كما يلي:
- تدعم وحدات C # ، بما في ذلك تلك الخاصة بوظائف Azure ، تصحيح الأخطاء في حاويات Linux amd64
- تدعم وحدات Node.js تصحيح الأخطاء في حاويات Linux amd64 و arm32v7 ، وحاويات amd64 Windows
- تدعم وحدات Java تصحيح الأخطاء في حاويات Linux amd64 و arm32v7
تلميح
يمكنك التبديل بين خيارات النظام الأساسي الافتراضي لحل IoT Edge الخاص بك عن طريق النقر فوق العنصر الموجود في شريط حالة رمز Visual Studio.
إعداد محاكاة IoT Edge لحل IoT Edge
في جهاز التطوير الخاص بك، يمكنك بدء تشغيل جهاز محاكاة IoT Edge بدلا من تثبيت برنامج أمان IoT Edge بحيث يمكنك تشغيل حل IoT Edge.
في علامة التبويب مستكشف على الجانب الأيمن، قم بتوسيع قسم Azure IoT Hub . انقر بزر الماوس الأيمن فوق معرف جهاز IoT Edge الخاص بك، ثم حدد إعداد IoT Edge Simulator لبدء تشغيل المحاكي باستخدام سلسلة اتصال الجهاز.
يمكنك رؤية أنه تم إعداد محاكاة IoT Edge بنجاح من خلال قراءة تفاصيل التقدم في المحطة الطرفية المتكاملة.
إنشاء وتشغيل حاوية لتصحيح الأخطاء وتصحيحها في وضع إرفاق
افتح ملف الوحدة النمطية (
Program.csأو أو ،App.javaأوapp.js<your module name>.cs) وأضف نقطة توقف.في طريقة عرض Visual Studio مستكشف التعليمات البرمجية انقر بزر الماوس الأيمن فوق
deployment.debug.template.jsonالملف للحل الخاص بك ثم حدد إنشاء وتشغيل حل IoT Edge في Simulator. يمكنك مشاهدة كافة سجلات حاوية الوحدة النمطية في نفس الإطار. يمكنك أيضا الانتقال إلى طريقة العرض Docker لمشاهدة حالة الحاوية.
انتقل إلى طريقة عرض تصحيح التعليمات البرمجية Visual Studio وحدد ملف تكوين التصحيح للوحدة النمطية. يجب أن يكون اسم خيار التصحيح مشابها لاسم<> الوحدة النمطية Remote Debug
حدد "بدء التصحيح" أو اضغط زر F5. حدد العملية التي تريد إرفاقها.
في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، سترى المتغيرات في اللوحة اليسرى.
لإيقاف جلسة تصحيح الأخطاء، حدد أولا الزر إيقاف أو اضغط على Shift + F5، ثم حدد Azure IoT Edge: Stop IoT Edge Simulator من لوحة الأوامر.
ملاحظة
يوضح المثال السابق كيفية تصحيح الوحدات النمطية IoT Edge على الحاويات. وأضاف منافذ مكشوفة إلى إعدادات حاوية createOptions الوحدة النمطية الخاصة بك. بعد الانتهاء من تصحيح الوحدات النمطية الخاصة بك، نوصي بإزالة هذه المنافذ المكشوفة للوحدات النمطية IoT Edge الجاهزة للإنتاج.
بالنسبة للوحدات النمطية المكتوبة في C # ، بما في ذلك وظائف Azure ، يعتمد هذا المثال على إصدار تصحيح الأخطاء من Dockerfile.amd64.debug، والذي يتضمن مصحح أخطاء سطر الأوامر .NET Core (VSDBG) في صورة الحاوية أثناء إنشائها. بعد تصحيح أخطاء وحدات C # الخاصة بك ، نوصي باستخدام Dockerfile مباشرة بدون VSDBG لوحدات IoT Edge الجاهزة للإنتاج.
تصحيح وحدة نمطية مع وقت تشغيل IoT Edge
في كل مجلد وحدة نمطية، هناك العديد من ملفات Docker لأنواع الحاويات المختلفة. استخدام أي من الملفات التي تنتهي مع ملحق .debug لإنشاء الوحدة النمطية للاختبار.
عند تصحيح الوحدات النمطية باستخدام هذا الأسلوب، يتم تشغيل الوحدات النمطية الخاصة بك على رأس وقت تشغيل IoT Edge. يمكن أن يكون جهاز IoT Edge ورمز Visual Studio الخاص بك على نفس الجهاز، أو أكثر عادة، Visual Studio التعليمات البرمجية موجودة على جهاز التطوير ويتم تشغيل وقت تشغيل IoT Edge والوحدات النمطية على جهاز فعلي آخر. لتصحيح التعليمات البرمجية Visual Studio يجب:
- إعداد جهاز IoT Edge، ثم إنشاء وحدة نمطية (وحدات) IoT Edge مع dockerfile.debug ثم نشر إلى جهاز IoT Edge.
- كشف عنوان IP ومنفذ الوحدة النمطية بحيث يمكن إرفاق مصحح الأخطاء.
- تحديث
launch.jsonبحيث يمكن إرفاق رمز Visual Studio إلى العملية في الحاوية على الجهاز البعيد. هذا الملف موجود في.vscodeالمجلد في مساحة العمل الخاصة بك ويتم تحديث كل مرة تقوم فيها بإضافة وحدة نمطية جديدة تدعم التصحيح.
إنشاء الوحدة النمطية ونشرها على جهاز IoT Edge
في Visual Studio تعليمات برمجية، افتح
deployment.debug.template.jsonالملف الذي يحتوي على إصدار التصحيح من الصور الوحدة النمطية معcreateOptionsمجموعة القيم المناسبة.إذا كنت تقوم بتطوير الوحدة النمطية الخاصة بك في Python، فاتبع الخطوات التالية قبل المتابعة:
افتح الملف
main.pyوأضف هذا الرمز بعد قسم الاستيراد:import ptvsd ptvsd.enable_attach(('0.0.0.0', 5678))أضف السطر البرمجي الفردي التالي إلى معاودة الاتصال التي تريد تصحيحها:
ptvsd.break_into_debugger()على سبيل المثال ، إذا كنت ترغب في تصحيح أخطاء الدالة
receive_message_handler، فيمكنك إدراج سطر التعليمات البرمجية هذا كما هو موضح أدناه:
async def receive_message_handler(message): # NOTE: This function only handles messages sent to "input1". # Messages sent to other inputs, or to the default, will be discarded ptvsd.break_into_debugger() if message.input_name == "input1": print("the data in the message received on input1 was ") print(message.data) print("custom properties are") print(message.custom_properties) print("forwarding mesage to output1") await client.send_message_to_output(message, "output1")في لوحة الأوامر رمز Visual Studio:
تشغيل الأمر Azure IoT الحافة: إنشاء ودفع حل IoT Edge.
حدد
deployment.debug.template.jsonالملف الخاص بحلك.
في المقطع Azure IoT Hub Devices من طريقة عرض مستكشف التعليمات البرمجية Visual Studio:
انقر بزر الماوس الأيمن فوق معرف جهاز ID IoT Edge ثم حدد إنشاء نشر لجهاز واحد.
تلميح
للتأكد من أن الجهاز الذي اخترته هو جهاز IoT Edge، حدده لتوسيع قائمة الوحدات النمطية والتحقق من وجود $edgeHub$edgeAgent. يتضمن كل جهاز IoT Edge هاتين الوحدتين.
انتقل إلى مجلد التكوين الخاص بحلك، وحدد
deployment.debug.amd64.jsonالملف، ثم حدد تحديد Edge Deployment Manifest.
سترى النشر الذي تم إنشاؤه بنجاح باستخدام معرف ID نشر في المحطة الطرفية المتكاملة.
يمكنك التحقق من حالة الحاوية الخاصة بك عن طريق تشغيل docker ps الأمر في المحطة الطرفية. إذا تم تشغيل التعليمات البرمجية Visual Studio ووقت تشغيل IoT Edge على نفس الجهاز، يمكنك أيضا التحقق من الحالة في طريقة عرض Visual Studio Code Docker.
كشف IP ومنفذ الوحدة النمطية للمصحح
يمكنك تخطي هذا المقطع إذا كانت الوحدات النمطية الخاصة بك قيد التشغيل على نفس الجهاز كرمز Visual Studio، كما تستخدم localhost لإرفاق الحاوية وبالفعل لديك إعدادات المنفذ الصحيح في .debug Dockerfile وإعدادات حاوية الوحدة createOptions النمطية launch.json والملف. إذا كانت الوحدات النمطية والتعليمات البرمجية Visual Studio قيد التشغيل على أجهزة منفصلة، فاتبع الخطوات الخاصة بلغة التطوير.
C #، بما في ذلك وظائف Azure
قم بتكوين قناة SSH على جهاز التطوير وجهاز IoT Edge ثم قم بتحرير
launch.jsonالملف لإرفاقه.Node.js
تأكد من أن الوحدة النمطية الموجودة على الجهاز المراد تصحيحه قيد التشغيل وجاهزة لتوصيل مصححي الأخطاء، وأن المنفذ 9229 يمكن الوصول إليه خارجيا. يمكنك التحقق من ذلك عن طريق الفتح
http://<target-machine-IP>:9229/jsonعلى جهاز مصحح الأخطاء. يجب أن يعرض عنوان URL هذا معلومات حول الوحدة النمطية Node.js المراد تصحيحها.على جهاز التطوير، افتح Visual Studio Code ثم قم بتحريره
launch.jsonبحيث Windows تكون قيمة عنوان ملف تعريف اسم الوحدة النمطية الخاص بك تصحيح الأخطاء عن بعد (Node.js) (أو <اسم> الوحدة النمطية الخاص بك تصحيح الأخطاء عن بعد (Node.js في حاوية Windows) هي IP الخاص بالجهاز الذي يتم تصحيحه.><
Java
قم بإنشاء نفق SSH إلى الجهاز ليتم تصحيحه عن طريق التشغيل
ssh -f <username>@<target-machine> -L 5005:127.0.0.1:5005 -N.على جهاز التطوير الخاص بك، افتح Visual Studio التعليمات البرمجية وقم بتحرير <ملف تعريف اسم الوحدة> النمطية الخاص بك تصحيح الأخطاء عن بعد (Java) بحيث يمكنك إرفاقه بالجهاز المستهدف.
launch.jsonلمعرفة المزيد حول تحريرlaunch.jsonJava وتصحيحها باستخدام Visual Studio Code، راجع القسم الخاص بتكوين مصحح الأخطاء.
Python
تأكد من أن المنفذ 5678 الموجود على الجهاز المراد تصحيحه مفتوح ويمكن الوصول إليه.
في التعليمة البرمجية
ptvsd.enable_attach(('0.0.0.0', 5678))التي قمت بإدراجها مسبقا فيmain.py، قم بتغيير 0.0.0.0 إلى عنوان IP الخاص بالجهاز المراد تصحيحه. قم بإنشاء وحدة IoT Edge ودفعها ونشرها مرة أخرى.على جهاز التطوير الخاص بك، افتح Visual Studio التعليمات البرمجية ثم قم بتحريرها
launch.jsonبحيثhostتستخدم قيمة <ملف تعريف اسم> الوحدة النمطية تصحيح الأخطاء عن بعد (Python) عنوان IP للجهاز الهدف بدلا منlocalhost.
تصحيح الوحدة النمطية
في طريقة العرض تصحيح التعليمات البرمجية Visual Studio حدد ملف تكوين التصحيح الوحدة النمطية. يجب أن يكون اسم خيار التصحيح مشابها لاسم<> الوحدة النمطية Remote Debug
افتح ملف الوحدة النمطية للغة التطوير الخاصة بك ثم قم بإضافة نقطة توقف:
- Azure Function (C#): أضف نقطة التوقف إلى الملف
<your module name>.cs. - C #: أضف نقطة التوقف إلى الملف
Program.cs. - Node.js: أضف نقطة التوقف إلى الملف
app.js. - جافا: أضف نقطة التوقف إلى الملف
App.java. - Python: أضف نقطة التوقف إلى الملف
main.pyفي طريقة معاودة الاتصال حيث أضفتptvsd.break_into_debugger()الخط. - C: أضف نقطة التوقف إلى الملف
main.c.
- Azure Function (C#): أضف نقطة التوقف إلى الملف
حدد بدء تصحيح الأخطاء أو حدد F5. حدد العملية التي تريد إرفاقها.
في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، سترى المتغيرات في اللوحة اليمنى.
ملاحظة
يوضح المثال السابق كيفية تصحيح الوحدات النمطية IoT Edge على الحاويات. وأضاف منافذ مكشوفة إلى إعدادات حاوية createOptions الوحدة النمطية الخاصة بك. بعد الانتهاء من تصحيح الوحدات النمطية الخاصة بك، نوصي بإزالة هذه المنافذ المكشوفة للوحدات النمطية IoT Edge الجاهزة للإنتاج.
إنشاء وحدة نمطية وتصحيحها عن بعد
مع التغييرات الأخيرة في كل من مُحركات Docker و Moby لدعم اتصالات SSH، وإعداد جديد في أدوات إنترنت الأشياء Azure التي تمكن من حقن إعدادات البيئة في لوحة أوامر رمز Visual Studio ومحطات Azure IoT Edge ، يمكنك الآن إنشاء وحدات وتصحيحها على الأجهزة البعيدة.
راجع إدخال مدونة مطور إنترنت الأشياء هذا للحصول على مزيد من المعلومات والإرشادات خطوة بخطوة.
الخطوات التالية
بعد إنشاء الوحدة النمطية الخاصة بك، تعرف على كيفية نشر وحدات Azure IoT Edge النمطية من Visual Studio Code.
لتطوير وحدات نمطية لأجهزة IoT Edge الخاصة بك، يمكنك فهم مجموعات SDK الخاصة ب Azure IoT Hub واستخدامها.