استخدام Visual Studio 2022 لتطوير وتصحيح الوحدات النمطية ل Azure IoT Edge
ينطبق على: IoT Edge 1.5
هام
IoT Edge 1.5 LTS هو الإصدار المدعوم. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي اعتبارا من 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
توضح هذه المقالة كيفية استخدام Visual Studio 2022 لتطوير وتصحيح ونشر وحدات Azure IoT Edge المخصصة. يوفر Visual Studio 2022 قوالب لوحدات IoT Edge المكتوبة بلغة C وC#. بنيات الأجهزة المدعومة هي Windows x64 وLinux x64 و ARM32 و ARM64 (معاينة). لمزيد من المعلومات حول أنظمة التشغيل واللغات والبنى المدعومة، راجع دعم اللغة والهندسة المعمارية.
تتضمن هذه المقالة خطوات لأدوتي تطوير IoT Edge.
- واجهة سطر الأوامر (CLI) هي الأداة المفضلة للتطوير.
- أدوات Azure IoT Edge لملحق Visual Studio . الملحق في وضع الصيانة.
استخدم زر محدد الأداة في البداية لاختيار خيار الأداة لهذه المقالة. توفر كلتا الأدوتين المزايا التالية:
- إنشاء حلول ووحدات IoT Edge وتحريرها وبنائها وتشغيلها وتصحيحها على كمبيوتر التطوير المحلي.
- قم بتكوين التعليمات البرمجية لوحدات Azure IoT النمطية في C أو C# مع فوائد تطوير Visual Studio.
- انشر حل IoT Edge على جهاز IoT Edge عبر Azure IoT Hub.
المتطلبات الأساسية
تفترض هذه المقالة أنك تستخدم جهازا يعمل بنظام Windows كجهة تطوير.
تثبيت Visual Studio 2022 أو تعديله على جهاز التطوير الخاص بك. اختر تطوير Azure وتطوير سطح المكتب باستخدام خيارات أحمال العمل C++.
قم بتنزيل وتثبيت أدوات Azure IoT Edge من Visual Studio Marketplace. يمكنك استخدام ملحق Azure IoT Edge Tools لإنشاء حل IoT Edge الخاص بك وبنائه. أداة التطوير المفضلة هي سطر الأوامر (CLI) Azure IoT Edge Dev Tool. يتضمن الملحق قوالب مشروع Azure IoT Edge المستخدمة لإنشاء مشروع Visual Studio. حاليا، تحتاج إلى تثبيت الملحق بغض النظر عن أداة التطوير التي تستخدمها.
هام
ملحق Azure IoT Edge Tools for VS 2022 في وضع الصيانة. أداة التطوير المفضلة هي سطر الأوامر (CLI) Azure IoT Edge Dev Tool.
تلميح
إذا كنت تستخدم Visual Studio 2019، فقم بتنزيل وتثبيت أدوات Azure IoT Edge ل VS 2019 من سوق Visual Studio.
تثبيت مدير مكتبة Vcpkg
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat
تثبيت حزمة azure-iot-sdk-c لنظام التشغيل Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate install
قم بتنزيل وتثبيت نظام إدارة حاويات متوافق مع Docker على جهاز التطوير الخاص بك لإنشاء صور الوحدة النمطية وتشغيلها. على سبيل المثال، قم بتثبيت Docker Community Edition.
لتطوير وحدات نمطية باستخدام حاويات Linux، استخدم كمبيوتر Windows يلبي متطلبات Docker Desktop.
إنشاء Azure Container Registry أو Docker Hub لتخزين صور الوحدة النمطية الخاصة بك.
تلميح
يمكنك استخدام تسجيل Docker محلي لأغراض النموذج الأولي والاختبار بدلا من تسجيل مجموعة النظراء.
قم بتثبيت Azure CLI.
لاختبار الوحدة النمطية الخاصة بك على جهاز، تحتاج إلى IoT Hub نشط مع جهاز IoT Edge واحد على الأقل. لإنشاء جهاز IoT Edge للاختبار، يمكنك إنشاء جهاز في مدخل Microsoft Azure أو باستخدام CLI:
يعد إنشاء واحد في مدخل Microsoft Azure هو الأسرع. من مدخل Microsoft Azure، انتقل إلى مورد IoT Hub. حدد الأجهزة ضمن قائمة إدارة الأجهزة ثم حدد إضافة جهاز.
في إنشاء جهاز، قم بتسمية جهازك باستخدام معرف الجهاز، وتحقق من جهاز IoT Edge، ثم حدد حفظ في الجزء السفلي الأيمن.
وأخيرا، تأكد من وجود جهازك الجديد في IoT Hub، من قائمة أجهزة إدارة > الأجهزة . لمزيد من المعلومات حول إنشاء جهاز IoT Edge من خلال مدخل Microsoft Azure، اقرأ إنشاء وتوفير جهاز IoT Edge على Linux باستخدام مفاتيح متماثلة.
لإنشاء جهاز IoT Edge باستخدام CLI، اتبع الخطوات الواردة في التشغيل السريع ل Linux أو Windows. في عملية تسجيل جهاز IoT Edge، يمكنك إنشاء جهاز IoT Edge.
إذا كنت تقوم بتشغيل برنامج IoT Edge الخفي على جهاز التطوير الخاص بك، فقد تحتاج إلى إيقاف EdgeHub وEdgeAgent قبل بدء التطوير في Visual Studio.
إنشاء مشروع Azure IoT Edge
ينشئ قالب مشروع IoT Edge في Visual Studio حلا لنشره على أجهزة IoT Edge. أولا، يمكنك إنشاء حل Azure IoT Edge. بعد ذلك، يمكنك إنشاء وحدة نمطية في هذا الحل. يمكن أن يحتوي كل حل IoT Edge على أكثر من وحدة نمطية واحدة.
تحذير
تفتقد أدوات Azure IoT Edge لملحق Visual Studio قوالب المشروع لوحدات C وC# النمطية. نحن نعمل على حل المشكلة. إذا لم تتمكن من إنشاء وحدات IoT Edge باستخدام الملحق، فاستخدم الحل البديل التالي.
قم بتنزيل الملفات التالية ووضعها في دليل قالب Visual Studio المدرج:
ملف القالب | إضافة إلى الدليل |
---|---|
azureiotedgemodule-v0.0.4.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C# |
azureiotedgevcmodulevs17-v0.0.9.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project |
في حلنا، سنقوم ببناء ثلاثة مشاريع. الوحدة النمطية الرئيسية التي تحتوي على EdgeAgent وEdgeHub، بالإضافة إلى وحدة استشعار درجة الحرارة. بعد ذلك، يمكنك إضافة وحدتين نمطيتين إضافيتين ل IoT Edge.
هام
بنية مشروع IoT Edge التي تم إنشاؤها بواسطة Visual Studio ليست هي نفسها الموجودة في Visual Studio Code.
حاليا، لا يدعم Azure IoT Edge Dev Tool CLI إنشاء نوع مشروع Visual Studio. تحتاج إلى استخدام ملحق Visual Studio IoT Edge لإنشاء مشروع Visual Studio.
في Visual Studio، قم بإنشاء مشروع جديد.
في إنشاء مشروع جديد، ابحث عن Azure IoT Edge. حدد المشروع الذي يطابق النظام الأساسي والهندسة المعمارية لجهاز IoT Edge، وحدد التالي.
في تكوين مشروعك الجديد، أدخل اسما لمشروعك، وحدد الموقع، وحدد إنشاء.
في إضافة وحدة نمطية، حدد نوع الوحدة النمطية التي تريد تطويرها. إذا كان لديك وحدة نمطية موجودة تريد إضافتها إلى النشر، فحدد وحدة نمطية موجودة.
في اسم الوحدة النمطية، أدخل اسما للوحدة النمطية الخاصة بك. اختر اسما فريدا في سجل الحاويات.
في عنوان URL للمستودع، قم بتوفير اسم مستودع صور الوحدة النمطية. يقوم Visual Studio بملء اسم الوحدة النمطية تلقائيا باسم localhost:5000/<your module name>. استبدله بمعلومات التسجيل الخاصة بك. استخدم localhost إذا كنت تستخدم سجل Docker محليا للاختبار. إذا كنت تستخدم حاوية تسجيل Azure، ثم استخدم ملقم تسجيل الدخول من إعدادات التسجيل الخاص بك. يبدو خادم تسجيل الدخول مثل <اسم> السجل.azurecr.io. استبدل فقط جزء localhost:5000 من السلسلة بحيث تبدو النتيجة النهائية مثل< اسم> السجل.azurecr.io/< اسم> الوحدة النمطية.
حدد إضافة لإضافة الوحدة النمطية إلى المشروع.
إشعار
إذا كان لديك مشروع IoT Edge موجود، يمكنك تغيير عنوان URL للمستودع عن طريق فتح ملف module.json . يقع عنوان URL للمستودع في خاصية المستودع لملف JSON.
الآن، لديك مشروع IoT Edge والوحدة النمطية IoT Edge في حل Visual Studio الخاص بك.
بنية المشروع
في الحل الخاص بك، هناك مجلدان على مستوى المشروع بما في ذلك مجلد مشروع رئيسي ومجلد وحدة نمطية واحدة. على سبيل المثال، قد يكون لديك مجلد مشروع رئيسي يسمى AzureIotEdgeApp1 ومجلد وحدة نمطية يسمى IotEdgeModule1. يحتوي مجلد المشروع الرئيسي على بيان التوزيع الخاص بك.
يحتوي مجلد مشروع الوحدة النمطية على ملف للتعليمات البرمجية للوحدة النمطية الخاصة بك باسم إما Program.cs
أو main.c
اعتمادا على اللغة التي اخترتها. يحتوي هذا المجلد أيضا على ملف يسمى module.json
يصف بيانات التعريف للوحدة النمطية الخاصة بك. توفر ملفات Docker المختلفة المضمنة هنا المعلومات اللازمة لإنشاء الوحدة النمطية الخاصة بك كحاوية Windows أو Linux.
بيان التوزيع لمشروعك
يسمى deployment.debug.template.json
بيان النشر الذي تقوم بتحريره . هذا الملف هو قالب من بيان توزيع IoT Edge الذي يحدد جميع الوحدات النمطية التي تعمل على جهاز جنبا إلى جنب مع كيفية تواصلها مع بعضها البعض. لمزيد من المعلومات حول بيانات النشر، راجع التعرف على كيفية نشر الوحدات النمطية وإنشاء المسارات.
إذا فتحت قالب النشر هذا، فسترى أن وحدتي وقت التشغيل، edgeAgent وedgeHub مضمنتان، جنبا إلى جنب مع الوحدة النمطية المخصصة التي قمت بإنشائها في مشروع Visual Studio هذا. يتم أيضا تضمين وحدة نمطية رابعة تسمى SimulatedTemperatureSensor . تنشئ هذه الوحدة النمطية الافتراضية بيانات محاكاة يمكنك استخدامها لاختبار الوحدات النمطية الخاصة بك، أو حذفها إذا لم يكن ذلك ضروريا. لمعرفة كيفية عمل مستشعر درجة الحرارة المحاكية، اعرض التعليمة البرمجية المصدر SimulatedTemperatureSensor.csproj.
تعيين إصدار وقت تشغيل IoT Edge
حاليا، أحدث إصدار وقت تشغيل مستقر هو 1.5. يجب تحديث إصدار وقت تشغيل IoT Edge إلى أحدث إصدار مستقر أو الإصدار الذي تريد استهدافه لأجهزتك.
في مستكشف الحلول، انقر بزر الماوس الأيمن فوق اسم المشروع الرئيسي وحدد تعيين إصدار وقت تشغيل IoT Edge.
استخدم القائمة المنسدلة لاختيار إصدار وقت التشغيل الذي تستخدمه أجهزة IoT Edge، ثم حدد موافق لحفظ التغييرات. إذا لم يتم إجراء أي تغيير، فحدد إلغاء للخروج.
حاليا، لا يتضمن الملحق تحديدا لأحدث إصدارات وقت التشغيل. إذا كنت تريد تعيين إصدار وقت التشغيل الأعلى من 1.2، فافتح ملف بيان التوزيع deployment.debug.template.json . تغيير إصدار وقت التشغيل لصور وحدة وقت تشغيل النظام edgeAgent وedgeHub. على سبيل المثال، إذا كنت تريد استخدام الإصدار 1.5 من وقت تشغيل IoT Edge، فقم بتغيير الأسطر التالية في ملف بيان النشر:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
إذا قمت بتغيير الإصدار، فقم بإعادة إنشاء بيان النشر بالنقر بزر الماوس الأيمن فوق اسم مشروعك وتحديد إنشاء نشر ل IoT Edge. يؤدي هذا إلى إنشاء بيان نشر استنادا إلى قالب التوزيع الخاص بك ويظهر في مجلد التكوين لمشروع Visual Studio الخاص بك.
افتح ملف بيان توزيع deployment.debug.template.json . بيان النشر هو مستند JSON يصف الوحدات النمطية التي سيتم تكوينها على جهاز IoT Edge المستهدف.
تغيير إصدار وقت التشغيل لصور وحدة وقت تشغيل النظام edgeAgent وedgeHub. على سبيل المثال، إذا كنت تريد استخدام الإصدار 1.5 من وقت تشغيل IoT Edge، فقم بتغيير الأسطر التالية في ملف بيان النشر:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
خيارات البنية الأساسية للوحدة النمطية وتطويرها
عند إضافة وحدة نمطية جديدة، تأتي مع التعليمات البرمجية الافتراضية الجاهزة للبناء والنشر على جهاز بحيث يمكنك بدء الاختبار دون لمس أي تعليمة برمجية. توجد التعليمات البرمجية للوحدة النمطية داخل مجلد الوحدة النمطية في ملف يسمى Program.cs
(ل C#) أو main.c
(ل C).
يتم إنشاء الحل الافتراضي بحيث يتم توجيه البيانات المحاكاة من الوحدة النمطية SimulatedTemperatureSensor إلى الوحدة النمطية الخاصة بك، والتي تأخذ الإدخال ثم ترسلها إلى IoT Hub.
عندما تكون مستعدا لتخصيص قالب الوحدة النمطية باستخدام التعليمات البرمجية الخاصة بك، استخدم Azure IoT Hub SDKs لإنشاء وحدات نمطية تلبي الاحتياجات الرئيسية لحلول IoT مثل الأمان وإدارة الأجهزة والموثوقية.
تتبع الأخطاء باستخدام المحاكي
توفر Azure IoT EdgeHub Dev Tool تجربة تطوير وتصحيح أخطاء محلية. تساعد الأداة على بدء تشغيل وحدات IoT Edge بدون وقت تشغيل IoT Edge بحيث يمكنك إنشاء وحدات وحلول IoT Edge وتطويرها واختبارها وتشغيلها وتصحيحها محليا. ليس عليك دفع الصور إلى سجل حاويات ونشرها على جهاز للاختبار.
لمزيد من المعلومات، راجع Azure IoT EdgeHub Dev Tool.
لتهيئة الأداة في Visual Studio:
استرداد سلسلة الاتصال لجهاز IoT Edge (الموجود في IoT Hub) من مدخل Microsoft Azure أو من Azure CLI.
إذا كنت تستخدم CLI لاسترداد سلسلة الاتصال، فاستخدم هذا الأمر، واستبدل "[device_id]" و"[hub_name]" بقيمك الخاصة:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]
من قائمة Tools في Visual Studio، حدد Azure IoT Edge Tools>Setup IoT Edge Simulator.
الصق سلسلة الاتصال وحدد موافق.
إشعار
تحتاج إلى اتباع هذه الخطوات مرة واحدة فقط على كمبيوتر التطوير الخاص بك حيث يتم تطبيق النتائج تلقائيا على جميع حلول Azure IoT Edge اللاحقة. يمكن اتباع هذا الإجراء مرة أخرى إذا كنت بحاجة إلى التغيير إلى سلسلة الاتصال مختلف.
إنشاء وتصحيح وحدة نمطية واحدة
عادة ما تريد اختبار وتصحيح كل وحدة نمطية قبل تشغيلها داخل حل كامل مع وحدات متعددة. تتيح لك أداة محاكاة IoT Edge تشغيل وحدة نمطية واحدة بمعزل عن إرسال رسائل عبر المنفذ 53000.
في مستكشف الحلول، حدد مجلد مشروع الوحدة النمطية وقم بتمييزه (على سبيل المثال، IotEdgeModule1). تعيين الوحدة النمطية المخصصة كمشروع بدء التشغيل. حدد Project>Set ك StartUp Project من القائمة.
اضغط على F5 أو حدد زر شريط أدوات التشغيل لبدء تشغيل جهاز محاكاة IoT Edge لوحدة نمطية واحدة. قد يستغرق الأمر من 10 إلى 20 ثانية في البداية.
يجب أن تشاهد نافذة تطبيق وحدة تحكم .NET Core تظهر إذا تمت تهيئة الوحدة بنجاح.
تعيين نقطة توقف لفحص الوحدة النمطية.
- إذا تم التطوير في C#، فقم بتعيين نقطة توقف في الدالة
PipeMessage()
في ModuleBackgroundService.cs. - إذا كنت تستخدم C، فقم بتعيين نقطة توقف في الدالة
InputQueue1Callback()
في main.c.
- إذا تم التطوير في C#، فقم بتعيين نقطة توقف في الدالة
اختبر الوحدة النمطية عن طريق إرسال رسالة. عند تصحيح أخطاء وحدة نمطية واحدة، يستمع المحاكي على المنفذ الافتراضي 53000 للرسائل. لإرسال رسالة إلى الوحدة النمطية الخاصة بك، قم بتشغيل الأمر curl التالي من أمر shell مثل Git Bash أو WSL Bash.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
إذا تلقيت الخطأ قوس/قوس إغلاق غير متطابق في عنوان URL، فجرب الأمر التالي بدلا من ذلك:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\", \"hello world\"}" http://localhost:53000/api/v1/messages
يجب تشغيل نقطة التوقف. يمكنك مشاهدة المتغيرات في نافذة Visual Studio Locals ، التي يتم العثور عليها عند تشغيل مصحح الأخطاء. انتقل إلى تصحيح أخطاء>Windows>Locals.
في Bash أو shell، يجب أن تشاهد تأكيدا
{"message":"accepted"}
.في وحدة تحكم .NET، يجب أن تشاهد:
IoT Hub module client initialized. Received message: 1, Body: [hello world]
اضغط على Ctrl + F5 أو حدد زر الإيقاف لإيقاف تصحيح الأخطاء.
إنشاء وتصحيح الوحدات النمطية المتعددة
بعد الانتهاء من تطوير وحدة نمطية واحدة، قد تحتاج إلى تشغيل وتصحيح حل كامل مع وحدات متعددة. تتيح لك أداة محاكاة IoT Edge تشغيل جميع الوحدات النمطية المحددة في بيان النشر بما في ذلك edgeHub محاكاة لتوجيه الرسائل. في هذا المثال، يمكنك تشغيل وحدتين نمطيتين مخصصتين والوحدة النمطية لمستشعر درجة الحرارة المحاكاة. يتم توجيه الرسائل من وحدة استشعار درجة الحرارة المحاكاة إلى كل وحدة نمطية مخصصة.
في مستكشف الحلول، أضف وحدة نمطية ثانية إلى الحل بالنقر بزر الماوس الأيمن فوق مجلد المشروع الرئيسي. في القائمة، حدد Add>New IoT Edge Module.
في
Add module
النافذة، امنح الوحدة النمطية الجديدة اسما واستبدلlocalhost:5000
جزء عنوان URL للمستودع بخادم تسجيل الدخول إلى Azure Container Registry، كما فعلت من قبل.افتح الملف
deployment.debug.template.json
لمعرفة أنه تمت إضافة الوحدة النمطية الجديدة في قسم الوحدات النمطية. تمت إضافة مسار جديد أيضا إلى قسم المسارات فيEdgeHub
لإرسال رسائل من الوحدة النمطية الجديدة إلى IoT Hub. لإرسال البيانات من مستشعر درجة الحرارة المحاكاة إلى الوحدة النمطية الجديدة، أضف مسارا آخر باستخدام السطر التالي منJSON
. استبدل<NewModuleName>
(في مكانين) باسم الوحدة النمطية الخاصة بك."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
انقر بزر الماوس الأيمن فوق المشروع الرئيسي (على سبيل المثال، AzureIotEdgeApp1) وحدد Set as StartUp Project. من خلال تعيين المشروع الرئيسي كمشروع بدء التشغيل، يتم تشغيل جميع الوحدات النمطية في الحل. يتضمن ذلك كلا الوحدتين النمطيتين التي أضفتها إلى الحل، والوحدة النمطية لمستشعر درجة الحرارة المحاكاة، ومركز Edge المحاكي.
اضغط على F5 أو حدد زر شريط أدوات التشغيل لتشغيل الحل. قد يستغرق الأمر من 10 إلى 20 ثانية في البداية. تأكد من عدم وجود حاويات Docker أخرى قيد التشغيل قد تربط المنفذ الذي تحتاجه لهذا المشروع.
يجب أن تشاهد نافذتي تطبيق وحدة تحكم .NET Core تظهر واحدة لكل وحدة نمطية.
تعيين نقطة توقف لفحص الوحدات النمطية.
- إذا تم التطوير في C#، فقم بتعيين نقطة توقف في الدالة
PipeMessage()
في ModuleBackgroundService.cs. - إذا كنت تستخدم C، فقم بتعيين نقطة توقف في الدالة
InputQueue1Callback()
في main.c.
- إذا تم التطوير في C#، فقم بتعيين نقطة توقف في الدالة
قم بإنشاء نقاط توقف في كل وحدة نمطية ثم اضغط على F5 لتشغيل وتصحيح أخطاء وحدات نمطية متعددة في وقت واحد. يجب أن تشاهد نوافذ تطبيق وحدة تحكم .NET Core متعددة، مع كل نافذة تمثل وحدة نمطية مختلفة.
اضغط على Ctrl + F5 أو حدد زر الإيقاف لإيقاف تصحيح الأخطاء.
إنشاء الصور ودفعها إلى السجل
بمجرد تطوير الوحدة النمطية وتصحيحها، يمكنك إنشاء صورة الوحدة ودفعها إلى Azure Container Registry. يمكنك بعد ذلك نشر الوحدة النمطية على جهاز IoT Edge.
قم بتعيين مشروع IoT Edge الرئيسي كمشروع بدء التشغيل، وليس أحد الوحدات النمطية الفردية.
حدد إما Debug أو Release كتكوين لإنشاء صور الوحدة النمطية الخاصة بك.
إشعار
عند اختيار Debug، يستخدم
Dockerfile.(amd64|windows-amd64).debug
Visual Studio لإنشاء صور Docker. يتضمن ذلك مصحح أخطاء سطر الأوامر .NET Core VSDBG في صورة الحاوية أثناء إنشائها. بالنسبة إلى وحدات IoT Edge الجاهزة للإنتاج، نوصي باستخدام تكوين الإصدار ، الذي يستخدمDockerfile.(amd64|windows-amd64)
دون VSDBG.إذا كنت تستخدم سجلا خاصا مثل Azure Container Registry (ACR)، فاستخدم أمر Docker التالي لتسجيل الدخول إليه. يمكنك الحصول على اسم المستخدم وكلمة المرور من صفحة مفاتيح الوصول في السجل الخاص بك في مدخل Microsoft Azure.
docker login <ACR login server>
دعونا نضيف معلومات تسجيل الدخول إلى سجل حاويات Azure إلى إعدادات وقت التشغيل الموجودة في الملف
deployment.debug.template.json
. هناك طريقتان للقيام بذلك. يمكنك إما إضافة بيانات اعتماد السجل إلى ملفك.env
(الأكثر أمانا) أو إضافتها مباشرة إلى ملفكdeployment.debug.template.json
.إضافة بيانات اعتماد إلى ملفك
.env
:في مستكشف الحلول، حدد الزر إظهار شريط أدوات كافة الملفات.
.env
يظهر الملف. أضف اسم مستخدم وكلمة مرور Azure Container Registry إلى ملفك.env
. يمكن العثور على بيانات الاعتماد هذه في صفحة مفاتيح الوصول الخاصة ب Azure Container Registry في مدخل Microsoft Azure.DEFAULT_RT_IMAGE=1.2 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>
إضافة بيانات الاعتماد مباشرة إلى deployment.debug.template.json
إذا كنت تفضل إضافة بيانات الاعتماد الخاصة بك مباشرة إلى قالب النشر الخاص بك، فاستبدل العناصر النائبة باسم مستخدم مسؤول ACR وكلمة المرور واسم السجل.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }
إشعار
تستخدم هذه المقالة بيانات اعتماد تسجيل دخول المسؤول ل Azure Container Registry، والتي تعتبر ملائمة لسيناريوهات التطوير والاختبار. عندما تكون جاهزًا لسيناريوهات الإنتاج، نوصي بخيار مصادقة أقل امتيازًا مثل أساسيات الخدمة. لمزيد من المعلومات، راجع إدارة الوصول إلى سجل الحاوية.
إذا كنت تستخدم سجلا محليا، يمكنك تشغيل سجل محلي.
وأخيرا، في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مجلد المشروع الرئيسي وحدد Build and Push IoT Edge Modules لإنشاء صورة Docker ودفعها لكل وحدة نمطية. قد يستغرق هذا دقيقة. عندما ترى
Finished Build and Push IoT Edge Modules.
في وحدة تحكم الإخراج في Visual Studio، تكون قد انتهيت.
نشر الحل
الآن بعد أن قمت ببناء ودفع صور الوحدة النمطية الخاصة بك إلى Azure Container Registry، يمكنك نشر الحل على جهاز IoT Edge. لديك بالفعل قالب بيان نشر كنت تراقبه خلال هذا البرنامج التعليمي. دعونا ننشئ بيان نشر من ذلك، ثم نستخدم أمر Azure CLI لنشر الوحدات النمطية الخاصة بك على جهاز IoT Edge في Azure.
انقر بزر الماوس الأيمن فوق مشروعك الرئيسي في Visual Studio مستكشف الحلول واختر إنشاء نشر ل IoT Edge.
انتقل إلى مجلد مشروع Visual Studio الرئيسي المحلي وابحث في
config
المجلد. قد يبدو مسار الملف كما يلي:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config
. هنا تجد بيان النشر الذي تم إنشاؤه مثلdeployment.amd64.debug.json
.deployment.amd64.debug.json
تحقق من الملف للتأكد منedgeHub
تعيين إصدار المخطط إلى 1.2."$edgeHub": { "properties.desired": { "schemaVersion": "1.2", "routes": { "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream", "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")", "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }
تلميح
يتطلب قالب النشر ل Visual Studio 2022 إصدار المخطط 1.2. إذا كنت بحاجة إلى أن يكون 1.1 أو 1.0، فانتظر حتى يتم إنشاء النشر (لا تقم بتغييره في
deployment.debug.template.json
). سيؤدي إنشاء توزيع إلى إنشاء مخطط 1.2 بشكل افتراضي. ومع ذلك، يمكنك تغييرdeployment.amd64.debug.json
البيان الذي تم إنشاؤه يدويا، إذا لزم الأمر قبل نشره إلى Azure.هام
بمجرد نشر جهاز IoT Edge الخاص بك، لن يتم عرضه حاليا بشكل صحيح في مدخل Microsoft Azure مع إصدار المخطط 1.2 (سيكون الإصدار 1.1 جيدا). هذا خطأ معروف وسيتم إصلاحه قريبا. ومع ذلك، لن يؤثر هذا على جهازك، لأنه لا يزال متصلا في IoT Hub ويمكن الاتصال به في أي وقت باستخدام Azure CLI.
الآن دعونا ننشر بياننا باستخدام أمر Azure CLI. افتح موجه أوامر مطور Visual Studio وقم بالتغيير إلى دليل التكوين.
cd config
نشر البيان لجهاز IoT Edge إلى IoT Hub. يقوم الأمر بتكوين الجهاز لاستخدام الوحدات النمطية التي تم تطويرها في الحل الخاص بك. تم إنشاء بيان النشر في الخطوة السابقة وتخزينه في مجلد التكوين . من مجلد التكوين، قم بتنفيذ أمر النشر التالي.
[device id]
استبدل و[hub name]
و[file path]
بقيمك. إذا لم يكن معرف جهاز IoT Edge موجودا في IoT Hub، فيجب إنشاؤه.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]
على سبيل المثال، قد يبدو الأمر كما يلي:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.json
بعد تشغيل الأمر، سترى تأكيدا للتوزيع المطبوع في
JSON
موجه الأوامر.
إنشاء صورة Docker للوحدة النمطية
بمجرد تطوير الوحدة النمطية الخاصة بك، يمكنك إنشاء صورة الوحدة النمطية لتخزينها في سجل حاوية للتوزيع على جهاز IoT Edge.
استخدم Dockerfile الخاص بالوحدة النمطية لإنشاء صورة Docker للوحدة النمطية.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
على سبيل المثال، لنفترض أن أمر shell الخاص بك موجود في دليل المشروع واسم الوحدة النمطية الخاصة بك هو IotEdgeModule1. لإنشاء صورة للسجل المحلي أو سجل حاوية Azure، استخدم الأوامر التالية:
# Build the image for the local registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
# Or build the image for an Azure Container Registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
صورة Docker لوحدة الدفع
ادفع صورة الوحدة النمطية إلى السجل المحلي أو سجل الحاوية.
docker push <ImageName>
على سبيل المثال:
# Push the Docker image to the local registry
docker push localhost:5000/iotedgemodule1:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
انشر الوحدة النمطية على جهاز IoT Edge.
في Visual Studio، افتح ملف بيان نشر deployment.debug.template.json في المشروع الرئيسي.
بيان النشر هو مستند JSON يصف الوحدات النمطية التي سيتم تكوينها على جهاز IoT Edge المستهدف. قبل النشر، تحتاج إلى تحديث بيانات اعتماد Azure Container Registry وصور الوحدة والقيم المناسبة createOptions
. لمزيد من المعلومات حول قيم createOption، راجع كيفية تكوين خيارات إنشاء الحاوية لوحدات IoT Edge النمطية.
إذا كنت تستخدم Azure Container Registry لتخزين صورة الوحدة النمطية الخاصة بك، فستحتاج إلى إضافة بيانات الاعتماد الخاصة بك إلى deployment.debug.template.json في إعدادات edgeAgent . على سبيل المثال،
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_acr_password>", "address": "myacr.azurecr.io" } } } }, //...
استبدل قيمة خاصية الصورة باسم صورة الوحدة النمطية التي دفعتها إلى السجل. على سبيل المثال، إذا قمت بدفع صورة ذات
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
علامة للوحدة النمطية المخصصة IotEdgeModule1، فاستبدل قيمة خاصية الصورة بقيمة العلامة.أضف قيمة createOptions أو استبدلها بمحتوى سلسلة لكل نظام ووحدة نمطية مخصصة في قالب النشر.
على سبيل المثال، ستكون إعدادات صورة IotEdgeModule1 وcreateOptions مشابهة لما يلي:
"IotEdgeModule1": { "version": "1.0.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
استخدم الأمر IoT Edge Azure CLI set-modules لنشر الوحدات النمطية إلى Azure IoT Hub. على سبيل المثال، لنشر الوحدات النمطية المحددة في ملف deployment.debug.amd64.json إلى IoT Hub my-iot-hub لجهاز IoT Edge الخاص بي، استخدم الأمر التالي:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
تلميح
يمكنك العثور على سلسلة الاتصال IoT Hub في مدخل Azure ضمن إعدادات أمان Azure IoT Hub >نهج>الوصول المشترك.
تأكيد التوزيع على جهازك
للتحقق من نشر وحدات IoT Edge النمطية إلى Azure، سجل الدخول إلى جهازك (أو الجهاز الظاهري)، على سبيل المثال من خلال SSH أو Azure Bastion، وقم بتشغيل أمر قائمة IoT Edge.
iotedge list
يجب أن تشاهد قائمة بالوحدات النمطية التي تعمل على جهازك أو جهازك الظاهري.
NAME STATUS DESCRIPTION CONFIG
SimulatedTemperatureSensor running Up a minute mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
edgeAgent running Up a minute mcr.microsoft.com/azureiotedge-agent:1.2
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.2
IotEdgeModule1 running Up a minute myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
myIotEdgeModule2 running Up a minute myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug
تتبع الأخطاء باستخدام Docker Remote SSH
تدعم محركات Docker و Moby اتصالات SSH بالحاويات التي تسمح لك بإرفاق التعليمات البرمجية وتصحيحها على جهاز بعيد باستخدام Visual Studio.
يتطلب الاتصال عن بعد ب Docker امتيازات على مستوى الجذر. اتبع الخطوات الواردة في إدارة docker كمستخدم غير جذر للسماح بالاتصال ب Docker daemon على الجهاز البعيد. عند الانتهاء من تصحيح الأخطاء، قد تحتاج إلى إزالة المستخدم من مجموعة Docker.
اتبع الخطوات لاستخدام Visual Studio لإرفاق عملية تعمل على حاوية Docker على جهازك البعيد.
في Visual Studio، قم بتعيين نقاط التوقف في الوحدة النمطية المخصصة.
عند الوصول إلى نقطة توقف، يمكنك فحص المتغيرات، والتنقل عبر التعليمات البرمجية، وتصحيح الوحدة النمطية الخاصة بك.
الخطوات التالية
لتطوير وحدات مخصصة لأجهزة IoT Edge، فهم واستخدام Azure IoT Hub SDKs.
لمراقبة رسائل من جهاز إلى سحابة (D2C) لجهاز IoT Edge معين، راجع البرنامج التعليمي: مراقبة أجهزة IoT Edge للبدء.