البرنامج التعليمي: قم ببناء حل شامل

يصف هذا البرنامج التعليمي Azure Digital Twins كيفية إنشاء حل شامل يوضح وظائف الخدمة. لإعداد حل شامل بالكامل مدفوع ببيانات مباشرة من بيئتك، يمكنك توصيل مثيل Azure Digital Twins بخدمات Azure الأخرى لإدارة الأجهزة والبيانات.

في هذا البرنامج التعليمي، سوف تتعلم...

  • إعداد مثيل Azure Digital Twins
  • التعرف على سيناريو بناء نموذج وإنشاء مثيل للمكونات المكتوبة مسبقاً
  • استخدام تطبيق Azure Functions لتوجيه القياس عن بعد الذي تمت محاكاته من جهاز IoT Hub إلى خصائص التوأم الرقمي
  • نشر التغييرات من خلال الرسم البياني المزدوج عن طريق معالجة إعلامات التوأم الرقمي باستخدام Azure Functions ونقاط النهاية والمسارات

المتطلبات الأساسية

قبل البدء في هذا البرنامج التعليمي، ابدأ بهذه المتطلبات الأساسية:

  • في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
  • يستخدم هذا البرنامج التعليمي .NET. يمكنك تنزيل أحدث إصدار من .NET SDK لأنظمة أساسية متعددة من تنزيل .NET.

ثم تابع خلال بقية هذا القسم لإعداد المتطلبات الأساسية المتبقية.

الحصول على عينة من الموارد

يتم توجيه البرنامج التعليمي بواسطة نموذج المشروع نهاية إلى نهاية لمنصة Azure Digital Twins المكتوب بلغة C#‎. احصل على نموذج المشروع على جهازك عن طريق الانتقال إلى نموذج الارتباط، وتحديد الزر Browse code أسفل العنوان.

سينقلك هذا إلى مستودع GitHub للعينات، والتي يمكنك تنزيلها ك .zip عن طريق تحديد الزر Code متبوعا بتنزيل ZIP.

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a zip.

سيؤدي هذا إلى تنزيل مجلد .zip إلى جهازك ك digital-twins-samples-main.zip. قم بفك ضغط المجلد واستخراج الملفات.

إعداد مثيل Azure Digital Twins

للعمل مع Azure Digital Twins في هذه المقالة، ستحتاج إلى مثيل Azure Digital Twins والأذونات المطلوبة لاستخدامه. إذا كان لديك بالفعل مثيل Azure Digital Twins تم إعداده، يمكنك استخدام هذا المثيل والتخطي إلى القسم التالي. وإلا، فاتبع الإرشادات الموجودة في إعداد نمذجة ومصادقة. تحتوي الإرشادات على معلومات لمساعدتك في التحقق من إكمال كل خطوة بنجاح.

بعد إعداد المثيل الخاص بك، دون اسم مضيف المثيل. يمكنك العثور على اسم المضيف في بوابة Azure.

إعداد البيئة الخاصة بك لـ Azure CLI

إعداد جلسة عمل CLI

لبدء العمل مع Azure Digital Twins في CLI، أول شيء يجب القيام به هو تسجيل الدخول وتعيين سياق CLI إلى اشتراكك في هذه الجلسة. قم بتشغيل هذه الأوامر في نافذة CLI:

az login
az account set --subscription "<your-Azure-subscription-ID>"

تلميح

يمكنك أيضاً استخدام اسم الاشتراك الخاص بك بدلاً من المعرف في الأمر الوارد أعلاه.

إذا كانت هذه هي المرة الأولى التي تستخدم فيها هذا الاشتراك باستخدام Azure Digital Twins، فشغل هذا الأمر للتسجيل في مساحة الاسم Azure Digital Twins. (إذا لم تكن متأكداً، فلا بأس من تشغيله مرة أخرى حتى لو كنت قد فعلت ذلك في وقت ما في الماضي.)

az provider register --namespace 'Microsoft.DigitalTwins'

بعد ذلك، ستضيف ملحق Microsoft Azure IoT ل Azure CLI، لتمكين الأوامر للتفاعل مع Azure Digital Twins وخدمات IoT الأخرى. شغل هذا الأمر للتأكد من أن لديك أحدث إصدار من الملحق:

az extension add --upgrade --name azure-iot

أنت الآن جاهز للعمل مع Azure Digital Twins في Azure CLI.

يمكنك التحقق من ذلك عن طريق تشغيل az dt --help في أي وقت لمشاهدة قائمة من أوامرAzure Digital Twins ذات المستوى الأعلى المتوفرة.

تكوين نموذج المشروع

بعد ذلك، قم بإعداد تطبيق عميل نموذجي سيتفاعل مع مثيل Azure Digital Twins.

انتقل على جهازك إلى المجلد الذي قمت بتنزيله سابقا من نماذج Azure Digital Twins الشاملة (وقم بفك ضغطه إذا لم تكن قد قمت بذلك بالفعل).

بمجرد دخول المجلد، انتقل إلى digital-twins-samples-main\AdtSampleApp\SampleClientApp وافتح ملف appsettings.json. يحتوي ملف JSON هذا على متغير تكوين ضروري لتشغيل المشروع.

في نص الملف، قم بتغيير instanceUrl إلى عنوان URL لاسم مضيف مثيل Azure Digital Twins (عن طريق إضافة https:// أمام اسم المضيف، كما هو موضح أدناه).

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

احفظ الملف وأغلقه.

إعداد بيانات اعتماد Azure المحلية

تستخدم هذه العينة DefaultAzureCredential (جزء من مكتبة Azure.Identity) لمصادقة المستخدمين مع مثيل Azure Digital Twins عند تشغيله على جهازك المحلي. لمزيد من المعلومات حول الطرق المختلفة التي يمكن لتطبيق العميل مصادقتها باستخدام Azure Digital Twins، راجع كتابة تعليمات برمجية لمصادقة التطبيق.

سيبحث النموذج باستخدام DefaultAzureCredential عن بيانات اعتماد في بيئتك المحلية، مثل تسجيل الدخول إلى Microsoft Azure في Azure CLI محلي أو في Visual Studio أو Visual Studio Code. ولهذا السبب، يجب تسجيل الدخول محلياً إلى Microsoft Azure من خلال أحد هذه الآليات المخصصة لإعداد بيانات الاعتماد للنموذج.

إذا كنت تستخدم Visual Studio أو Visual Studio Code لتشغيل نماذج التعليمات البرمجية، فتأكد من تسجيل الدخول إلى هذا المحرر بنفس بيانات اعتماد Azure التي تريد استخدامها للوصول إلى مثيل Azure Digital Twins. إذا كنت تستخدم نافذة CLI محلية az login ، فقم بتشغيل الأمر لتسجيل الدخول إلى حساب Azure الخاص بك. بعد ذلك، عند تشغيل نموذج التعليمات البرمجية، يجب أن تتم مصادقتك تلقائيا.

الشروع في سيناريو البناء

يمثل نموذج المشروع المستخدم في هذا البرنامج التعليمي سيناريو بناء في العالم الحقيقي، يحتوي على طابق وغرفة وجهاز منظم حرارة. سيتم تمثيل هذه المكونات رقمياً في مثيل Azure Digital Twins، والذي سيتم توصيله بعد ذلك بمنصة IoT Hub وخدمة Event Grid ودالتين من Azure functions لتمكين حركة البيانات.

فيما يلي مخطط يمثل السيناريو الكامل.

ستقوم أولا بإنشاء مثيل Azure Digital Twins (القسم A في الرسم التخطيطي)، ثم إعداد تدفق بيانات تتبع الاستخدام للجهاز إلى التوائم الرقمية (السهم B)، ثم إعداد نشر البيانات من خلال الرسم البياني المزدوج (السهم C).

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

للعمل خلال السيناريو، سوف تتفاعل مع مكونات تطبيق النموذج المكتوبة مسبقاً والتي قمت بتحميلها في وقت سابق.

فيما يلي المكونات التي تم تنفيذها بواسطة تطبيق نموذج سيناريو البناء AdtSampleApp:

  • مصادقة الجهاز
  • الأمثلة على استخدام .NET (C#) SDK (موجودة في CommandLoop.cs)
  • واجهة وحدة التحكم لاستدعاء واجهة برمجة تطبيقات Azure Digital Twins
  • SampleClientApp - نموذج حل Azure Digital Twins
  • SampleFunctionsApp - تطبيق Azure Functions يقوم بتحديث الرسم البياني Azure Digital Twins استنادا إلى بيانات تتبع الاستخدام للجهاز من أحداث IoT Hub وAzure Digital Twins

إنشاء مثيل الرسم البياني للتوأم الذي تم إنشاؤه مسبقاً

أولا، ستستخدم حل AdtSampleApp من نموذج المشروع لإنشاء جزء Azure Digital Twins من السيناريو الشامل (القسم أ):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

افتح نافذة وحدة تحكم محلية وانتقل إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleClientApp. قم بتشغيل مشروع SampleClientApp باستخدام أمر dotnet هذا:

dotnet run

سيبدأ تشغيل المشروع وتنفيذ المصادقة وانتظار أمر. في وحدة التحكم هذه، قم بتشغيل الأمر التالي لإنشاء نموذج حل Azure Digital Twins.

هام

إذا كانت لديك بالفعل توائم رقمية وعلاقات في مثيل Azure Digital Twins، فسيؤدي تشغيل هذا الأمر إلى حذفها واستبدالها بتوائم وعلاقات لنموذج السيناريو.

SetupBuildingScenario

إخراج هذا الأمر هو سلسلة من رسائل التأكيد بحيث يتم إنشاء ثلاثة توائم رقمية ويتم توصيلها في مثيل Azure Digital Twins: وهي عبارة عن طابق يسمى floor1 وغرفة تسمى room21 وجهاز منظم درجة حرارة يسمى thermostat67. تمثل هذه التوائم الرقمية الكيانات التي ستكون موجودة في بيئة العالم الحقيقي.

إنها متصلة عبر العلاقات في الرسم البياني للتوأم التالي. يمثل الرسم البياني للتوأم البيئة ككل، بما في ذلك كيفية تفاعل الكيانات معاً وارتباطها ببعضها البعض.

Diagram showing that floor1 contains room21, and room21 contains thermostat67.

يمكنك التحقق من التوائم التي تم إنشاؤها بواسطة تشغيل الأمر التالي الذي يستعلم عن مثيل Azure Digital Twins المتصل لكافة التوائم الرقمية التي يحتوي عليها:

Query

يمكنك الآن إيقاف تشغيل المشروع. احتفظ بنافذة وحدة التحكم مفتوحة في هذا الموقع، على الرغم من ذلك، حيث ستستخدم هذا التطبيق مرة أخرى لاحقا في البرنامج التعليمي.

قم بإعداد نموذج تطبيق الوظيفة

الخطوة التالية هي إعداد تطبيق Azure Functions الذي سيتم استخدامه خلال هذا البرنامج التعليمي لمعالجة البيانات. يحتوي تطبيق الوظيفة، SampleFunctionsApp، على وظيفتين:

  • ProcessHubToDTEvents: تقوم بمعالجة بيانات منصة IoT Hub الواردة وتحديثات Azure Digital Twins وفقاً لذلك
  • ProcessDTRoutedData: وتقوم بمعالجة البيانات من التوائم الرقمية، وتقوم بتحديث التوائم الأصلية في Azure Digital Twins وفقاً لذلك

في هذا القسم، ستقوم بنشر تطبيق الوظائف المكتوب مسبقا، والتأكد من أن تطبيق الوظائف يمكنه الوصول إلى Azure Digital Twins عن طريق تعيين هوية Microsoft Entra له.

تطبيق الوظائف هو جزء من نموذج المشروع الذي قمت بتنزيله، الموجود في المجلد digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp .

انشر التطبيق

لنشر تطبيق الوظائف إلى Azure، ستحتاج إلى إنشاء حساب تخزين، ثم إنشاء تطبيق الوظائف في Azure، وأخيرا نشر الوظائف إلى تطبيق وظائف Azure. يكمل هذا القسم هذه الإجراءات باستخدام Azure CLI. في كل أمر، استبدل أي عناصر نائبة في أقواس زاوية بتفاصيل مواردك الخاصة.

  1. قم بإنشاء حساب تخزين في Azure عن طريق تشغيل الأمر التالي:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. قم بإنشاء تطبيق Azure function عن طريق تشغيل الأمر التالي:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --runtime-version 7 --resource-group <resource-group>
    
  3. بعد ذلك، ستقوم بضغط الوظائف ونشرها على تطبيق Azure function الجديد.

    1. افتح نافذة وحدة تحكم على جهازك، وانتقل إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp داخل نموذج المشروع الذي تم تنزيله.

    2. في وحدة التحكم، قم بتشغيل الأمر التالي لنشر المشروع محليا:

      dotnet publish -c Release -o publish
      

      ينشر هذا الأمر المشروع إلى الدليل digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .

    3. باستخدام الأسلوب المفضل لديك، قم بإنشاء مضغوط من الملفات المنشورة الموجودة داخلالدليل digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . قم بتسمية المجلد المضغوط publish.zip.

      هام

      تأكد من أن المجلد المضغوط لا يتضمن طبقة إضافية لمجلد النشر نفسه. يجب أن يحتوي فقط على المحتويات التي كانت داخل مجلد النشر .

      فيما يلي صورة لكيفية ظهور محتويات zip (قد تتغير استنادا إلى إصدار .NET الخاص بك).

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

    الآن يمكنك إغلاق نافذة وحدة التحكم المحلية التي استخدمتها لإعداد المشروع. سيتم تنفيذ الخطوة الأخيرة في Azure CLI.

  4. في Azure CLI، قم بتشغيل الأمر التالي لنشر الوظائف المنشورة والمضغوطة على تطبيق Azure function:

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    تلميح

    إذا كنت تستخدم Azure CLI محلياً، فيمكنك الوصول إلى ملف ZIP على الكمبيوتر مباشرة باستخدام مساره على جهازك.

    إذا كنت تستخدم Azure Cloud Shell، فقم بتحميل ملف ZIP إلى Cloud Shell باستخدام هذا الزر قبل تشغيل الأمر:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    في هذه الحالة، سيتم تحميل الملف إلى الدليل الجذر لتخزين Cloud Shell، بحيث يمكنك الرجوع إلى الملف مباشرة باسمه للمعلمة --src من الأمر (كما هو الحال في --src publish.zip).

    سوف يستجيب النشر الناجح مع رمز الحالة 202 وسيخرج كائن JSON يحتوي على تفاصيل الوظيفة الجديدة. يمكنك تأكيد نجاح النشر بالبحث عن هذا الحقل في النتيجة:

    "provisioningState": "Succeeded",
    

يجب الآن نشر الوظائف إلى تطبيق دالة في Azure. يمكنك استخدام أوامر CLI التالية للتحقق من نشر كلتا الدالتين بنجاح. يحتوي كل أمر على عناصر نائبة لمجموعة الموارد واسم تطبيق الوظائف. ستقوم الأوامر بطباعة معلومات حول الدالتين ProcessDTRoutedData و ProcessHubToDTEvents التي تم نشرها.

az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessDTRoutedData
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessHubToDTEvents

بعد ذلك، سيحتاج تطبيق الوظيفة لديك إلى الحصول على الإذن المناسب للوصول إلى مثيل Azure Digital Twins. ستقوم بتكوين هذا الوصول في القسم التالي.

قم بتكوين الأذونات لتطبيق الوظيفة

هناك نوعان من الإعدادات التي تحتاج إلى تعيينها لتطبيق الوظيفة من أجل الوصول إلى مثيل Azure Digital Twins، وكلاهما يمكن القيام به باستخدام Azure CLI.

تعيين دور الوصول

يعطي الإعداد الأول تطبيق الوظيفة دور مالك بيانات Azure Digital Twins في مثيل Azure Digital Twins. هذا الدور مطلوب لأي مستخدم أو وظيفة عند الرغبة في تنفيذ العديد من أنشطة مستوى البيانات على المثيل. يمكنك قراءة المزيد حول تعيينات الأمان والدور في حلول الأمان لـ Azure Digital Twins.

  1. استخدم الأمر التالي لإنشاء هوية معينة من قبل النظام للوظيفة. سيعرض الإخراج تفاصيل الهوية التي تم إنشاؤها. دون حقل principalId في الإخراج لاستخدامه في الخطوة التالية.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. استخدم قيمة principalId في الأمر التالي لتعيين هوية تطبيق الوظيفة لدور مالك بيانات Azure Digital Twins في مثيل Azure Digital Twins.

    az dt role-assignment create --resource-group <your-resource-group> --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

نتيجة هذا الأمر هي معلومات يتم إخراجها بشأن تعيين الدور الذي قمت بإنشائه. يحتوي تطبيق الوظيفة الآن على أذونات للوصول إلى البيانات في مثيل Azure Digital Twins.

تكوين إعداد التطبيق

يقوم الإعداد الثاني بإنشاء متغير البيئة للوظيفة باستخدام عنوان URL لمثيل Azure Digital Twins. سوف يستخدم رمز الوظيفة قيمة هذا المتغير للإشارة إلى مثيلك. لمزيد من المعلومات حول متغيرات البيئة، راجع إدارة تطبيق الوظائف.

قم بتشغيل الأمر أدناه، لتعبئة العناصر النائبة بتفاصيل مواردك.

az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"

الإخراج هو قائمة الإعدادات ل Azure Function، والتي يجب أن تحتوي الآن على إدخال يسمى ADT_SERVICE_URL.

قم بمعالجة القياس عن بعد الذي تمت محاكاته من جهاز منصة IoT Hub

ومن المفترض أن يكون الرسم البياني لـ Azure Digital Twins مدفوعاً بالقياس عن بعد من الأجهزة الحقيقية.

في هذه الخطوة، ستقوم بتوصيل جهاز منظم الحرارة المحاكي المسجل في منصة IoT Hub بالتوأم الرقمي الذي يمثله في Azure Digital Twins. بينما يصدر الجهاز المحاكي القياس عن بعد، يتم توجيه البيانات من خلال Azure function ‏‏ProcessHubToDTEvents التي تؤدي إلى تشغيل التحديث المقابل في التوأم الرقمي. وبهذه الطريقة، يبقى التوأم الرقمي محدثاً ببيانات الجهاز الحقيقي. في Azure Digital Twins، تسمى عملية توجيه بيانات الأحداث من مكان إلى آخر أحداث التوجيه.

معالجة القياس عن بعد الذي تمت محاكاته تحدث في هذا الجزء من السيناريو الشامل (السهم B):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

فيما يلي الإجراءات التي ستستكملها لإعداد اتصال الجهاز هذا:

  1. أنشئ منصة IoT Hub التي ستدير جهاز المحاكاة
  2. قم بتوصيل منصة IoT Hub بـ Azure function المناسبة عن طريق إعداد اشتراك حدث
  3. سجل جهاز المحاكاة في منصة IoT Hub
  4. قم بتشغيل جهاز المحاكاة وإنشاء القياس عن بعد
  5. قم بالاستعلام عن Azure Digital Twins لرؤية النتائج المباشرة

أنشئ مثيل IoT Hub

تم تصميم Azure Digital Twins للعمل جنباً إلى جنب مع IoT Hub، وهي إحدى خدمات Azure لإدارة الأجهزة وبياناتها. في هذه الخطوة، ستقوم بإعداد IoT Hub التي ستقوم بإدارة نموذج الجهاز في هذا البرنامج التعليمي.

في Azure CLI، استخدم هذا الأمر لإنشاء مركز IoT جديد:

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

إخراج هذا الأمر هو معلومات حول منصة IoT Hub التي تم إنشاؤها.

احفظ الاسم الذي منحته لمنصة IoT Hub. ستستخدمه لاحقًا.

قم بتوصيل منصة IoT Hub بـ Azure function

بعد ذلك، قم بتوصيل منصة IoT Hub بوظيفة Azure ‏ProcessHubToDTEvents في تطبيق الوظيفة الذي قمت بنشره سابقاً، بحيث يمكن أن تتدفق البيانات من الجهاز في منصة IoT Hub من خلال الوظيفة، التي تقوم بتحديث Azure Digital Twins.

للقيام بذلك، ستقوم بإنشاء اشتراك حدث على IoT Hub الخاص بك، مع وظيفة Azure كنقطة نهاية. يقوم ذلك "بالاشتراك" في الوظيفة للأحداث التي تجري في منصة IoT Hub.

استخدم أمر CLI التالي لإنشاء اشتراك الحدث. هناك عنصر نائب لك لإدخال اسم لاشتراك الحدث، وهناك أيضا عناصر نائبة لإدخال معرف الاشتراك ومجموعة الموارد واسم مركز IoT واسم تطبيق الوظائف الخاص بك.

az eventgrid event-subscription create --name <name-for-hub-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Devices/IotHubs/<your-IoT-hub> --included-event-types Microsoft.Devices.DeviceTelemetry --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessHubToDTEvents

سيظهر الإخراج معلومات حول اشتراك الحدث الذي تم إنشاؤه. يمكنك التأكد من اكتمال العملية بنجاح عن طريق التحقق من provisioningState القيمة في النتيجة:

"provisioningState": "Succeeded",

تلميح

إذا أرجع الأمر خطأ موفر موارد، أضف Microsoft.EventGrid كموفر موارد إلى اشتراكك. يمكنك القيام بذلك في مدخل Microsoft Azure باتباع الإرشادات الواردة في تسجيل موفر الموارد.

سجل جهاز المحاكاة في منصة IoT Hub

ينشئ هذا القسم تمثيلاً لجهاز في IoT Hub باستخدام ID thermostat67. سيتصل جهاز المحاكاة بهذا التمثيل، وتلك هي الطريقة التي ستنتقل بها أحداث القياس عن بعد من الجهاز إلى منصة IoT Hub. IoT Hub هو المكان الذي تقوم فيه وظيفة Azure التي تم الاشتراك فيها من الخطوة السابقة بالاستماع، وهي جاهزة لالتقاط الأحداث ومتابعة المعالجة.

في Azure CLI، أنشئ جهازا في IoT Hub باستخدام الأمر التالي:

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

الإخراج هو معلومات حول الجهاز الذي تم إنشاؤه.

كوِّن المحاكاة وشغِّلها

بعد ذلك، قم بتكوين محاكي الجهاز لإرسال البيانات إلى مثيل مركز IoT.

ابدأ بالحصول على مركز IoT سلسلة الاتصال بالأمر التالي. ستبدأ قيمة سلسلة الاتصال ب HostName=.

az iot hub connection-string show --hub-name <your-IoT-hub-name>

ثم قم بالحصول على سلسلة اتصال الجهاز باستخدام هذا الأمر:

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

بعد ذلك، قم بتوصيل هذه القيم بالتعليمة البرمجية لمحاكي الجهاز في مشروعك المحلي لتوصيل المحاكي بمركز IoT وجهاز مركز IoT هذا.

انتقل على جهازك المحلي إلى مجلد العينة الذي تم تنزيله، وإلى المجلد digital-twins-samples-main\DeviceSimulator\DeviceSimulator . افتح ملف AzureIoTHub.cs للتحرير. قم بتغيير قيم سلسلة الاتصال التالية إلى القيم التي جمعتها أعلاه:

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

احفظ الملف.

الآن، لمشاهدة نتائج محاكاة البيانات التي قمت بإعدادها، افتح نافذة وحدة تحكم محلية جديدة وانتقل إلى digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

إشعار

يجب أن يكون لديك الآن نافذتان مفتوحتان لوحدة التحكم: واحدة مفتوحة في المجلد DeviceSimulator\DeviceSimulator ، وواحدة من وقت سابق لا تزال مفتوحة في مجلد AdtSampleApp\SampleClientApp .

استخدم الأمر dotnet التالي لتشغيل مشروع محاكاة الجهاز:

dotnet run

سيبدأ المشروع في العمل ويبدأ في عرض رسائل قياس درجة الحرارة عن بعد التي تمت محاكاتها. يتم إرسال هذه الرسائل إلى IoT Hub، حيث يتم التقاطها ومعالجتها من قبل وظيفة Azure.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

لا تحتاج إلى القيام بأي شيء آخر في وحدة التحكم هذه، ولكن اتركها قيد التشغيل أثناء إكمال الخطوات التالية.

شاهد النتائج في Azure Digital Twins

تستمع دالة ProcessHubToDTEvents التي نشرتها سابقا إلى بيانات IoT Hub، وتستدعي واجهة برمجة تطبيقات Azure Digital Twins لتحديث Temperature الخاصية على التوأم thermostat67.

لمشاهدة البيانات من جانب Azure Digital Twins، قم بالتبديل إلى نافذة وحدة التحكم الأخرى المفتوحة في مجلد AdtSampleApp\SampleClientApp . قم بتشغيل مشروع SampleClientApp باستخدام dotnet run.

dotnet run

بمجرد تشغيل المشروع وقبول الأوامر، قم بتشغيل الأمر التالي للحصول على درجات الحرارة التي يتم الإبلاغ عنها بواسطة منظم الحرارة التوأم الرقمي67:

ObserveProperties thermostat67 Temperature

يجب أن تشاهد درجات الحرارة المحدثة مباشرة من مثيل Azure Digital Twins الذي يتم تسجيله إلى وحدة التحكم كل ثانيتين. يجب أن تعكس القيم التي ينشئها محاكي البيانات (يمكنك وضع نوافذ وحدة التحكم جنبا إلى جنب للتحقق من أن القيم تنسق).

إشعار

قد يستغرق الأمر بضع ثوانٍ حتى تنتشر البيانات من الجهاز إلى التوأم. قد تظهر قراءات درجة الحرارة القليلة الأولى على أنها 0 قبل أن تبدأ البيانات بالوصول.

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

بمجرد التحقق من أن تسجيل درجة الحرارة المباشرة يعمل بنجاح، يمكنك إيقاف تشغيل كلا المشروعين. احتفظ بنوافذ وحدة التحكم مفتوحة، حيث ستستخدمها مرة أخرى لاحقا في البرنامج التعليمي.

قم بنشر أحداث Azure Digital Twins من خلال الرسم البياني

حتى الآن في هذا البرنامج التعليمي، كنت قد رأيت كيف يمكن تحديث Azure Digital Twins من بيانات الجهاز الخارجي. لاحقاً، ستتعرف على الكيفية التي يمكن أن تنتشر بها التغييرات التي تم إجراؤها على توأم رقمي واحد من خلال الرسم البياني لـ Azure Digital Twins - بمعنى آخر، كيفية تحديث التوائم من بيانات الخدمة الداخلية.

للقيام بذلك، ستستخدم وظيفة Azure ‏ProcessDTRoutedData لتحديث توأم غرفة عند تحديث توأم جهاز منظم الحرارة المتصل. تحدث وظيفة التحديث في هذا الجزء من السيناريو الشامل (السهم C):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

فيما يلي الإجراءات التي ستستكملها لإعداد تدفق البيانات هذا:

  1. إنشاء موضوع Event Grid لتمكين حركة البيانات بين خدمات Azure
  2. إنشاء نقطة نهاية في Azure Digital Twins التي تربط المثيل بموضوع Event Grid
  3. قم بإعداد مسار داخل Azure Digital Twins التي ترسل أحداث تغيير خاصية التوأم إلى نقطة النهاية
  4. إعداد دالة Azure التي تستمع إلى موضوع Event Grid في نقطة النهاية، وتتلقى أحداث تغيير خاصية التوأم التي يتم إرسالها هناك، وتحديث التوائم الأخرى في الرسم البياني وفقا لذلك

إنشاء موضوع Event Grid

Event Grid هي خدمة Azure تساعد على توجيه الأحداث وتسليمها من خدمات Azure إلى أماكن أخرى داخل Azure. يمكنك إنشاء موضوع Event Grid لتجميع أحداث معينة من مصدر، ومن ثم يمكن للمشتركين الاستماع إلى الموضوع لتلقي الأحداث أثناء مرورها.

في Azure CLI، قم بتشغيل الأمر التالي لإنشاء موضوع Event Grid:

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

الإخراج من هذا الأمر هو معلومات حول موضوع Event Grid الذي قمت بإنشائه. احفظ الاسم الذي أعطيته لموضوع Event Grid، لأنك ستستخدمه لاحقا.

أنشئ نقطة النهاية

بعد ذلك، قم بإنشاء نقطة نهاية Event Grid في Azure Digital Twins، والتي ستربط المثيل الخاص بك بموضوع Event Grid الخاص بك. استخدم الأمر أدناه، واملأ اسم موضوع Event Grid من الخطوة السابقة وحقول العنصر النائب الأخرى حسب الحاجة.

az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>

الإخراج من هذا الأمر هو معلومات حول نقطة النهاية التي قمت بإنشائها.

ابحث عن provisioningStateالحقل في المخرجات، وتحقق من أن القيمة "نجحت".

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

قد يشير أيضًا إلى "توفير"، مما يعني أن نقطة النهاية لا تزال قيد الإنشاء. إذا كان الأمر كذلك، فانتظر بضع ثوانٍ وقم بتشغيل الأمر التالي للتحقق من حالة نقطة النهاية. كرر حتى يعرض provisioningState "تم النجاح".

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

احفظ اسم نقطة النهاية الخاصة بك، لأنك ستستخدمها لاحقًا.

إنشاء المسار

بعد ذلك، قم بإنشاء مسار Azure Digital Twins الذي يرسل الأحداث إلى نقطة نهاية Event Grid التي أنشأتها.

استخدم أمر CLI التالي، مع ملء اسم نقطة النهاية من الخطوة السابقة وحقول العناصر النائبة الأخرى حسب الحاجة. يقوم هذا الأمر بإعادة توجيه جميع الأحداث التي تحدث في الرسم البياني المزدوج.

تلميح

يمكنك قصر الأحداث على أحداث معينة فقط إذا كنت تريد ذلك باستخدام عوامل التصفية.

az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>

ناتج هذا الأمر هو بعض المعلومات حول المسار الذي قمت بإنشائه.

إشعار

يجب أن تنتهي نقاط النهاية (من الخطوة السابقة) من التوفير قبل أن تتمكن من إعداد مسار حدث يستخدمها. إذا فشل إنشاء المسار لأن نقاط النهاية غير جاهزة، فانتظر بضع دقائق ثم حاول مرة أخرى.

قم بتوصيل وظيفة Azure

بعد ذلك، اشترك في وظيفة ProcessDTRoutedData Azure في موضوع Event Grid الذي أنشأته سابقا، بحيث يمكن تدفق بيانات القياس عن بعد من التوأم thermostat67 من خلال موضوع Event Grid إلى الوظيفة، والتي تعود إلى Azure Digital Twins وتحديث التوأم room21 وفقا لذلك.

للقيام بذلك، ستقوم بإنشاء اشتراك Event Grid يرسل بيانات من موضوع Event Grid الذي قمت بإنشائه سابقا إلى وظيفة ProcessDTRoutedData Azure.

استخدم أمر CLI التالي لإنشاء اشتراك الحدث. هناك عنصر نائب لك لإدخال اسم لاشتراك الحدث هذا، وهناك أيضا عناصر نائبة لإدخال معرف الاشتراك ومجموعة الموارد واسم موضوع Event Grid واسم تطبيق الوظائف الخاص بك.

az eventgrid event-subscription create --name <name-for-topic-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessDTRoutedData

قم بتشغيل المحاكاة ورؤية النتائج

الآن، يجب أن تكون الأحداث قادرة على التدفق من جهاز المحاكاة إلى Azure Digital Twins، ومن خلال الرسم البياني لـ Azure Digital Twins لتقوم بتحديث التوائم حسبما يقتضي الأمر. في هذا القسم، ستقوم بتشغيل محاكي الجهاز مرة أخرى لبدء تدفق الحدث الكامل الذي قمت بإعداده، والاستعلام عن Azure Digital Twins لرؤية النتائج المباشرة

انتقل إلى نافذة وحدة التحكم المفتوحة في المجلد DeviceSimulator\DeviceSimulator ، وقم بتشغيل مشروع محاكاة الجهاز باستخدام dotnet run.

مثل المرة الأولى التي تقوم فيها بتشغيل محاكي الجهاز، سيبدأ المشروع في التشغيل ويعرض رسائل قياس درجة الحرارة عن بعد التي تمت محاكاتها. هذه الأحداث تمر عبر التدفق الذي قمت بإعداده في وقت سابق لتحديث التوأم thermostat67، ومن ثم تمر عبر التدفق الذي قمت بإعداده مؤخراً لتحديث التوأم room21 للمطابقة.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

لا تحتاج إلى القيام بأي شيء آخر في وحدة التحكم هذه، ولكن اتركها قيد التشغيل أثناء إكمال الخطوات التالية.

لمشاهدة البيانات من جانب Azure Digital Twins، انتقل إلى نافذة وحدة التحكم الأخرى المفتوحة في مجلد AdtSampleApp\SampleClientApp ، وقم بتشغيل مشروع SampleClientApp باستخدام dotnet run.

بمجرد تشغيل المشروع وقبول الأوامر، قم بتشغيل الأمر التالي للحصول على درجات الحرارة التي يتم الإبلاغ عنها من قبل كل من منظم الحرارة التوأم الرقمي67 وغرفة التوأم الرقمي21.

ObserveProperties thermostat67 Temperature room21 Temperature

يجب أن تشاهد درجات الحرارة المحدثة مباشرة من مثيل Azure Digital Twins الذي يتم تسجيله إلى وحدة التحكم كل ثانيتين. لاحظ أنه يتم تحديث درجة الحرارة للتوأم room21 لمطابقة التحديثات مع التوأم thermostat67.

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

بمجرد التحقق من أن تسجيل درجات الحرارة المباشرة من مثيلك يعمل بنجاح، يمكنك التوقف عن تشغيل كلا المشروعين. يمكنك أيضا إغلاق نافذتي وحدة التحكم، حيث اكتمل البرنامج التعليمي الآن.

المراجعة

فيما يلي مراجعة للسيناريو الذي قمت ببنائه في هذا البرنامج التعليمي.

  1. يمثل مثيل Azure Digital Twins رقمياً طابقاً وغرفة ومنظم حرارة (يمثله القسم A في الرسم البياني أدناه)
  2. يتم إرسال القياس عن بعد الذي تمت محاكاته للجهاز إلى منصة IoT Hub، حيث تستمع وظيفة Azure ‏ProcessHubToDTEvents لأحداث القياس عن بعد. تستخدم الدالة ProcessHubToDTEvents Azure المعلومات الموجودة في هذه الأحداث لتعيين Temperature الخاصية على thermostat67 (السهم B في الرسم التخطيطي).
  3. يتم توجيه أحداث تغيير الخاصية في Azure Digital Twins إلى موضوع Event Grid، حيث تستمع وظيفة ProcessDTRoutedData Azure للأحداث. تستخدم الدالة ProcessDTRoutedData Azure المعلومات الموجودة في هذه الأحداث لتعيين الخاصية Temperature على room21 (السهم C في الرسم التخطيطي).

Diagram from the beginning of the article showing the full building scenario.

تنظيف الموارد

بعد الانتهاء من هذا البرنامج التعليمي، يمكنك اختيار الموارد التي تريد إزالتها، اعتمادًا على ما تريد القيام به بعد ذلك.

  • إذا لم تكن بحاجة إلى أي من الموارد التي قمت بإنشائها في هذا البرنامج التعليمي، يمكنك حذف مثيل Azure Digital Twins وجميع الموارد الأخرى من هذه المقالة باستخدام الأمر az group delete CLI. يؤدي هذا إلى حذف جميع موارد Azure الموجودة في مجموعة مورد ما، بالإضافة إلى مجموعة الموارد نفسها.

    هام

    حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وكافة الموارد المضمنة فيها بشكل دائم. يُرجى التأكد من عدم حذف مجموعة الموارد أو الموارد غير الصحيحة عن طريق الخطأ.

    افتح Azure Cloud Shell أو نافذة CLI محلية، ثم قم بتشغيل الأمر التالي لحذف مجموعة الموارد وكل ما تحتوي عليه.

    az group delete --name <your-resource-group>
    
  • إذا كنت ترغب في الاستمرار في استخدام مثيل Azure Digital Twins الذي قمت بإعداده في هذه المقالة، ولكن مسح بعض نماذجه وتوائمه وعلاقاته أو كلها، يمكنك استخدام أوامر az dt CLI لحذف العناصر التي تريد إزالتها.

    لن يؤدي هذا الخيار إلى إزالة أي من موارد Azure الأخرى التي تم إنشاؤها في هذا البرنامج التعليمي (IoT Hub، تطبيق Azure Functions، وما إلى ذلك). يمكنك حذف هذه بشكل فردي باستخدام أوامر dt المناسبة لكل نوع مورد.

قد ترغب أيضًا في حذف مجلد المشروع من جهازك المحلي.

الخطوات التالية

في هذا البرنامج التعليمي، قمت بإنشاء سيناريو شامل يوضح Azure Digital Twins المدفوعة ببيانات الجهاز المباشرة.

بعد ذلك، ابدأ بالنظر إلى وثيقة المفهوم لمعرفة المزيد عن العناصر التي عملت معها في البرنامج التعليمي: