إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
IoT Edge 1.1
هام
كان تاريخ انتهاء دعم IoT Edge 1.1 هو 13 ديسمبر 2022. تحقق من دورة حياة المنتج من Microsoft للحصول على معلومات حول كيفية دعم هذا المنتج أو الخدمة أو التقنية أو API. لمزيد من المعلومات حول التحديث إلى أحدث إصدار من IoT Edge، راجع تحديث IoT Edge.
في هذا المقال سنستخدم مرة أخرى استخدام الجهاز المطور VM كجهاز محاكاة. ولكن بدلاً من إرسال البيانات مباشرة إلى مركز IoT، يرسل الجهاز البيانات إلى جهاز IoT Edge المكون كبوابة شفافة.
نراقب تشغيل جهاز IoT Edge بينما يرسل الجهاز المحاكي البيانات. بمجرد الانتهاء من تشغيل الجهاز، ننظر إلى البيانات الموجودة في حساب التخزين لدينا للتحقق من أن كل شيء يعمل كما هو متوقع.
عادة ما يتم تنفيذ هذه الخطوة بواسطة مطور سحابي أو مطور الجهاز.
في هذا البرنامج التعليمي، ستتعلّم طريقة:
- إنشاء جهاز انتقال البيانات من الخادم وتشغيله.
- تحقق من أن يتم تخزين البيانات التي تم إنشاؤها في مخزن Azure Blob.
- تحقق من أن نموذج التعلم الآلي قام بتصنيف بيانات الجهاز.
المتطلبات الأساسية
هذه المقالة هي جزء سلسلة تعليمية حول استخدام التعلم الإلكتروني من Azure على IoT Edge. كل مقالة في السلسلة تستند إلى العمل في المقالة السابقة. إذا وصلت إلى هذه المقالة مباشرةً، فقم بزيارة المقالة الأولى في السلسلة.
مراجعة التحكم في الجهاز
أعد استخدام مشروع DeviceHarness لمحاكاة جهاز انتقال البيانات من الخادم. يتطلب الاتصال بالبوابة الشفافة أمرين إضافيين:
- تسجيل الشهادة لجعل جهاز IoT الخاص بالمرحلة النهائية يثق في مرجع الشهادة المستخدمة من قبل وقت التشغيل IoT Edge. في حالتنا، جهاز المراحل الأخير هو VM مطور.
- أضف اسم المجال المؤهل بالكامل لبوابة الحافة (FQDN) إلى سلسلة اتصال الجهاز.
انظر إلى التعليمات البرمجية لمعرفة كيفية تنفيذ هذين البندين.
على جهاز التطوير الخاص بك، افتح رمز Visual Studio.
استخدم File>Open Folder... لفتح C:\source\IoTEdgeAndMlSample\DeviceHarness.
انظر إلى الأسلوب InstallCertificate() في البرنامج.cs.
لاحظ أنه إذا وجد الرمز مسار الشهادة، فإنه سيستدعي طريقة CertificateManager.InstallCACert لتثبيت الشهادة على الجهاز.
الآن انظر إلى طريقة GetIotHubDevice على فئة TurbofanDevice.
عندما يحدد المستخدم FQDN للبوابة باستخدام الخيار "-g"، يتم تمرير هذه القيمة إلى هذا الأسلوب كمتغير
gatewayFqdn، والذي يتم إلحاقه بالجهاز سلسلة الاتصال.connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
إنشاء وتشغيل جهاز انتقال البيانات من الخادم
وبينما لا يزال مشروع DeviceHarness مفتوحًا فيVisual Studio Code، قم ببناء المشروع. من القائمة Terminal، حدد Run Build Task وحدد Build.
ابحث عن اسم المجال المؤهل بالكامل (FQDN) لبوابة الحافة الخاصة بك عن طريق الانتقال إلى جهاز IoT Edge (Linux VM) في مدخل Microsoft Azure ونسخ قيمة اسم DNS من صفحة النظرة العامة.
ابدأ تشغيل جهاز IoT (Linux VM) إذا لم يكن قيد التشغيل بالفعل.
افتح وحدة Visual Studio Code. من القائمة Terminal، حدد New Terminal وقم بتشغيل الأمر التالي، واستبدل
<edge_device_fqdn>باسم DNS الذي نسخته من جهاز IoT Edge (Linux VM):dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1يحاول التطبيق تثبيت الشهادة على جهاز التطوير الخاص بك. عند حدوث ذلك، اقبل تحذير الأمان.
عند مطالبتك سلسلة الاتصال IoT Hub، انقر فوق علامة الحذف (...) على لوحة أجهزة Azure IoT Hub وحدد Copy IoT Hub Connection String. الصق القيمة في الوحدة الطرفية.
سترى مخرجات مثل:
Found existing device: Client_001 Using device connection string: HostName=<your hub>.azure-devices.net;DeviceId=Client_001;SharedAccessKey=xxxxxxx; GatewayHostName=iotedge-xxxxxx.<region>.cloudapp.azure.com Device: 1 Message count: 50 Device: 1 Message count: 100 Device: 1 Message count: 150 Device: 1 Message count: 200 Device: 1 Message count: 250لاحظ إضافة "GatewayHostName" إلى سلسلة الاتصال الجهاز، مما يؤدي إلى اتصال الجهاز من خلال IoT Hub من خلال بوابة IoT Edge الشفافة.
تحقق من المخرجات
مخرجات جهاز IoT Edge
يمكن رؤية الإخراج من وحدة avroFileWriter بسهولة من خلال النظر إلى جهاز IoT Edge.
SSH في جهازك الظاهري IoT Edge.
ابحث عن الملفات المكتوبة على القرص.
find /data/avrofiles -type fسيبدو إخراج الأمر كما في المثال التالي:
/data/avrofiles/2019/4/18/22/10.avroقد يكون لديك أكثر من ملف واحد اعتمادًا على توقيت التشغيل.
انتبه إلى الطوابع الزمنية. تقوم الوحدة avroFileWriter بتحميل الملفات إلى السحابة بمجرد أن يكون وقت التعديل الأخير أكثر من 10 دقائق في الماضي (راجع MODIFIED_FILE_TIMEOUT في uploader.py في الوحدة النمطية avroFileWriter).
بمجرد انقضاء الدقائق العشر، يجب على الوحدة رفع الملفات. إذا تمت عملية الرفع بنجاح، فسيتم حذف الملفات من القرص.
تخزين Azure
يمكننا مراقبة نتائج جهاز انتقال البيانات من الخادم من خلال النظر في حسابات التخزين حيث نتوقع توجيه البيانات.
على آلة التطوير قم بفتح Visual Studio Code.
في لوحة "AZURE STORAGE" في نافذة الاستكشاف، انتقل إلى الشجرة للعثور على حساب التخزين الخاص بك.
قم بتوسيع عقدة Blob Containers .
من العمل الذي قمنا به في الجزء السابق من البرنامج التعليمي، نتوقع أن تحتوي حاوية ruldata على رسائل مع RUL. قم بتوسيع عقدة ruldata .
سترى ملف كائن ثنائي كبير الحجم واحد أو أكثر باسم مثل:
<IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.انقر بزر الماوس الأيمن فوق أحد الملفات واختر تنزيل Blob لحفظ الملف إلى جهاز التطوير الخاص بك.
بعد ذلك، قم بتوسيع عقدة uploadturbofanfiles . في المقالة السابقة، وضعنا هذا الموقع كهدف للملفات التي تم تحميلها بواسطة وحدة avroFileWriter.
انقر بزر الماوس الأيمن فوق الملفات واختر تنزيل Blob لحفظه في جهاز التطوير الخاص بك.
قراءة محتويات ملف أفرو
أدرجنا أداة بسيطة بسطر الأوامر لقراءة ملف أفرو وإرجاع سلسلة JSON من الرسائل في الملف. في هذا القسم، سنقوم بتثبيتها وتشغيلها.
افتح محطة طرفية في Visual Studio Code (Terminal>New terminal).
تثبيت hubavroreader:
pip install c:\source\IoTEdgeAndMlSample\HubAvroReaderاستخدم hubavroreader لقراءة ملف Avro الذي قمت بتنزيله من ruldata.
hubavroreader <avro file with ath> | moreلاحظ أن نص الرسالة يبدو كما توقعنا مع معرف الجهاز وRUL المتوقع.
{ "Body": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CycleTime": 1.0, "PredictedRul": 170.1723693909444 }, "EnqueuedTimeUtc": "<time>", "Properties": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CreationTimeUtc": "01/01/0001 00:00:00", "EnqueuedTimeUtc": "01/01/0001 00:00:00" }, "SystemProperties": { "connectionAuthMethod": "{\"scope\":\"module\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "connectionDeviceGenerationId": "636857841798304970", "connectionDeviceId": "aaTurbofanEdgeDevice", "connectionModuleId": "turbofanRouter", "contentEncoding": "utf-8", "contentType": "application/json", "correlationId": "3d0bc256-b996-455c-8930-99d89d351987", "enqueuedTime": "<time>", "iotHubName": "mledgeiotwalkthroughhub" } }قم بتشغيل نفس الأمر لتمرير ملف Avro الذي قمت بتنزيله من uploadturbofanfiles.
كما هو متوقع، تحتوي هذه الرسائل على كافة بيانات المستشعر وإعدادات التشغيل من الرسالة الأصلية. يمكن استخدام هذه البيانات لتحسين نموذج RUL على جهاز الحافة لدينا.
{ "Body": { "CycleTime": 1.0, "OperationalSetting1": -0.0005000000237487257, "OperationalSetting2": 0.00039999998989515007, "OperationalSetting3": 100.0, "PredictedRul": 170.17236328125, "Sensor1": 518.6699829101562, "Sensor10": 1.2999999523162842, "Sensor11": 47.29999923706055, "Sensor12": 522.3099975585938, "Sensor13": 2388.010009765625, "Sensor14": 8145.31982421875, "Sensor15": 8.424599647521973, "Sensor16": 0.029999999329447746, "Sensor17": 391.0, "Sensor18": 2388.0, "Sensor19": 100.0, "Sensor2": 642.3599853515625, "Sensor20": 39.11000061035156, "Sensor21": 23.353700637817383, "Sensor3": 1583.22998046875, "Sensor4": 1396.8399658203125, "Sensor5": 14.619999885559082, "Sensor6": 21.610000610351562, "Sensor7": 553.969970703125, "Sensor8": 2387.9599609375, "Sensor9": 9062.169921875 }, "ConnectionDeviceId": "Client_001", "CorrelationId": "70df0c98-0958-4c8f-a422-77c2a599594f", "CreationTimeUtc": "0001-01-01T00:00:00+00:00", "EnqueuedTimeUtc": "<time>" }
تنظيف الموارد
إذا كنت تخطط لاستكشاف الموارد المستخدمة من قبل هذا البرنامج التعليمي من البداية إلى النهاية، فانتظر حتى تنتهي لتنظيف الموارد التي قمت بإنشائها. وإلا، استخدم الخطوات التالية لحذفها:
حذف مجموعة (مجموعات) الموارد التي تم إنشاؤها للاحتفاظ بـ Dev VM وIoT Edge VM وIoT Hub وحساب التخزين وخدمة مساحة عمل التعلم الآلي (والموارد التي تم إنشاؤها: سجل الحاويات، وApplication Insights، وخزنة المفاتيح وحساب التخزين).
حذف مشروع التعلم الآلي في دفاتر ملاحظات Azure.
إذا قمت باستنساخ repo محليًا، فقم بإغلاق أي إطارات PowerShell أو VS Code تشير إلى repo المحلي، ثم حذف دليل repo.
إذا قمت بإنشاء شهادات محليا، فاحذف المجلد c:\edgeCertificates.
الخطوات التالية
في هذه المقالة، استخدمنا الجهاز الظاهري للتطوير لمحاكاة جهاز انتقال البيانات من الخادم يرسل بيانات الاستشعار والتشغيل إلى جهاز IoT Edge. لقد تحققنا من أن الوحدات النمطية على الجهاز قد تم توجيهها وتصنيفها، وأنها مستمرة وتقوم بتحميل البيانات عن طريق فحص التشغيل في الوقت الحقيقي للجهاز الطرفي ومن خلال النظر في الملفات التي تم تحميلها إلى حساب التخزين.
لمواصلة التعلم حول قدرات IoT Edge، جرب هذا البرنامج التعليمي التالي: