البرنامج التعليمي: قم ببناء حل شامل
يصف هذا البرنامج التعليمي 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.
يقوم هذا الإجراء بتنزيل مجلد .zip إلى جهازك digital-twins-samples-main.zip. قم بفك ضغط المجلد واستخراج الملفات.
إعداد مثيل Azure Digital Twins
للعمل مع Azure Digital Twins في هذه المقالة، تحتاج إلى مثيل Azure Digital Twins والأذونات المطلوبة لاستخدامه. إذا كان لديك بالفعل مثيل Azure Digital Twins تم إعداده، يمكنك استخدام هذا المثيل والتخطي إلى القسم التالي. وإلا، فاتبع الإرشادات الموجودة في إعداد نمذجة ومصادقة. تحتوي الإرشادات على معلومات لمساعدتك في التحقق من إكمال كل خطوة بنجاح.
بعد إعداد المثيل الخاص بك، دون اسم مضيف المثيل. يمكنك العثور على اسم المضيف في بوابة Azure.
إعداد البيئة الخاصة بك لـ Azure CLI
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إعداد جلسة عمل 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 وشبكة الأحداث ووظيفتين من Azure لتمكين حركة البيانات.
يمثل الرسم التخطيطي التالي السيناريو الكامل.
يمكنك أولا إنشاء مثيل Azure Digital Twins (القسم A في الرسم التخطيطي)، ثم إعداد تدفق بيانات الجهاز إلى التوائم الرقمية (السهم B)، ثم إعداد نشر البيانات من خلال الرسم البياني المزدوج (السهم C).
للعمل من خلال السيناريو، يمكنك التفاعل مع مكونات تطبيق العينة المكتوب مسبقا الذي قمت بتنزيله مسبقا.
فيما يلي المكونات التي تم تنفيذها بواسطة تطبيق نموذج سيناريو البناء AdtSampleApp:
- مصادقة الجهاز
- الأمثلة على استخدام .NET (C#) SDK (موجودة في CommandLoop.cs)
- واجهة وحدة التحكم لاستدعاء واجهة برمجة تطبيقات Azure Digital Twins
- SampleClientApp - نموذج حل Azure Digital Twins
- SampleFunctionsApp - تطبيق Azure Functions يقوم بتحديث الرسم البياني Azure Digital Twins استنادا إلى بيانات الجهاز من مركز IoT وأحداث Azure Digital Twins
إنشاء مثيل الرسم البياني للتوأم الذي تم إنشاؤه مسبقاً
أولا، يمكنك استخدام حل AdtSampleApp من نموذج المشروع لإنشاء جزء Azure Digital Twins من السيناريو الشامل (القسم A):
افتح نافذة وحدة تحكم محلية وانتقل إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleClientApp. قم بتشغيل مشروع SampleClientApp باستخدام أمر dotnet هذا:
dotnet run
يبدأ تشغيل المشروع، ويجري المصادقة، وينتظر الأمر. في وحدة التحكم هذه، قم بتشغيل الأمر التالي لإنشاء نموذج حل Azure Digital Twins.
هام
إذا كان لديك بالفعل توائم وعلاقات رقمية في مثيل Azure Digital Twins الخاص بك، فإن تشغيل هذا الأمر يحذفها ويستبدلها بالتوائم والعلاقات لسيناريو العينة.
SetupBuildingScenario
إخراج هذا الأمر هو سلسلة من رسائل التأكيد بحيث يتم إنشاء ثلاثة توائم رقمية ويتم توصيلها في مثيل Azure Digital Twins: وهي عبارة عن طابق يسمى floor1 وغرفة تسمى room21 وجهاز منظم درجة حرارة يسمى 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. في كل أمر، استبدل أي عناصر نائبة في أقواس زاوية بتفاصيل مواردك الخاصة.
قم بإنشاء حساب تخزين في Azure عن طريق تشغيل الأمر التالي:
az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
قم بإنشاء تطبيق 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 --resource-group <resource-group>
بعد ذلك، يمكنك ضغط الوظائف ونشرها إلى تطبيق وظائف Azure الجديد.
افتح نافذة وحدة تحكم على جهازك (إذا كنت تستخدم Azure CLI المحلي، فقد تكون نفس النافذة) وانتقل إلى المجلد digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp داخل نموذج المشروع الذي تم تنزيله.
في وحدة التحكم، قم بتشغيل الأمر التالي لنشر المشروع محليا:
dotnet publish -c Release -o publish
ينشر هذا الأمر المشروع إلى الدليل digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .
باستخدام الأسلوب المفضل لديك، قم بإنشاء مضغوط من الملفات المنشورة الموجودة داخلالدليل digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . قم بتسمية المجلد المضغوط publish.zip.
هام
تأكد من أن المجلد المضغوط لا يتضمن طبقة إضافية لمجلد النشر نفسه. يجب أن يحتوي فقط على المحتويات التي كانت داخل مجلد النشر .
فيما يلي صورة لكيفية ظهور محتويات zip (قد تتغير اعتمادا على إصدار .NET الخاص بك).
يتم تنفيذ الخطوة الأخيرة في Azure CLI.
في 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 باستخدام هذا الزر قبل تشغيل الأمر:
في هذه الحالة، يتم تحميل الملف إلى الدليل الجذر لتخزين 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.
استخدم الأمر التالي لإنشاء هوية معينة من قبل النظام للوظيفة. يعرض الإخراج تفاصيل الهوية المعينة من قبل النظام. دون حقل principalId في الإخراج لاستخدامه في الخطوة التالية.
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
استخدم قيمة 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. نظرا لأن الجهاز المحاكي ينبعث من البيانات، يتم توجيه البيانات من خلال وظيفة ProcessHubToDTEvents Azure التي تقوم بتشغيل تحديث مطابق في التوأم الرقمي. وبهذه الطريقة، يبقى التوأم الرقمي محدثاً ببيانات الجهاز الحقيقي. في Azure Digital Twins، تسمى عملية توجيه بيانات الأحداث من مكان إلى آخر أحداث التوجيه.
معالجة بيانات الجهاز التي تمت محاكاتها تحدث في هذا الجزء من السيناريو الشامل (السهم B):
فيما يلي الإجراءات التي تنفذها لإعداد اتصال الجهاز هذا:
- إنشاء مركز IoT يدير جهاز المحاكاة
- قم بتوصيل منصة IoT Hub بـ Azure function المناسبة عن طريق إعداد اشتراك حدث
- سجل جهاز المحاكاة في منصة IoT Hub
- تشغيل الجهاز المحاكي وإنشاء بيانات الجهاز
- قم بالاستعلام عن Azure Digital Twins لرؤية النتائج المباشرة
أنشئ مثيل IoT Hub
تم تصميم Azure Digital Twins للعمل جنباً إلى جنب مع IoT Hub، وهي إحدى خدمات Azure لإدارة الأجهزة وبياناتها. في هذه الخطوة، يمكنك إعداد مركز IoT الذي يدير نموذج الجهاز في هذا البرنامج التعليمي.
في Azure CLI، استخدم هذا الأمر لإنشاء مركز IoT جديد:
az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1
إخراج هذا الأمر هو معلومات حول منصة IoT Hub التي تم إنشاؤها.
احفظ اسم مركز IoT لاستخدامه لاحقا.
قم بتوصيل منصة IoT Hub بـ Azure function
بعد ذلك، قم بتوصيل مركز IoT الخاص بك بوظيفة ProcessHubToDTEvents Azure في تطبيق الوظائف الذي نشرته سابقا. يتيح هذا الاتصال تدفق البيانات من الجهاز في 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>
الإخراج هو معلومات حول الجهاز الذي تم إنشاؤه.
كوِّن المحاكاة وشغِّلها
هام
تتضمن هذه المقالة خطوات لتوصيل جهاز باستخدام توقيع وصول مشترك، يسمى أيضا مصادقة المفتاح المتماثل. طريقة المصادقة هذه ملائمة للاختبار والتقييم، ولكن مصادقة جهاز باستخدام شهادات X.509 هي نهج أكثر أمانا. لمعرفة المزيد، راجع أفضل ممارسات > الأمان أمان الاتصال.
بعد ذلك، قم بتكوين محاكي الجهاز لإرسال البيانات إلى مثيل مركز 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.
لا تحتاج إلى القيام بأي شيء آخر في وحدة التحكم هذه، ولكن اتركها قيد التشغيل أثناء إكمال الخطوات التالية.
شاهد النتائج في Azure Digital Twins
تستمع دالة ProcessHubToDTEvents التي نشرتها سابقا إلى بيانات IoT Hub، وتستدعي واجهة برمجة تطبيقات Azure Digital Twins لتحديث Temperature
الخاصية على التوأم thermostat67.
لمشاهدة البيانات من جانب Azure Digital Twins، قم بالتبديل إلى نافذة وحدة التحكم الأخرى المفتوحة في مجلد AdtSampleApp\SampleClientApp .
قم بتشغيل مشروع SampleClientApp باستخدام dotnet run
.
dotnet run
بمجرد تشغيل المشروع وقبول الأوامر، قم بتشغيل الأمر التالي للحصول على درجات الحرارة التي أبلغ عنها thermostat67 التوأم الرقمي:
ObserveProperties thermostat67 Temperature
يجب أن تشاهد درجات الحرارة المحدثة مباشرة من مثيل Azure Digital Twins الذي يتم تسجيله إلى وحدة التحكم كل ثانيتين. يجب أن تعكس القيم التي ينشئها محاكي البيانات (يمكنك وضع نوافذ وحدة التحكم جنبا إلى جنب للتحقق من أن القيم تنسق).
إشعار
قد يستغرق نشر البيانات من الجهاز إلى التوأم بضع ثوان. قد تظهر قراءات درجة الحرارة القليلة الأولى ك 0 قبل بدء وصول البيانات.
بمجرد التحقق من أن تسجيل درجة الحرارة المباشرة يعمل بنجاح، يمكنك إيقاف تشغيل كلا المشروعين. حافظ على نوافذ وحدة التحكم مفتوحة، كما يمكنك استخدامها مرة أخرى لاحقا في البرنامج التعليمي.
قم بنشر أحداث Azure Digital Twins من خلال الرسم البياني
حتى الآن في هذا البرنامج التعليمي، ترى كيف يمكن تحديث Azure Digital Twins من بيانات الجهاز الخارجي. بعد ذلك، ترى كيف يمكن أن تنتشر التغييرات على توأم رقمي واحد من خلال الرسم البياني Azure Digital Twins - وبعبارة أخرى، كيفية تحديث التوائم من البيانات الداخلية للخدمة.
للقيام بذلك، يمكنك استخدام الدالة ProcessDTRoutedData Azure لتحديث توأم غرفة عند تحديث التوأم Thermostat المتصل. تحدث وظيفة التحديث في هذا الجزء من السيناريو الشامل (السهم C):
فيما يلي الإجراءات التي تنفذها لإعداد تدفق البيانات هذا:
- إنشاء موضوع Event Grid لتمكين حركة البيانات بين خدمات Azure
- إنشاء نقطة نهاية في Azure Digital Twins التي تربط المثيل بموضوع Event Grid
- قم بإعداد مسار داخل Azure Digital Twins التي ترسل أحداث تغيير خاصية التوأم إلى نقطة النهاية
- إعداد دالة 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
الحقل في المخرجات، وتحقق من أن القيمة "نجحت".
قد يشير أيضًا إلى "توفير"، مما يعني أن نقطة النهاية لا تزال قيد الإنشاء. إذا كان الأمر كذلك، فانتظر بضع ثوانٍ وقم بتشغيل الأمر التالي للتحقق من حالة نقطة النهاية. كرر حتى يعرض 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 للمطابقة.
لا تحتاج إلى القيام بأي شيء آخر في وحدة التحكم هذه، ولكن اتركها قيد التشغيل أثناء إكمال الخطوات التالية.
لمشاهدة البيانات من جانب Azure Digital Twins، انتقل إلى نافذة وحدة التحكم الأخرى المفتوحة في مجلد AdtSampleApp\SampleClientApp ، وقم بتشغيل مشروع SampleClientApp باستخدام dotnet run
.
بمجرد تشغيل المشروع وقبول الأوامر، قم بتشغيل الأمر التالي للحصول على درجات الحرارة التي أبلغ عنها كل من منظم الحرارة التوأم الرقمي67 وغرفة التوأم الرقمي21.
ObserveProperties thermostat67 Temperature room21 Temperature
يجب أن تشاهد درجات الحرارة المحدثة مباشرة من مثيل Azure Digital Twins الذي يتم تسجيله إلى وحدة التحكم كل ثانيتين. لاحظ أنه يتم تحديث درجة الحرارة للتوأم room21 لمطابقة التحديثات مع التوأم thermostat67.
بمجرد التحقق من أن تسجيل درجات الحرارة المباشرة من المثيل الخاص بك يعمل بنجاح، يمكنك إيقاف تشغيل كلا المشروعين. يمكنك أيضا إغلاق نافذتي وحدة التحكم، حيث اكتمل البرنامج التعليمي الآن.
المراجعة
فيما يلي مراجعة للسيناريو الذي قمت ببنائه في هذا البرنامج التعليمي.
- يمثل مثيل Azure Digital Twins رقميا طابقا وغرفة وثرموستات (يمثله القسم A في الرسم التخطيطي التالي)
- يتم إرسال بيانات الجهاز المحاكاة إلى IoT Hub، حيث تستمع وظيفة ProcessHubToDTEvents Azure لأحداث بيانات الجهاز.
تستخدم الدالة ProcessHubToDTEvents Azure المعلومات الموجودة في هذه الأحداث لتعيين
Temperature
الخاصية على thermostat67 (السهم B في الرسم التخطيطي التالي). - يتم توجيه أحداث تغيير الخاصية في Azure Digital Twins إلى موضوع Event Grid، حيث تستمع وظيفة ProcessDTRoutedData Azure للأحداث.
تستخدم الدالة ProcessDTRoutedData Azure المعلومات الموجودة في هذه الأحداث لتعيين الخاصية
Temperature
على room21 (السهم C في الرسم التخطيطي التالي).
تنظيف الموارد
بعد الانتهاء من هذا البرنامج التعليمي، يمكنك اختيار الموارد التي تريد إزالتها، اعتمادًا على ما تريد القيام به بعد ذلك.
إذا لم تكن بحاجة إلى أي من الموارد التي قمت بإنشائها في هذا البرنامج التعليمي، يمكنك حذف مثيل 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 مدفوعا ببيانات الجهاز المباشر.
بعد ذلك، ابدأ بالنظر إلى وثيقة المفهوم لمعرفة المزيد عن العناصر التي عملت معها في البرنامج التعليمي: