إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
IoT Edge 1.5
هام
IoT Edge 1.5 LTS هو الإصدار المدعوم release. وصل IoT Edge 1.4 LTS إلى نهاية صلاحيته في 12 نوفمبر 2024. إذا كنت تستخدم إصدارا أقدم، راجع Update IoT Edge.
استخدم Azure Functions لنشر كود يشغل منطق عملك مباشرة على أجهزة Azure IoT Edge الخاصة بك. يوضح لك هذا الدرس كيفية إنشاء ونشر وظيفة Azure التي تقوم بتصفية بيانات المستشعر على جهاز IoT Edge محاكى. استخدم جهاز IoT Edge المحاكى الذي أنشأته في البدء السريع. في هذا البرنامج التعليمي، تتعلم كيفية:
- استخدم Visual Studio Code لإنشاء دالة Azure
- استخدم Visual Studio Code و Docker لإنشاء صورة Docker ونشرها في سجل حاويات
- قم بنشر الوحدة من سجل الحاويات إلى جهاز IoT Edge الخاص بك
- عرض البيانات المصفاة
وظيفة Azure التي تنشئها في هذا الدرس تقوم بتصفية بيانات درجة الحرارة التي يولدها جهازك. ترسل هذه الدالة الرسائل إلى Azure IoT Hub فقط عندما تكون درجة الحرارة فوق حد محدد.
إذا لم يكن لديك حساب Azure، أنشئ حسابا مجاني قبل أن تبدأ.
المتطلبات الأساسية
قبل أن تبدأ هذا الدرس، اتبع الدرس لإعداد بيئة التطوير الخاصة بك لتطوير حاويات لينكس: طور وحدات Azure IoT Edge باستخدام Visual Studio Code. عند الانتهاء، يكون لديك المتطلبات الأساسية التالية في مكانها:
- نسخة مجانية أو قياسية IoT Hub في Azure.
- جهاز AMD64 يعمل بنظام Azure IoT Edge مع حاويات لينكس. استخدم البدء السريع لإعداد جهاز 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 for Visual Studio Code يمنحك قدرات إدارة وقوالب كود. في هذا القسم، تستخدم Visual Studio Code لإنشاء حل IoT Edge مع دالة Azure.
إنشاء مشروع جديد
اتبع هذه الخطوات لإنشاء قالب حل دالة 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 بقيمة login server من سجل الحاويات Azure الخاص بك. يمكنك استرجاع خادم تسجيل الدخول وتسجيل الدخول من صفحة Overview في سجل الحاويات الخاص بك في بوابة Azure. الوتر الأخير يبدو كأنه
<registry name>.azurecr.io/csharpfunction.
إضافة بيانات اعتماد التسجيل الخاصة بك
ملف البيئة في حلك يخزن بيانات اعتماد سجل الحاويات ويشاركها مع وقت تشغيل IoT Edge. يحتاج وقت التشغيل إلى هذه البيانات لسحب صورك الخاصة إلى جهاز IoT Edge الخاص بك.
يحاول امتداد IoT Edge في Visual Studio Code سحب بيانات اعتماد سجل الحاويات من Azure وتملؤها في ملف البيئة. تحقق مما إذا كانت بيانات الاعتماد موجودة بالفعل في الملف. إذا لم يكن كذلك، فأضفها الآن:
- في مستكشف Visual Studio Code، افتح ملف .env.
- قم بتحديث الحقول بقيم username وpassword التي نسختها من سجل الحاوية Azure الخاص بك. للعثور عليها مرة أخرى، اذهب إلى سجل الحاويات في Azure وابحث في صفحة
Settings <مفاتيح Access c0 />. - احفظ هذا الملف.
إشعار
يستخدم هذا الدرس بيانات اعتماد تسجيل الدخول الخاصة بمسؤول Azure Container Registry، وهي مناسبة للتطوير والاختبار. للإنتاج، استخدم خيار مصادقة أقل امتيازا مثل كيانات الخدمة. لمزيد من المعلومات، راجع إدارة الوصول إلى سجل الحاوية.
تعيين البنية المستهدفة إلى AMD64
وحدات Azure Functions على IoT Edge مدعومة فقط على الحاويات المبنية على لينكس AMD64. البنية المستهدفة الافتراضية ل Visual Studio Code هي Linux AMD64، لكن يمكنك ضبطها صراحة على Linux AMD64 هنا.
- افتح لوحة الأوامر وابحث عن Azure IoT Edge: Set Default Target platform for Edge Solution.
- في لوحة الأوامر، حدد بنية هدف AMD64 من قائمة الخيارات.
تحديث الوحدة النمطية باستخدام التعليمات البرمجية المخصصة
أضف كودا بحيث تعالج وحدة CSharpFunction الرسائل على الحافة قبل إعادة توجيهها إلى IoT Hub.
في مستكشف Visual Studio Code، افتح modules > CSharpFunction > 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 الخاص بك. احصل على هذه القيم من قسم <>مفاتيح الوصول في سجل السجل الخاص بك في بوابة Azure.
docker login -u <ACR username> -p <ACR password> <ACR login server>قد تتلقى تحذير أمان يوصي باستخدام
--password-stdin. على الرغم من أن أفضل الممارسات موصى بها لسيناريوهات الإنتاج، إلا أنها خارج نطاق هذا البرنامج التعليمي. لمزيد من المعلومات، راجع مرجع تسجيل دخول docker.في مستكشف Visual Studio Code، انقر بزر الفأرة الأيمن على ملف deployment.template.json، ثم اختر Build ودفع IoT Edge Solution.
يبدأ أمر الإنشاء والدفع ثلاث عمليات. أولا، يقوم بإنشاء مجلد جديد في الحل يسمى التكوين الذي يحتوي على بيان التوزيع الكامل، والذي تم إنشاؤه من قالب التوزيع وملفات الحلول الأخرى. ثانيا، يتم تشغيله
docker buildلإنشاء صورة الحاوية استنادا إلى Dockerfile المناسب للبنية المستهدفة. بعد ذلك، يتم تشغيلdocker pushلدفع مستودع الصور إلى سجل الحاوية الخاص بك.قد تستغرق هذه العملية عدة دقائق في المرة الأولى، ولكنها أسرع في المرة التالية التي تقوم فيها بتشغيل الأوامر.
عرض صورة الحاوية الخاصة بك
Visual Studio Code يظهر رسالة نجاح عندما تدفع صورة الحاوية إلى سجل الحاويات. لتأكيد العملية، اعرض الصورة في السجل.
- في بوابة Azure، اذهب إلى سجل الحاويات الخاص بك في Azure.
- اختر مستودعات الخدمات>.
- ترى مستودع csharpfunction في القائمة. حدد هذا المستودع لعرض مزيد من التفاصيل.
- في قسم Tags ، سترى علامة 0.0.1-amd64 . تعرض هذه العلامة إصدار الصورة التي أنشأتها والنظام الأساسي لها. ملف module.json في مجلد CSharpFunction يحدد هذه القيم.
نشر الحل وتشغيله
استخدم بوابة Azure لنشر وحدة الوظائف الخاصة بك على جهاز IoT Edge كما في البدء السريع. يمكنك أيضا نشر ومراقبة الوحدات من Visual Studio Code. تستخدم الأقسام التالية Azure IoT Edge و IoT Hub لإضافة Visual Studio Code المذكورة في المتطلبات المسبقة. قم بتثبيت الملحقات الآن إذا لم تكن قد قمت بالفعل.
في مستكشف Visual Studio Code، تحت قسم Azure IoT Hub، قم بتوسيع Devices لرؤية قائمة أجهزة إنترنت الأشياء.
انقر بزر الفأرة الأيمن على اسم جهازك IoT Edge، ثم اختر إنشاء النشر لجهاز واحد.
انتقل إلى مجلد الحل الذي يحتوي على CSharpFunction. افتح مجلد التكوين، وحدد ملف deployment.amd64.json، ثم اختر Select Edge Deployment Manifest.
ضمن جهازك، قم بتوسيع Modules لمشاهدة قائمة بالوحدات النمطية التي تم نشرها وتشغيلها. حدد زر التحديث. يمكنك مشاهدة CSharpFunction الجديد يعمل جنبا إلى جنب مع الوحدة النمطية SimulatedTemperatureSensor$edgeAgent$edgeHub.
قد يستغرق ظهور الوحدات النمطية الجديدة بضع لحظات. يستعيد جهاز IoT Edge معلومات النشر الجديدة من IoT Hub، ويبدأ الحاويات الجديدة، ثم يبلغ الحالة إلى IoT Hub.
عرض البيانات التي تم إنشاؤها
شاهد جميع الرسائل التي تصل إلى مركز إنترنت الأشياء من أجهزتك من خلال تشغيل Azure IoT Hub: بدء مراقبة نقطة نهاية الأحداث المدمجة في لوحة الأوامر. لإيقاف مراقبة الرسائل، قم بتشغيل Azure IoT Hub: إيقاف مراقبة نقطة نهاية الأحداث المدمجة في لوحة الأوامر.
لتصفية العرض ورؤية الرسائل من جهاز معين، انقر بزر الفأرة الأيمن على الجهاز في قسم Azure IoT Hub > Devices في مستكشف Visual Studio Code، واختر Start Monitor Embedded Event Endpoint.
تنظيف الموارد
إذا كنت تخطط للمتابعة إلى المقالة الموصى بها التالية، فاحتفظ بالموارد والتكوينات التي أنشأتها ثم أعد استخدامها. يمكنك أيضا الاستمرار في استخدام نفس جهاز IoT Edge كجهاز اختبار.
وإلا، قم بحذف التكوين المحلي وموارد Azure التي أنشأتها في هذا المقال لتجنب الرسوم.
Delete Azure resources
لا يمكنك التراجع عن حذف موارد Azure ومجموعات الموارد. يُرجى التأكد من عدم حذف مجموعة الموارد أو الموارد غير الصحيحة عن طريق الخطأ. إذا أنشأت IoT Hub داخل مجموعة موارد موجودة تحتوي على موارد تريد الاحتفاظ بها، احذف فقط مورد IoT Hub نفسه، وليس مجموعة الموارد.
لحذف الموارد:
- سجل الدخول إلى بوابة Azure، ثم اختر Resource groups.
- اختر اسم مجموعة الموارد التي تحتوي على موارد اختبار IoT Edge الخاصة بك.
- راجع قائمة الموارد التي تحتويها مجموعة الموارد الخاصة بك. إذا كنت تريد حذفها جميعاً، يمكنك تحديد Delete resource group. إذا أردت حذف بعضها فقط، اختر كل مورد لحذفه بشكل منفصل.
الخطوات التالية
في هذا الدرس، أنشأت وحدة Azure Function تحتوي على كود لتصفية البيانات الخام التي يولدها جهاز IoT Edge الخاص بك.
تابع إلى الدروس التالية لتتعلم طرقا أخرى يمكن ل Azure IoT Edge من خلالها مساعدتك في تحويل البيانات إلى رؤى أعمال على الحافة.