إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
IoT Edge 1.5
هام
IoT Edge 1.5 LTS هو الإصدار المدعوم release. وصل IoT Edge 1.4 LTS إلى نهاية صلاحيته في 12 نوفمبر 2024. إذا كنت تستخدم إصدارا أقدم، راجع Update IoT Edge.
تشرح هذه المقالة كيفية استخدام Visual Studio Code لتصحيح أخطاء وحدات IoT Edge بلغات متعددة. على جهاز التطوير الخاص بك، استخدم Visual Studio Code لإرفاق وتصحيح الوحدة في حاوية وحدة محلية أو بعيدة.
تتضمن هذه المقالة خطوات لأدوات تطوير IoT Edge.
- Azure IoT Edge أداة المطور أداة سطر الأوامر (CLI). هذه الأداة مفضلة للتطوير.
- Azure IoT Edge أدوات لتوسيع Visual Studio Code. الملحق في وضع الصيانة.
حدد إصدار الأداة باستخدام زر محدد الأداة في بداية هذه المقالة.
يدعم Visual Studio Code كتابة وحدات IoT Edge بلغات البرمجة التالية:
- C# و C# Azure Functions
- C
- Python
- Node.js
- Java
يعمل Azure IoT Edge مع هذه البنى المعمارية للأجهزة:
- AMD64
- ARM32v7
- ARM64
لمزيد من المعلومات حول أنظمة التشغيل واللغات والبنى المدعومة، راجع دعم اللغة والهندسة المعمارية.
عند استخدام إضافة Visual Studio Code IoT Edge، يمكنك أيضا تشغيل وتصحيح كود الوحدة في IoT Edge Simulator.
يمكنك أيضا استخدام كمبيوتر تطوير Windows وتصحيح الأخطاء في حاوية لينكس باستخدام IoT Edge for Linux على Windows (EFLOW). لمزيد من المعلومات حول استخدام EFLOW لتطوير الوحدات، انظر Tutorial: تطوير وحدات IoT Edge باستخدام حاويات لينكس باستخدام IoT Edge للينكس على Windows.
إذا كنت جديدا على قدرات تصحيح الأخطاء في Visual Studio Code، راجع Visual Studio Code debugging.
المتطلبات الأساسية
يمكنك استخدام جهاز كمبيوتر أو آلة افتراضية تعمل بنظام Windows أو macOS أو Linux كجهاز تطوير خاص. على أجهزة Windows، يمكنك تطوير وحدات Windows أو Linux إما معا. لتطوير وحدات لينكس، استخدم حاسوب Windows يفي بمتطلبات لدوكر ديسكتوب.
لتثبيت الأدوات المطلوبة للتطوير والتصحيح، أكمل تطوير Azure IoT Edge الوحدات باستخدام Visual Studio Code التعليمي.
قم بتثبيت Visual Studio Code.
أضف هذه الملحقات:
- Azure IoT Edge الإضافية. أدوات Azure IoT Edge لتمديد Visual Studio Code موجودة في وضع وضع الصيانة.
- Azure IoT Hub الإضافية.
لتصحيح أخطاء الوحدة النمطية على جهاز، ستحتاج إلى:
- مركز IoT Hub نشط يحتوي على جهاز IoT Edge واحد على الأقل.
- جهاز IoT Edge مادي أو جهاز افتراضي. أنشئ جهازا افتراضيا في Azure باتباع الخطوات في quickstart لنظام Linux.
- وحدة IoT Edge مخصصة. لإنشاء وحدة مخصصة، اتبع الخطوات في درس تطوير Azure IoT Edge باستخدام Visual Studio Code التعليمية.
تصحيح الأخطاء بدون حاوية باستخدام محاكي IoT Edge
IoT Edge Simulator هو أداة تعمل على جهاز التطوير الخاص بك وتحاكي سلوك جهاز IoT Edge واحد. يمكنك استخدام IoT Edge Simulator لتطوير واختبار وحدات IoT Edge الخاصة بك دون الحاجة إلى جهاز مادي أو وقت تشغيل كامل لجهاز IoT Edge.
تفترض خطوات تصحيح الأخطاء التالية أنك قمت بالفعل بإنشاء وحدة نمطية مخصصة. إذا لم تكن قد أنشأت وحدة مخصصة، اتبع الخطوات في تطوير وحدات Azure IoT Edge باستخدام Visual Studio Code.
تصحيح الوحدة بدون حاوية غير متاح عند استخدام C أو Python.
قم بتصحيح الأخطاء في وضع الربط باستخدام محاكي IoT Edge
التصحيح في وضع الربط غير متاح ل C أو Python.
تصحيح الوحدة باستخدام وقت تشغيل IoT Edge
يحتوي كل مجلد وحدة نمطية على العديد من ملفات Docker أنواع الحاويات المختلفة. استخدم أي ملف ينتهي بملحق .debug لإنشاء الوحدة النمطية الخاصة بك للاختبار.
عندما تقوم بتصحيح الأخطاء في الوحدات باستخدام هذه الطريقة، تكون وحداتك تعمل فوق وقت تشغيل IoT Edge. يمكن لجهاز IoT Edge وVisual Studio Code العمل على نفس الجهاز، لكن عادة ما يعمل Visual Studio Code على جهاز التطوير بينما تعمل IoT Edge ووحداته على جهاز مادي آخر. لتصحيح الأخطاء من Visual Studio Code:
- قم بإعداد جهاز IoT Edge الخاص بك، وبناء وحدات IoT Edge باستخدام ملف Dockerfile .debug، ثم نشرها على جهاز IoT Edge.
- قم بتحديث
launch.jsonبحيث يمكن Visual Studio Code الربط بالعملية في حاوية على الجهاز البعيد. يمكنك العثور على هذا الملف في.vscodeالمجلد في مساحة العمل الخاصة بك، ويتم تحديثه في كل مرة تضيف فيها وحدة نمطية جديدة تدعم تصحيح الأخطاء. - استخدم تصحيح أخطاء SSH عن بعد لإرفاقها بالحاوية على الجهاز البعيد.
ابن ونشر وحدتك على جهاز IoT Edge
في Visual Studio Code، افتح ملف بيان النشر deployment.debug.template.json. يصف بيان النشر deployment الوحدات التي سيتم تكوينها على جهاز IoT Edge المستهدف. قبل النشر، قم بتحديث بيانات اعتماد Azure Container Registry وصور الوحدات بقيم createOptions الصحيحة. لمزيد من المعلومات حول قيم createOption، راجع كيفية تكوين خيارات إنشاء الحاويات ل IoT Edge module.
إذا كنت تستخدم Azure Container Registry لتخزين صورة الوحدة، أضف بيانات اعتمادك إلى قسم edgeAgent>settings>registryCredentials في deployment.debug.template.json. استبدل myacr باسم السجل الخاص بك في كلا المكانين وقدم كلمة المرور وعنوان خادم تسجيل الدخول. على سبيل المثال:
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_azure_container_registry_password>", "address": "myacr.azurecr.io" } } } }, ...أضف المحتوى المتسلسل التالي أو استبدله بقيمة createOptions لكل نظام (edgeHub وedgeAgent) والوحدة النمطية المخصصة (على سبيل المثال، filtermodule) المدرجة. قم بتغيير القيم إذا لزم الأمر.
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"على سبيل المثال، يجب أن يكون تكوين عامل التصفية مشابها لما يلي:
"filtermodule": { "version": "1.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/filtermodule:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
- في لوحة الأوامر Visual Studio Code، شغل الأمر Azure IoT Edge: البناء والدفع IoT Edge الحل.
- حدد
deployment.debug.template.jsonالملف الخاص بحلك. - في قسم Azure IoT Hub>Devices في عرض مستكشف Visual Studio Code، انقر بزر الفأرة الأيمن على اسم الجهاز IoT Edge للنشر ثم اختر إنشاء النشر للجهاز الواحد.
تلميح
للتأكد من أن الجهاز الذي اخترته هو جهاز IoT Edge، حدده لتوسيع قائمة الوحدات والتحقق من وجود $edgeHub و $edgeAgent. كل جهاز IoT Edge يتضمن هاتين الوحدتين.
- انتقل إلى مجلد التكوين الخاص بحلك، وحدد
deployment.debug.amd64.jsonالملف، ثم حدد تحديد Edge Deployment Manifest.
تحقق من حالة الحاوية من جهازك أو جهازك الظاهري عن طريق تشغيل docker ps الأمر في محطة طرفية. يجب أن ترى الحاوية مدرجة بعد تشغيل الأمر . إذا كان Visual Studio Code ونظام التشغيل IoT Edge يعملان على نفس الجهاز، تحقق من الحالة في عرض Visual Studio Code Docker.
هام
إذا كنت تستخدم سجل خاص مثل Azure Container Registry لصورك، قد تحتاج إلى المصادقة لدفع الصور. استخدم docker login <Azure Container Registry login server> أو az acr login --name <Azure Container Registry name> للمصادقة.
تسجيل الدخول إلى Docker
قم بتوفير بيانات اعتماد سجل الحاوية إلى Docker بحيث يمكنه دفع صورة الحاوية إلى التخزين في السجل.
سجل الدخول إلى Docker باستخدام بيانات اعتماد Azure Container Registry التي حفظتها بعد إنشاء السجل.
docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>قد تتلقى تحذير أمان يوصي باستخدام
--password-stdin. في حين أنها أفضل ممارسة موصى بها لسيناريوهات الإنتاج، فإنها خارج نطاق هذا البرنامج التعليمي. لمزيد من المعلومات، راجع مرجع تسجيل دخول docker.تسجيل الدخول إلى Azure Container Registry. قد تحتاج إلى install Azure CLI لاستخدام أمر
az. يطلب هذا الأمر العثور على اسم المستخدم وكلمة المرور في سجل الحاوية في Settings>Access keys.az acr login -n <Azure Container Registry name>
تلميح
إذا تم تسجيل خروجك في أي وقت خلال هذا الدرس، كرر خطوات تسجيل الدخول عبر Docker و Azure Container Registry للمتابعة.
إنشاء صورة Docker للوحدة النمطية
استخدم Dockerfile الخاص بالوحدة لإنشاء صورة Docker.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
على سبيل المثال، لبناء الصورة للسجل المحلي أو Azure Container Registry، استخدم الأوامر التالية:
# Build the image for the local registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t localhost:5000/filtermodule:0.0.1-amd64 "./modules/filtermodule"
# Or build the image for an Azure Container Registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t myacr.azurecr.io/filtermodule:0.0.1-amd64 "./modules/filtermodule"
صورة Docker لوحدة الدفع
ادفع صورة الوحدة النمطية إلى السجل المحلي أو سجل الحاوية.
docker push <ImageName>
على سبيل المثال:
# Push the Docker image to the local registry
docker push localhost:5000/filtermodule:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/filtermodule:0.0.1-amd64
نشر الوحدة على جهاز IoT Edge
استخدم أمر IoT Edge Azure CLI set-modules لنشر الوحدات على Azure IoT Hub. على سبيل المثال، لنشر الوحدات المعرفة في ملف deployment.debug.template.json إلى IoT Hub my-iot-hub للجهاز IoT Edge my-device، استخدم الأمر التالي:
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 في IoT Hub >Security settings>Shared Access Policies>iothubowner.
تصحيح الوحدة النمطية
لتصحيح الوحدات على جهاز بعيد، استخدم تصحيح الأخطاء عن بعد في Visual Studio Code.
قم بتمكين Visual Studio Code التصحيح عن بعد عن بعد بتثبيت Remote Development Extension. لمزيد من المعلومات حول Visual Studio Code التصحيح عن بعد، راجع Visual Studio Code التطوير عن بعد.
للحصول على تفاصيل حول استخدام تصحيح الأخطاء بتقنية SSH عن بعد في Visual Studio Code، راجع Remote Development using SSH.
في عرض تصحيح أخطاء Visual Studio Code، اختر ملف تكوين التصحيح الخاص بالوحدة. بشكل افتراضي، يستخدم .debug Dockerfile وإعدادات حاوية createOptions الوحدة النمطية launch.json والملف localhost.
حدد Start Debugging أو F5، ثم حدد العملية المراد إرفاقها. في عرض تصحيح أخطاء Visual Studio Code، ترى متغيرات في اللوحة اليسرى.
تتبع الأخطاء باستخدام Docker remote SSH
يدعم محركا Docker وMoby اتصالات SSH مع الحاويات مما يسمح لك بتصحيح الأخطاء باستخدام Visual Studio Code متصل بجهاز بعيد. تحتاج إلى تلبية المتطلبات الأساسية التالية قبل أن تتمكن من استخدام هذه الميزة.
قد تختلف متطلبات تصحيح أخطاء SSH عن بعد اعتمادا على اللغة التي تستخدمها. تصف الأقسام التالية إعداد .NET. للحصول على معلومات حول اللغات الأخرى، راجع التطوير عن بعد باستخدام SSH للحصول على نظرة عامة. تتضمن أقسام التصحيح لكل لغة تفاصيل حول كيفية إعداد التصحيح عن بعد في توثيق Visual Studio Code.
تكوين نفق Docker SSH
اتبع الخطوات الواردة في نفق Docker SSH لإعداد نفق SSH على كمبيوتر التطوير الخاص بك. يتطلب نفق SSH مصادقة زوج مفاتيح عام/خاص وسياق Docker الذي يحدد نقطة نهاية الجهاز البعيد.
يتطلب الاتصال ب Docker امتيازات الجذر. اتبع الخطوات الواردة في إدارة docker كمستخدم غير جذر للسماح بالاتصال ب Docker daemon على الجهاز البعيد. عند الانتهاء من تصحيح الأخطاء، قد ترغب في إزالة المستخدم من مجموعة Docker.
في Visual Studio Code، استخدم لوحة الأوامر (Ctrl+Shift+P) لإصدار أمر Docker Context: Use لتفعيل سياق Docker الذي يشير إلى الجهاز البعيد. يتيح هذا الأمر لكل من Visual Studio Code وDocker CLI استخدام سياق الجهاز البعيد.
تلميح
تستخدم كافة أوامر Docker السياق الحالي. تذكر إعادة تغيير السياق إلى الوضع الافتراضي عند الانتهاء من تصحيح الأخطاء.
للتحقق من أن سياق Docker البعيد نشط، قم بإدراج الحاويات قيد التشغيل على الجهاز البعيد:
docker psيسرد الإخراج الحاويات التي تعمل على الجهاز البعيد، على غرار ما يلي:
PS C:\> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a317b8058786 myacr.azurecr.io/filtermodule:0.0.1-amd64 "dotnet filtermodule…" 24 hours ago Up 6 minutes filtermodule d4d949f8dfb9 mcr.microsoft.com/azureiotedge-hub:1.5 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5671->5671/tcp, :::5671->5671/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp, 1883/tcp edgeHub 1f0da9cfe8e8 mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes tempSensor 66078969d843 mcr.microsoft.com/azureiotedge-agent:1.5 "/bin/sh -c 'exec /a…" 24 hours ago Up 6 minutes edgeAgentفي مجلد .vscode، افتح launch.json في Visual Studio Code وأضف إعدادا جديدا. حدد إضافة تكوين، ثم اختر قالب إرفاق عن بعد المطابق للوحدة النمطية الخاصة بك. على سبيل المثال، التكوين التالي مخصص ل .NET Core. تغيير قيمة المعلمة -H في PipeArgs إلى اسم DNS لجهازك أو عنوان IP.
"configurations": [ { "name": "Remote Debug IoT Edge Module (.NET Core)", "type": "coreclr", "request": "attach", "processId": "${command:pickRemoteProcess}", "pipeTransport": { "pipeProgram": "docker", "pipeArgs": [ "-H", "ssh://user@my-device-vm.eastus.cloudapp.azure.com:22", "exec", "-i", "filtermodule", "sh", "-c" ], "debuggerPath": "~/vsdbg/vsdbg", "pipeCwd": "${workspaceFolder}", "quoteArgs": true }, "sourceFileMap": { "/app": "${workspaceFolder}/modules/filtermodule" }, "justMyCode": true },
تصحيح أخطاء الوحدة النمطية عن بعد
في عرض التصحيح Visual Studio Code، اختر تكوين التصحيح وحدة التصحيح IoT Edge عن بعد (.NET الأساسية).
حدد بدء تصحيح الأخطاء أو حدد F5. حدد العملية التي تريد إرفاقها.
في عرض تصحيح أخطاء Visual Studio Code، ترى المتغيرات في اللوحة اليسرى.
في Visual Studio Code، حدد نقاط توقف في وحدتك المخصصة.
عند الوصول إلى نقطة توقف، يمكنك فحص المتغيرات، والتنقل عبر التعليمات البرمجية، وتصحيح الوحدة النمطية الخاصة بك.
إشعار
يوضح المثال السابق كيفية تصحيح وحدات IoT Edge على الحاويات البعيدة. يضيف المثال سياق Docker عن بعد ويتغير إلى امتيازات Docker على الجهاز البعيد. بعد الانتهاء من تصحيح أخطاء الوحدات النمطية الخاصة بك، قم بتعيين سياق Docker الخاص بك إلى الافتراضي وإزالة الامتيازات من حساب المستخدم الخاص بك.
راجع إدخال مدونة مطور IoT هذا للحصول على مثال باستخدام جهاز Raspberry Pi.
الخطوات التالية
بعد بناء وحدتك، تعلم كيفية نشر وحدات Azure IoT Edge.
لتطوير وحدات لأجهزة IoT Edge الخاصة بك، تعلم واستخدم Azure IoT Hub SDKs.