إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
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/< اسم> الوحدة النمطية.
حدد إضافة لإضافة الوحدة النمطية إلى المشروع.
إشعار
لتغيير عنوان URL للمستودع في مشروع IoT Edge موجود، افتح ملف 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 إلى أحدث إصدار مستقر أو الإصدار الذي تريد استهدافه لأجهزتك.
في Solution Explorer، انقر بزر الماوس الأيمن فوق اسم مشروعك الرئيسي، ثم حدد Set IoT Edge runtime version.
استخدم القائمة المنسدلة لاختيار إصدار وقت التشغيل الذي تستخدمه أجهزة 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).debugVisual 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 Container Registry إلى إعدادات وقت التشغيل في
deployment.debug.template.jsonالملف. يمكنك إضافة بيانات اعتماد السجل إلى ملفك.env(الأكثر أمانا) أو إضافتها مباشرة إلى ملفكdeployment.debug.template.json.إضافة بيانات اعتماد إلى ملفك
.env:في مستكشف الحلول، حدد الزر إظهار شريط أدوات كافة الملفات.
.envيظهر الملف. أضف اسم مستخدم وكلمة مرور Azure Container Registry إلى ملفك.env. ابحث عن بيانات الاعتماد هذه في صفحة Access Keys في 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 للبدء.