إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
IoT Edge 1.5
هام
IoT Edge 1.5 LTS هو الإصدار المدعوم. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي اعتبارا من 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
استخدم Azure Functions لنشر التعليمات البرمجية التي تشغل منطق عملك مباشرة على أجهزة Azure IoT Edge. يوضح لك هذا البرنامج التعليمي كيفية إنشاء ونشر Azure Function التي تقوم بتصفية بيانات المستشعر على جهاز IoT Edge محاكاة. استخدم جهاز IoT Edge المحاكي الذي أنشأته في عمليات التشغيل السريع. في هذا البرنامج التعليمي، تتعلم كيفية:
- استخدام التعليمات البرمجية Visual Studio لإنشاء دالة Azure
- استخدام Visual Studio Code وDocker لإنشاء صورة Docker ونشرها في سجل حاوية
- نشر الوحدة النمطية من سجل الحاوية إلى جهاز IoT Edge
- عرض البيانات المصفاة
تقوم وظيفة Azure التي تقوم بإنشائها في هذا البرنامج التعليمي بتصفية بيانات درجة الحرارة التي تم إنشاؤها بواسطة جهازك. ترسل الدالة الرسائل المصدر فقط إلى Azure IoT Hub عندما تكون درجة الحرارة أعلى من حد محدد.
إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
المتطلبات الأساسية
قبل بدء هذا البرنامج التعليمي، اتبع البرنامج التعليمي لإعداد بيئة التطوير الخاصة بك لتطوير حاويات Linux: تطوير وحدات Azure IoT Edge باستخدام Visual Studio Code. عند الانتهاء، يكون لديك المتطلبات الأساسية التالية في مكانها:
- مركز IoT مجاني أو قياسي في Azure
- جهاز AMD64 يقوم بتشغيل Azure IoT Edge مع حاويات Linux. استخدم التشغيل السريع لإعداد جهاز Linux أو جهاز Windows.
- سجل حاوية، مثل Azure Container Registry
- تم إعداد Visual Studio Code باستخدام ملحقات Azure IoT EdgeوAzure IoT Hub. أدوات Azure IoT Edge لملحق Visual Studio Code في وضع الصيانة.
- قم بتنزيل وتثبيت نظام إدارة حاويات متوافق مع Docker على جهاز التطوير الخاص بك. قم بتعيينه لتشغيل حاويات Linux.
لتطوير وحدة IoT Edge باستخدام Azure Functions، قم بتثبيت هذه المتطلبات الأساسية الإضافية على جهاز التطوير الخاص بك:
إنشاء مشروع دالة
يمنحك Azure IoT Edge ل Visual Studio Code إمكانات الإدارة وقوالب التعليمات البرمجية. في هذا القسم، يمكنك استخدام Visual Studio Code لإنشاء حل IoT Edge باستخدام Azure Function.
إنشاء مشروع جديد
اتبع هذه الخطوات لإنشاء قالب حل دالة C# قابل للتخصيص.
افتح Visual Studio Code على جهاز التطوير الخاص بك.
افتح لوحة أوامر Visual Studio Code عن طريق تحديد View>Command Palette.
في لوحة الأوامر، أضف الأمر Azure IoT Edge: حل IoT Edge الجديد وقم بتشغيله. اتبع هذه المطالبات في لوحة الأوامر لإنشاء الحل الخاص بك:
- حدد مجلدا: اختر الموقع على جهاز التطوير الخاص بك ل Visual Studio Code لإنشاء ملفات الحل.
- توفير اسم حل: إضافة اسم وصفي للحل الخاص بك، مثل FunctionSolution، أو قبول الافتراضي.|
- حدد قالب وحدة نمطية: اختر Azure Functions - C#.
- توفير اسم وحدة نمطية | قم بتسمية الوحدة النمطية CSharpFunction.
- توفير مستودع صور Docker للوحدة النمطية. يتضمن مستودع الصور اسم سجل الحاوية واسم صورة الحاوية الخاصة بك. يتم ملء صورة الحاوية مسبقا من الخطوة الأخيرة. استبدل localhost:5000 بقيمة خادم تسجيل الدخول من سجل حاوية Azure. يمكنك استرداد خادم تسجيل الدخول من صفحة نظرة عامة على سجل الحاوية في مدخل Microsoft Azure. تبدو السلسلة النهائية مثل <اسم> السجل.azurecr.io/csharpfunction.
إضافة بيانات اعتماد التسجيل الخاصة بك
يخزن ملف البيئة في الحل الخاص بك بيانات الاعتماد لسجل الحاوية الخاص بك ويشاركها مع وقت تشغيل IoT Edge. يحتاج وقت التشغيل إلى بيانات الاعتماد هذه لسحب صورك الخاصة إلى جهاز IoT Edge.
يحاول ملحق IoT Edge في Visual Studio Code سحب بيانات اعتماد سجل الحاوية من Azure وملئها في ملف البيئة. تحقق مما إذا كانت بيانات الاعتماد موجودة بالفعل في الملف. إذا لم يكن كذلك، فأضفها الآن:
- في مستكشف Visual Studio Code، افتح
.envالملف. - قم بتحديث الحقول بقيم اسم المستخدموكلمة المرور التي نسختها من سجل حاوية Azure. للعثور عليها مرة أخرى، انتقل إلى سجل الحاوية في Azure وابحث في صفحة Settings>Access keys .
- احفظ هذا الملف.
إشعار
يستخدم هذا البرنامج التعليمي بيانات اعتماد تسجيل دخول المسؤول لسجل حاوية Azure، والتي تعتبر ملائمة لسيناريوهات التطوير والاختبار. للإنتاج، استخدم خيار مصادقة أقل امتيازا مثل كيانات الخدمة. لمزيد من المعلومات، راجع إدارة الوصول إلى سجل الحاوية.
تعيين البنية المستهدفة إلى AMD64
يتم دعم وحدات Azure Functions النمطية على IoT Edge فقط على الحاويات المستندة إلى Linux AMD64. البنية المستهدفة الافتراضية ل Visual Studio Code هي Linux AMD64، ولكنك قمت بتعيينها بشكل صريح إلى Linux AMD64 هنا.
افتح لوحة الأوامر وابحث عن Azure IoT Edge: تعيين النظام الأساسي الهدف الافتراضي لحل Edge.
في لوحة الأوامر، حدد بنية هدف AMD64 من قائمة الخيارات.
تحديث الوحدة النمطية باستخدام التعليمات البرمجية المخصصة
أضف بعض التعليمات البرمجية بحيث تعالج الوحدة النمطية CSharpFunction الرسائل على الحافة قبل إعادة توجيهها إلى IoT Hub.
في مستكشف Visual Studio Code، افتح >CSharpFunction.cs.
استبدل محتويات ملف CSharpFunction.cs بالتعليمة البرمجية التالية. تتلقى هذه التعليمة البرمجية بيانات تتبع الاستخدام حول درجة حرارة الجهاز والجو، وتحيل الرسالة إلى IoT Hub فقط إذا كانت درجة حرارة الجهاز أعلى من حد محدد.
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.EdgeHub; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Functions.Samples { public static class CSharpFunction { [FunctionName("CSharpFunction")] public static async Task FilterMessageAndSendMessage( [EdgeHubTrigger("input1")] Message messageReceived, [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output, ILogger logger) { const int temperatureThreshold = 20; byte[] messageBytes = messageReceived.GetBytes(); var messageString = System.Text.Encoding.UTF8.GetString(messageBytes); if (!string.IsNullOrEmpty(messageString)) { logger.LogInformation("Info: Received one non-empty message"); // Get the body of the message and deserialize it. var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString); if (messageBody != null && messageBody.machine.temperature > temperatureThreshold) { // Send the message to the output as the temperature value is greater than the threshold. using (var filteredMessage = new Message(messageBytes)) { // Copy the properties of the original message into the new Message object. foreach (KeyValuePair<string, string> prop in messageReceived.Properties) {filteredMessage.Properties.Add(prop.Key, prop.Value);} // Add a new property to the message to indicate it is an alert. filteredMessage.Properties.Add("MessageType", "Alert"); // Send the message. await output.AddAsync(filteredMessage); logger.LogInformation("Info: Received and transferred a message with temperature above the threshold"); } } } } } //Define the expected schema for the body of incoming messages. class MessageBody { public Machine machine {get; set;} public Ambient ambient {get; set;} public string timeCreated {get; set;} } class Machine { public double temperature {get; set;} public double pressure {get; set;} } class Ambient { public double temperature {get; set;} public int humidity {get; set;} } }حفظ الملف.
بناء ودفع حل IoT Edge الخاص بك
في القسم السابق، قمت بإنشاء حل IoT Edge وتغيير CSharpFunction لتصفية الرسائل مع درجات حرارة الجهاز المبلغ عنها أقل من الحد المقبول. الآن بناء الحل كصورة حاوية ودفعها إلى سجل الحاوية الخاص بك.
افتح المحطة الطرفية المتكاملة ل Visual Studio Code. حدد عرض>المحطة الطرفية.
سجل الدخول إلى Docker في المحطة الطرفية. استخدم اسم المستخدم وكلمة المرور وخادم تسجيل الدخول من سجل حاوية Azure. احصل على هذه القيم من قسم مفاتيح الوصول في السجل الخاص بك في مدخل Microsoft Azure.
docker login -u <ACR username> -p <ACR password> <ACR login server>يمكنك تلقي تحذير أمان يوصي باستخدام
--password-stdin. على الرغم من أن أفضل الممارسات موصى بها لسيناريوهات الإنتاج، إلا أنها خارج نطاق هذا البرنامج التعليمي. لمزيد من المعلومات، راجع مرجع تسجيل دخول docker.في مستكشف Visual Studio Code، انقر بزر الماوس الأيمن فوق ملف deployment.template.json ، ثم حدد Build and Push IoT Edge Solution.
يبدأ أمر الإنشاء والدفع ثلاث عمليات. أولا، يقوم بإنشاء مجلد جديد في الحل يسمى التكوين الذي يحتوي على بيان التوزيع الكامل، والذي تم إنشاؤه من قالب التوزيع وملفات الحلول الأخرى. ثانيا، يتم تشغيله
docker buildلإنشاء صورة الحاوية استنادا إلى Dockerfile المناسب للبنية المستهدفة. بعد ذلك، يتم تشغيلdocker pushلدفع مستودع الصور إلى سجل الحاوية الخاص بك.قد تستغرق هذه العملية عدة دقائق في المرة الأولى، ولكنها أسرع في المرة التالية التي تقوم فيها بتشغيل الأوامر.
عرض صورة الحاوية الخاصة بك
يظهر Visual Studio Code رسالة نجاح عند دفع صورة الحاوية إلى سجل الحاوية. لتأكيد العملية، اعرض الصورة في السجل.
- في مدخل Microsoft Azure، انتقل إلى سجل حاوية Azure.
- حدد >.
- ترى مستودع csharpfunction في القائمة. حدد هذا المستودع لعرض مزيد من التفاصيل.
- في قسم Tags ، سترى علامة 0.0.1-amd64 . تعرض هذه العلامة إصدار الصورة التي أنشأتها والنظام الأساسي لها. يتم تعيين هذه القيم في ملف module.json في المجلد CSharpFunction .
نشر الحل وتشغيله
استخدم مدخل Microsoft Azure لنشر الوحدة النمطية للدالة على جهاز IoT Edge كما هو الحال في التشغيل السريع. يمكنك أيضا نشر ومراقبة الوحدات النمطية من Visual Studio Code. تستخدم الأقسام التالية Azure IoT Edge وIoT Hub لملحقات Visual Studio Code المدرجة في المتطلبات الأساسية. قم بتثبيت الملحقات الآن إذا لم تكن قد قمت بالفعل.
في مستكشف Visual Studio Code، ضمن قسم Azure IoT Hub ، قم بتوسيع Devices لمشاهدة قائمة أجهزة IoT.
انقر بزر الماوس الأيمن فوق اسم جهاز IoT Edge الخاص بك، ثم حدد Create Deployment for Single Device.
انتقل إلى مجلد الحل الذي يحتوي على CSharpFunction. افتح مجلد التكوين، وحدد ملف deployment.amd64.json، ثم اختر Select Edge Deployment Manifest.
ضمن جهازك، قم بتوسيع Modules لمشاهدة قائمة بالوحدات النمطية التي تم نشرها وتشغيلها. حدد زر التحديث. يمكنك مشاهدة CSharpFunction الجديد يعمل جنبا إلى جنب مع الوحدة النمطية SimulatedTemperatureSensor$edgeAgent$edgeHub.
قد يستغرق ظهور الوحدات النمطية الجديدة بضع لحظات. يسترد جهاز IoT Edge معلومات النشر الجديدة الخاصة به من IoT Hub، ويبدأ تشغيل الحاويات الجديدة، ثم يبلغ عن الحالة مرة أخرى إلى IoT Hub.
عرض البيانات التي تم إنشاؤها
راجع جميع الرسائل التي تصل إلى مركز IoT الخاص بك من أجهزتك عن طريق تشغيل Azure IoT Hub: بدء مراقبة نقطة نهاية الحدث المضمنة في لوحة الأوامر. لإيقاف مراقبة الرسائل، قم بتشغيل Azure IoT Hub: إيقاف مراقبة نقطة نهاية الحدث المضمنة في لوحة الأوامر.
لتصفية طريقة العرض ورؤية الرسائل من جهاز معين، انقر بزر الماوس الأيمن فوق الجهاز في قسم Azure IoT Hub>Devices في مستكشف Visual Studio Code، وحدد Start Monitoring Built-in Event Endpoint.
تنظيف الموارد
إذا كنت تخطط للمتابعة إلى المقالة الموصى بها التالية، فاحتفظ بالموارد والتكوينات التي أنشأتها ثم أعد استخدامها. يمكنك أيضا الاستمرار في استخدام نفس جهاز IoT Edge كجهاز اختبار.
وإلا، احذف التكوينات المحلية وموارد Azure التي أنشأتها في هذه المقالة لتجنب الرسوم.
قم بحذف موارد Azure.
حذف موارد Azure ومجموعات الموارد لا رجعة فيه. يُرجى التأكد من عدم حذف مجموعة الموارد أو الموارد غير الصحيحة عن طريق الخطأ. إذا قمت بإنشاء IoT Hub داخل مجموعة موارد موجودة تحتوي على موارد تريد الاحتفاظ بها، فاحذف مورد IoT Hub نفسه فقط، وليس مجموعة الموارد.
لحذف الموارد:
- سجل الدخول إلى مدخل Azure، وحدد "Resource groups".
- حدد اسم مجموعة الموارد التي تحتوي على موارد اختبار IoT Edge.
- راجع قائمة الموارد التي تحتويها مجموعة الموارد الخاصة بك. إذا كنت تريد حذفها جميعاً، يمكنك تحديد Delete resource group. إذا كنت تريد حذف بعضها فقط، يمكنك تحديد كل مورد لحذفها بشكل فردي.
الخطوات التالية
في هذا البرنامج التعليمي، قمت بإنشاء وحدة Azure Function النمطية مع رمز لتصفية البيانات الأولية التي تم إنشاؤها بواسطة جهاز IoT Edge الخاص بك.
تابع إلى البرامج التعليمية التالية لمعرفة الطرق الأخرى التي يمكن أن يساعدك بها Azure IoT Edge في تحويل البيانات إلى رؤى للأعمال على الحافة.