البرنامج التعليمي: توفير المبنى الخاص بك ومراقبة ظروف العمل باستخدام معاينة Azure Digital Twins
هام
تم إصدار إصدار جديد من خدمة Azure Digital Twins. في ضوء القدرات الموسعة للخدمة الجديدة، تم إيقاف خدمة Azure Digital Twins الأصلية (الموضحة في مجموعة الوثائق هذه).
لعرض وثائق الخدمة الجديدة، قم بزيارة وثائق Azure Digital Twins النشطة.
يوضح هذا البرنامج التعليمي كيفية استخدام Azure Digital Twins Preview لمراقبة مساحاتك لظروف درجة الحرارة المطلوبة ومستوى الراحة. بعد تكوين نموذج البناء، يمكنك توفير المبنى الخاص بك وتشغيل وظائف مخصصة على بيانات المستشعر باستخدام الخطوات الواردة في هذا البرنامج التعليمي.
في هذا البرنامج التعليمي، تتعلم كيفية:
- حدد الشروط التي يجب مراقبتها.
- إنشاء دالة معرفة من قبل المستخدم (UDF).
- محاكاة بيانات المستشعر.
- احصل على نتائج لوظيفة معرفة من قبل المستخدم.
المتطلبات الأساسية
يفترض هذا البرنامج التعليمي أنك انتهيت من إعداد Azure Digital Twins. قبل المتابعة، تأكد من أن لديك:
- حساب Azure.
- مثال على تشغيل Digital Twins.
- تم تنزيل عينات Digital Twins C # واستخراجها على جهاز العمل الخاص بك.
- .NET Core SDK الإصدار 2.1.403 أو إصدار أحدث على جهاز التطوير الخاص بك لإنشاء العينة وتشغيلها. قم بتشغيل
dotnet --versionللتحقق من تثبيت الإصدار الصحيح. - Visual Studio التعليمات البرمجية لاستكشاف نموذج التعليمة البرمجية.
تلميح
استخدم اسم مثيل Digital Twins فريدا إذا كنت تقوم بتوفير مثيل جديد.
تحديد الشروط التي يجب مراقبتها
يمكنك تحديد مجموعة من الشروط المحددة لمراقبتها في بيانات الجهاز أو المستشعر، تسمى المطابقات. يمكنك بعد ذلك تعريف وظائف تسمى الدوال المعرفة من قبل المستخدم. تقوم الوظائف المعرفة من قبل المستخدم بتنفيذ منطق مخصص على البيانات التي تأتي من المساحات والأجهزة الخاصة بك، عند حدوث الشروط المحددة من قبل المطابقين. لمزيد من المعلومات، اقرأ معالجة البيانات والدالات المعرفة من قبل المستخدم.
من مشروع نموذج التشغيل السريع للإشغال، افتح ملف src\actions\provisionSample.yaml في التعليمات البرمجية Visual Studio. لاحظ المقطع الذي يبدأ بمطابقات النوع. يقوم كل إدخال ضمن هذا النوع بإنشاء مطابق بالاسم المحدد. سيقوم المطابق بمراقبة مستشعر من نوع dataTypeValue. لاحظ مدى ارتباطها بالمساحة المسماة Focus Room A1، والتي تحتوي على عقدة أجهزة تحتوي على عدد قليل من المستشعرات. لتوفير مطابق يقوم بتتبع أحد هذه المستشعرات، تأكد من أن dataTypeValue الخاص به يطابق dataType الخاص بالمستشعر.
أضف المطابق التالي أسفل المطابقات الموجودة. تأكد من محاذاة المفاتيح وعدم استبدال المسافات بعلامات تبويب. هذه الأسطر موجودة أيضا في ملف provisionSample.yaml كأسطر معلقة. يمكنك إلغاء التعليق عليها عن طريق إزالة # الحرف الموجود أمام كل سطر.
- name: Matcher Temperature
dataTypeValue: Temperature
سيقوم هذا المطابق بتتبع المستشعر SAMPLE_SENSOR_TEMPERATURE الذي أضفته في البرنامج التعليمي الأول.
إنشاء الوظيفة المحددة من قبل المستخدم
يمكنك استخدام الوظائف المعرفة من قبل المستخدم لتخصيص معالجة بيانات المستشعر. إنها تعليمات برمجية مخصصة لجافا سكريبت يمكن تشغيلها داخل مثيل Azure Digital Twins الخاص بك، عند حدوث ظروف محددة كما هو موضح من قبل المطابقين. يمكنك إنشاء مطابقات ووظائف معرفة من قبل المستخدم لكل مستشعر تريد مراقبته. لمزيد من المعلومات، اقرأ معالجة البيانات والدالات المعرفة من قبل المستخدم.
في نموذج ملف provisionSample.yaml ، ابحث عن مقطع يبدأ بنوع userdefinedfunctions. يوفر هذا القسم وظيفة معرفة من قبل المستخدم باسم معين. يعمل UDF هذا على قائمة المطابقين ضمن matcherNames. لاحظ كيف يمكنك توفير ملف جافا سكريبت الخاص بك ل UDF كبرنامج نصي.
لاحظ أيضا القسم المسمى تعيينات الأدوار. يقوم بتعيين دور مسؤول الفضاء إلى الدالة المعرفة من قبل المستخدم. يسمح له هذا الدور بالوصول إلى الأحداث التي تأتي من أي من المساحات المتوفرة.
تكوين UDF لتضمين مطابق درجة الحرارة عن طريق إضافة أو إلغاء التعليق على السطر
matcherNamesالتالي في عقدة الملف provisionSample.yaml :- Matcher Temperatureافتح الملفsrc\actions\userDefinedFunctions\availability.js في المحرر. هذا هو الملف المشار إليه في عنصر البرنامج النصي من provisionSample.yaml. تبحث الدالة المعرفة من قبل المستخدم في هذا الملف عن الظروف التي لا يتم فيها اكتشاف أي حركة في الغرفة وتكون مستويات ثاني أكسيد الكربون أقل من 1000 جزء في المليون.
قم بتعديل ملف جافا سكريبت لمراقبة درجة الحرارة والظروف الأخرى. أضف الأسطر التالية من التعليمات البرمجية للبحث عن الظروف التي لا يتم فيها اكتشاف أي حركة في الغرفة ، ومستويات ثاني أكسيد الكربون أقل من 1000 جزء في المليون ، ودرجة الحرارة أقل من 78 درجة فهرنهايت.
ملاحظة
يقوم هذا القسم بتعديل الملفsrc\actions\userDefinedFunctions\availability.js بحيث يمكنك أن تتعلم بالتفصيل طريقة واحدة لكتابة دالة معرفة من قبل المستخدم. ومع ذلك، يمكنك اختيار استخدام src\actions\userDefinedFunctions\availabilityForTutorial.js الملفات مباشرة في الإعداد. يحتوي هذا الملف على جميع التغييرات المطلوبة لهذا البرنامج التعليمي. إذا كنت تستخدم هذا الملف بدلا من ذلك، تأكد من استخدام اسم الملف الصحيح لمفتاح البرنامج النصي في src\actions\provisionSample.yaml.
أ. في الجزء العلوي من الملف ، أضف الأسطر التالية لدرجة الحرارة أسفل التعليق
// Add your sensor type here:var temperatureType = "Temperature"; var temperatureThreshold = 78;ب. تضاف الأسطر التالية بعد العبارة التي تحدد
var motionSensor، أسفل التعليق// Add your sensor variable here:var temperatureSensor = otherSensors.find(function(element) { return element.DataType === temperatureType; });ج. يضاف السطر التالي بعد العبارة التي تحدد
var carbonDioxideValue، أسفل التعليق// Add your sensor latest value here:var temperatureValue = getFloatValue(temperatureSensor.Value().Value);د. إزالة الأسطر التالية من التعليمات البرمجية من أسفل التعليق
// Modify this line to monitor your sensor value:if(carbonDioxideValue === null || motionValue === null) { sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide or motion are null, returning"); return; }يستعاض عنها بالأسطر التالية:
if(carbonDioxideValue === null || motionValue === null || temperatureValue === null){ sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide, motion, or temperature are null, returning"); return; }هـ. إزالة الأسطر التالية من التعليمات البرمجية من أسفل التعليق
// Modify these lines as per your sensor:var availableFresh = "Room is available and air is fresh"; var noAvailableOrFresh = "Room is not available or air quality is poor";يستعاض عنها بالأسطر التالية:
var alert = "Room with fresh air and comfortable temperature is available."; var noAlert = "Either room is occupied, or working conditions are not right.";و. إزالة كتلة التعليمات البرمجية التالية if-else بعد التعليق
// Modify this code block for your sensor:// If carbonDioxide less than threshold and no presence in the room => log, notify and set parent space computed value if(carbonDioxideValue < carbonDioxideThreshold && !presence) { log(`${availableFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`); setSpaceValue(parentSpace.Id, spaceAvailFresh, availableFresh); } else { log(`${noAvailableOrFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`); setSpaceValue(parentSpace.Id, spaceAvailFresh, noAvailableOrFresh); // Set up custom notification for poor air quality parentSpace.Notify(JSON.stringify(noAvailableOrFresh)); }واستبدله بكتلة if-else التالية:
// If sensor values are within range and room is available if(carbonDioxideValue < carbonDioxideThreshold && temperatureValue < temperatureThreshold && !presence) { log(`${alert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`); // log, notify and set parent space computed value setSpaceValue(parentSpace.Id, spaceAvailFresh, alert); // Set up notification for this alert parentSpace.Notify(JSON.stringify(alert)); } else { log(`${noAlert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`); // log, notify and set parent space computed value setSpaceValue(parentSpace.Id, spaceAvailFresh, noAlert); }سيبحث UDF المعدل عن حالة تصبح فيها الغرفة متاحة وتحتوي على ثاني أكسيد الكربون ودرجة الحرارة ضمن حدود مقبولة. سيقوم بإنشاء إشعار مع البيان
parentSpace.Notify(JSON.stringify(alert));عند استيفاء هذا الشرط. سيقوم بتعيين قيمة المساحة المراقبة بغض النظر عما إذا كان الشرط قد تم الوفاء به ، مع الرسالة المقابلة.ز. احفظ الملف
افتح نافذة أوامر، وانتقل إلى إشغال المجلد-التشغيل السريع\src. قم بتشغيل الأمر التالي لتوفير الرسم البياني للذكاء المكاني والدالة المعرفة من قبل المستخدم:
dotnet run ProvisionSampleهام
لمنع الوصول غير المصرح به إلى واجهة برمجة تطبيقات إدارة التوائم الرقمية، يتطلب منك تطبيق التشغيل السريع للإشغال تسجيل الدخول باستخدام بيانات اعتماد حساب Azure الخاص بك. يحفظ بيانات الاعتماد الخاصة بك لفترة وجيزة ، لذلك قد لا تحتاج إلى تسجيل الدخول في كل مرة تقوم فيها بتشغيله. في المرة الأولى التي يتم فيها تشغيل هذا البرنامج ، وعندما تنتهي صلاحية بيانات الاعتماد المحفوظة بعد ذلك ، يوجهك التطبيق إلى صفحة تسجيل الدخول ويعطي رمزا خاصا بجلسة العمل لإدخاله في تلك الصفحة. اتبع المطالبات لتسجيل الدخول باستخدام حساب Azure الخاص بك.
بعد مصادقة حسابك، يبدأ التطبيق في إنشاء نموذج رسم بياني مكاني كما تم تكوينه في provisionSample.yaml. انتظر حتى ينتهي التوفير. سوف يستغرق الأمر بضع دقائق. بعد ذلك ، راقب الرسائل في نافذة الأوامر ولاحظ كيفية إنشاء الرسم البياني المكاني. لاحظ كيف يقوم التطبيق بإنشاء مركز إنترنت الأشياء في العقدة الجذر أو
Venue.من الإخراج في نافذة الأوامر ، انسخ قيمة
ConnectionString، أسفل القسم ، إلى الحافظةDevices. ستحتاج إلى هذه القيمة لمحاكاة اتصال الجهاز في القسم التالي.
تلميح
إذا تلقيت رسالة خطأ مشابهة ل "تم إحباط عملية الإدخال/الإخراج بسبب خروج مؤشر ترابط أو طلب تطبيق" في منتصف التوفير، فحاول تشغيل الأمر مرة أخرى. قد يحدث هذا إذا انتهت مهلة عميل HTTP من مشكلة في الشبكة.
محاكاة بيانات المستشعر
في هذا القسم، ستستخدم المشروع المسمى اتصال الجهاز في العينة. ستقوم بمحاكاة بيانات المستشعر للكشف عن الحركة ودرجة الحرارة وثاني أكسيد الكربون. يقوم هذا المشروع بإنشاء قيم عشوائية لأجهزة الاستشعار، ويرسلها إلى مركز إنترنت الأشياء باستخدام سلسلة اتصال الجهاز.
في نافذة أوامر منفصلة، انتقل إلى نموذج Azure Digital Twins ثم إلى مجلد اتصال الجهاز .
قم بتشغيل هذا الأمر للتأكد من صحة تبعيات المشروع:
dotnet restoreافتح ملف appsettings.json في المحرر الخاص بك، وقم بتحرير القيم التالية:
أ. DeviceConnectionString: قم بتعيين قيمة
ConnectionStringفي نافذة الإخراج من القسم السابق. انسخ هذه السلسلة بالكامل ، ضمن علامات الاقتباس ، حتى يتمكن المحاكي من الاتصال بشكل صحيح بمركز إنترنت الأشياء.ب. HardwareId داخل صفيف المستشعرات: نظرا لأنك تقوم بمحاكاة الأحداث من المستشعرات المتوفرة إلى مثيل Azure Digital Twins، يجب أن يتطابق معرف الجهاز وأسماء المستشعرات في هذا الملف مع
sensorsعقدة ملف provisionSample.yaml.أضف إدخالا جديدا لمستشعر درجة الحرارة. يجب أن تبدو عقدة المستشعرات في appsettings.json كما يلي:
"Sensors": [{ "DataType": "Motion", "HardwareId": "SAMPLE_SENSOR_MOTION" },{ "DataType": "CarbonDioxide", "HardwareId": "SAMPLE_SENSOR_CARBONDIOXIDE" },{ "DataType": "Temperature", "HardwareId": "SAMPLE_SENSOR_TEMPERATURE" }]قم بتشغيل هذا الأمر لبدء محاكاة أحداث الجهاز لدرجة الحرارة والحركة وثاني أكسيد الكربون:
dotnet runملاحظة
نظرا لأن عينة المحاكاة لا تتصل مباشرة بمثيل Digital Twins، فإنها لا تتطلب منك المصادقة.
الحصول على نتائج الوظيفة المعرفة من قبل المستخدم
يتم تشغيل الوظيفة المعرفة من قبل المستخدم في كل مرة يتلقى فيها المثيل بيانات الجهاز والمستشعر. يقوم هذا القسم بالاستعلام عن مثيل Azure Digital Twins للحصول على نتائج الدالة المعرفة من قبل المستخدم. سيتم إعلامك في الوقت الفعلي تقريبا ، عندما تتوفر غرفة ، بأن الهواء منعش وأن درجة الحرارة مناسبة.
افتح نافذة الأوامر التي استخدمتها لتوفير النموذج، أو نافذة أوامر جديدة، وانتقل إلى مجلد الإشغال-quickstart\src الخاص بالعينة مرة أخرى.
قم بتشغيل الأمر التالي وقم بتسجيل الدخول عند مطالبتك بذلك:
dotnet run GetAvailableAndFreshSpaces
تعرض نافذة الإخراج كيفية تشغيل الدالة المعرفة من قبل المستخدم واعتراضها للأحداث من محاكاة الجهاز.
إذا تم استيفاء الشرط الخاضع للمراقبة، تقوم الدالة المعرفة من قبل المستخدم بتعيين قيمة المساحة مع الرسالة ذات الصلة، كما رأينا سابقا. تقوم GetAvailableAndFreshSpaces الوظيفة بطباعة الرسالة الموجودة على وحدة التحكم.
تنظيف الموارد
إذا كنت ترغب في التوقف عن استكشاف Azure Digital Twins في هذه المرحلة، فلا تتردد في حذف الموارد التي تم إنشاؤها في هذا البرنامج التعليمي:
من القائمة اليمنى في مدخل Azure، حدد كافة الموارد، وحدد مجموعة موارد التوائم الرقمية، وحدد حذف.
تلميح
إذا واجهت مشكلة في حذف مثيل Digital Twins، فقد تم طرح تحديث خدمة مع الإصلاح. يرجى إعادة محاولة حذف المثيل الخاص بك.
إذا لزم الأمر، احذف نماذج التطبيقات الموجودة على جهاز العمل.
الخطوات التالية
الآن بعد أن قمت بتوفير مساحاتك وإنشاء إطار عمل لتشغيل إعلامات مخصصة، يمكنك الانتقال إلى أي من البرامج التعليمية التالية:

