دمج Azure Digital Twins مع Azure Time Series Insights
في هذه المقالة، ستتعرف على كيفية دمج Azure Digital Twins مع Azure Time Series Insights (TSI).
يستخدم الحل الموضح في هذه المقالة Insights السلاسل الزمنية لجمع البيانات التاريخية حول حل إنترنت الأشياء وتحليلها. يعد Azure Digital Twins مناسبا تماما لتغذية البيانات في Insights السلاسل الزمنية، حيث يسمح لك بربط تدفقات بيانات متعددة وتوحيد معلوماتك قبل إرسالها إلى السلسلة الزمنية Insights.
تلميح
تتمثل أبسط طريقة لتحليل بيانات التوأم التاريخية بمرور الوقت في استخدام ميزة محفوظات البيانات (المعاينة) لتوصيل مثيل Azure Digital Twins بمجموعة Azure Data Explorer، بحيث يتم تأريخ تحديثات خصائص التوأم الرقمي تلقائيا إلى Azure Data Explorer. يمكنك بعد ذلك الاستعلام عن هذه البيانات في Azure Data Explorer باستخدام المكون الإضافي لاستعلام Azure Digital Twins ل Azure Data Explorer. إذا لم تكن بحاجة إلى استخدام السلاسل الزمنية Insights على وجه التحديد، فيمكنك التفكير في هذا البديل للحصول على تجربة تكامل أبسط.
المتطلبات الأساسية
قبل أن تتمكن من إعداد علاقة مع Insights السلاسل الزمنية، ستحتاج إلى إعداد الموارد التالية:
- مثيل Azure Digital Twins. للحصول على الإرشادات، راجع إعداد مثيل ومصادقة Azure Digital Twins.
- نموذج وتوأم في مثيل Azure Digital Twins. ستحتاج إلى تحديث معلومات Twin عدة مرات لرؤية تلك البيانات التي يتم تعقبها في السلاسل الزمنية Insights. للحصول على التعليمات، راجع إضافة نموذج وتوأم.
تلميح
في هذه المقالة، يتم تحديث قيم التوأم الرقمية المتغيرة التي يتم عرضها في Insights السلاسل الزمنية يدويا من أجل البساطة. ومع ذلك، إذا كنت ترغب في إكمال هذه المقالة باستخدام بيانات محاكاة مباشرة، فيمكنك إعداد وظيفة Azure تقوم بتحديث التوائم الرقمية استنادا إلى أحداث القياس عن بعد لإنترنت الأشياء من جهاز محاكاة. للحصول على التعليمات، اتبع بيانات Ingest IoT Hub، بما في ذلك الخطوات النهائية لتشغيل محاكي الجهاز والتحقق من صحة عمل تدفق البيانات.
في وقت لاحق، ابحث عن تلميح آخر ليوضح لك مكان بدء تشغيل محاكي الجهاز واطلب من وظائف Azure تحديث التوائم تلقائيا، بدلا من إرسال أوامر تحديث التوأم الرقمية اليدوية.
هيكل الحل
ستقوم بإرفاق Insights السلاسل الزمنية ب Azure Digital Twins من خلال المسار التالي.
إنشاء مساحة اسم مراكز الأحداث
قبل إنشاء مراكز الأحداث، ستقوم أولا بإنشاء مساحة اسم مراكز الأحداث التي ستتلقى الأحداث من مثيل Azure Digital Twins الخاص بك. يمكنك إما استخدام إرشادات Azure CLI أدناه، أو استخدام مدخل Azure باتباع إنشاء مركز أحداث باستخدام مدخل Azure. لمعرفة المناطق التي تدعم مراكز الأحداث، تفضل بزيارة منتجات Azure المتوفرة حسب المنطقة.
az eventhubs namespace create --name <name-for-your-Event-Hubs-namespace> --resource-group <your-resource-group> --location <region>
تلميح
إذا تلقيت رسالة خطأ تفيد BadRequest: The specified service namespace is invalid.بذلك، فتأكد من أن الاسم الذي اخترته لمساحة الاسم يفي بمتطلبات التسمية الموضحة في المستند المرجعي هذا: إنشاء مساحة اسم.
ستستخدم مساحة اسم مراكز الأحداث هذه للاحتفاظ بمركزي الأحداث اللازمين لهذه المقالة:
- مركز التوائم - مركز الأحداث لاستقبال أحداث التغيير المزدوج
- مركز السلاسل الزمنية - مركز الأحداث لدفق الأحداث إلى السلاسل الزمنية Insights
سترشدك الأقسام التالية خلال إنشاء هذه المحاور وتكوينها داخل مساحة اسم مركز الأحداث.
إنشاء مركز التوائم
أول مركز للأحداث ستقوم بإنشائه في هذه المقالة هو محور التوائم. سيتلقى مركز الأحداث هذا أحداث تغيير مزدوجة من Azure Digital Twins. لإعداد مركز التوائم، ستكمل الخطوات التالية في هذا القسم:
- إنشاء مركز التوائم
- إنشاء قاعدة تخويل للتحكم في أذونات الموزع
- إنشاء نقطة نهاية في Azure Digital Twins تستخدم قاعدة التخويل للوصول إلى لوحة الوصل
- إنشاء مسار في Azure Digital Twins يرسل حدث تحديثات التوأم إلى نقطة النهاية وموزع التوائم المتصلة
- الحصول على سلسلة اتصال مركز التوائم
قم بإنشاء لوحة وصل التوائم باستخدام أمر CLI التالي. حدد اسما لمحور التوائم.
az eventhubs eventhub create --name <name-for-your-twins-hub> --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier>
إنشاء قاعدة تخويل مركز التوائم
إنشاء قاعدة تخويل مع أذونات الإرسال والاستلام. حدد اسما للقاعدة.
az eventhubs eventhub authorization-rule create --rights Listen Send --name <name-for-your-twins-hub-auth-rule> --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier> --eventhub-name <your-twins-hub-from-earlier>
إنشاء نقطة نهاية محور التوائم
قم بإنشاء نقطة نهاية Azure Digital Twins تربط مركز الأحداث بمثيل Azure Digital Twins. حدد اسما لنقطة نهاية موزع التوائم.
az dt endpoint create eventhub --dt-name <your-Azure-Digital-Twins-instance-name> --eventhub-resource-group <your-resource-group> --eventhub-namespace <your-Event-Hubs-namespace-from-earlier> --eventhub <your-twins-hub-name-from-earlier> --eventhub-policy <your-twins-hub-auth-rule-from-earlier> --endpoint-name <name-for-your-twins-hub-endpoint>
إنشاء مسار حدث مركز التوائم
يمكن أن تصدر مثيلات Azure Digital Twins أحداث تحديث مزدوج كلما تم تحديث حالة التوأم. في هذا القسم، ستقوم بإنشاء مسار أحداث Azure Digital Twins الذي سيوجه أحداث التحديث هذه إلى مركز التوائم لمزيد من المعالجة.
قم بإنشاء مسار في Azure Digital Twins لإرسال أحداث التحديث المزدوج إلى نقطة النهاية من الأعلى. سيسمح عامل التصفية في هذا المسار فقط بتمرير رسائل التحديث المزدوجة إلى نقطة النهاية الخاصة بك. حدد اسما لمسار حدث مركز التوائم . بالنسبة للعنصر النائب لاسم مثيل Azure Digital Twins في هذا الأمر، يمكنك استخدام الاسم المألوف أو اسم المضيف لتعزيز الأداء.
az dt route create --dt-name <your-Azure-Digital-Twins-instance-hostname-or-name> --endpoint-name <your-twins-hub-endpoint-from-earlier> --route-name <name-for-your-twins-hub-event-route> --filter "type = 'Microsoft.DigitalTwins.Twin.Update'"
الحصول على سلسلة اتصال موزع التوائم
احصل على سلسلة اتصال مركز أحداث twins، باستخدام قواعد التخويل التي أنشأتها أعلاه لموزع التوائم.
az eventhubs eventhub authorization-rule keys list --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier> --eventhub-name <your-twins-hub-from-earlier> --name <your-twins-hub-auth-rule-from-earlier>
لاحظ قيمة ConnectionString الأساسية من النتيجة لتكوين إعداد تطبيق مركز التوائم لاحقا في هذه المقالة.
إنشاء موزع السلاسل الزمنية
مركز الأحداث الثاني الذي ستقوم بإنشائه في هذه المقالة هو محور السلاسل الزمنية. مركز الأحداث هذا هو الذي سيقوم ببث أحداث Azure Digital Twins إلى السلاسل الزمنية Insights. لإعداد مركز السلاسل الزمنية، ستكمل الخطوات التالية:
- إنشاء مركز السلاسل الزمنية
- إنشاء قاعدة تخويل للتحكم في أذونات الموزع
- الحصول على سلسلة اتصال موزع السلاسل الزمنية
في وقت لاحق، عند إنشاء مثيل Insights السلسلة الزمنية، ستقوم بتوصيل موزع السلسلة الزمنية هذا كمصدر الحدث لمثيل السلسلة الزمنية Insights.
قم بإنشاء موزع السلسلة الزمنية باستخدام الأمر التالي. حدد اسما لموزع السلاسل الزمنية.
az eventhubs eventhub create --name <name-for-your-time-series-hub> --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier>
إنشاء قاعدة تخويل مركز السلاسل الزمنية
إنشاء قاعدة تخويل مع أذونات الإرسال والاستلام. حدد اسما لقاعدة مصادقة موزع السلاسل الزمنية.
az eventhubs eventhub authorization-rule create --rights Listen Send --name <name-for-your-time-series-hub-auth-rule> --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier> --eventhub-name <your-time-series-hub-name-from-earlier>
الحصول على سلسلة اتصال موزع السلاسل الزمنية
احصل على سلسلة اتصال موزع السلاسل الزمنية، باستخدام قواعد التخويل التي أنشأتها أعلاه لموزع السلاسل الزمنية:
az eventhubs eventhub authorization-rule keys list --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier> --eventhub-name <your-time-series-hub-name-from-earlier> --name <your-time-series-hub-auth-rule-from-earlier>
لاحظ قيمة ConnectionString الأساسية من النتيجة لتكوين إعداد تطبيق موزع السلاسل الزمنية لاحقا في هذه المقالة.
لاحظ أيضا القيم التالية لاستخدامها لاحقا لإنشاء سلسلة زمنية Insights المثال.
- مساحة اسم مركز الحدث
- اسم محور السلاسل الزمنية
- قاعدة مصادقة محور السلاسل الزمنية
إنشاء وظيفة
في هذا القسم، ستقوم بإنشاء دالة Azure تقوم بتحويل أحداث التحديث المزدوج من شكلها الأصلي كمستندات JSON Patch إلى كائنات JSON التي تحتوي فقط على قيم محدثة ومضافة من التوائم.
أولا، قم بإنشاء مشروع تطبيق وظيفة جديد في Visual Studio. للحصول على إرشادات حول كيفية القيام بذلك، راجع تطوير وظائف Azure باستخدام Visual Studio.
قم بإنشاء دالة Azure جديدة تسمى ProcessDTUpdatetoTSI.cs لتحديث أحداث القياس عن بعد للجهاز إلى Insights السلسلة الزمنية. سيكون نوع الوظيفة مشغل مركز الأحداث.
أضف الحزم التالية إلى مشروعك:
استبدال التعليمات البرمجية في الملف ProcessDTUpdatetoTSI .cs بالتعليمة البرمجية التالية:
using System.Collections.Generic; using System.Threading.Tasks; using System.Text; using Microsoft.Azure.EventHubs; using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace UpdateTSI { public static class ProcessDTUpdatetoTSI { [FunctionName("ProcessDTUpdatetoTSI")] public static async Task Run( [EventHubTrigger("twins-event-hub", Connection = "EventHubAppSetting-Twins")]EventData myEventHubMessage, [EventHub("tsi-event-hub", Connection = "EventHubAppSetting-TSI")]IAsyncCollector<string> outputEvents, ILogger log) { JObject message = (JObject)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(myEventHubMessage.Body)); log.LogInformation($"Reading event: {message}"); // Read values that are replaced or added var tsiUpdate = new Dictionary<string, object>(); foreach (var operation in message["patch"]) { if (operation["op"].ToString() == "replace" || operation["op"].ToString() == "add") { //Convert from JSON patch path to a flattened property for TSI //Example input: /Front/Temperature // output: Front.Temperature string path = operation["path"].ToString().Substring(1); path = path.Replace("/", "."); tsiUpdate.Add(path, operation["value"]); } } // Send an update if updates exist if (tsiUpdate.Count > 0) { tsiUpdate.Add("$dtId", myEventHubMessage.Properties["cloudEvents:subject"]); await outputEvents.AddAsync(JsonConvert.SerializeObject(tsiUpdate)); } } } }احفظ رمز الوظيفة.
نشر المشروع باستخدام الدالة ProcessDTUpdatetoTSI .cs إلى تطبيق دالة في Azure. للحصول على إرشادات حول كيفية القيام بذلك، راجع تطوير وظائف Azure باستخدام Visual Studio.
احفظ اسم تطبيق الوظيفة لاستخدامه لاحقا لتكوين إعدادات التطبيق لمركزي الأحداث.
تكوين تطبيق الوظائف
بعد ذلك ، قم بتعيين دور وصول للوظيفة وقم بتكوين إعدادات التطبيق بحيث يمكنه الوصول إلى مواردك.
قم بتشغيل الأوامر التالية في Azure Cloud Shell أو Azure CLI محلي.
تعيين دور وصول
تتطلب وظيفة Azure رمزا مميزا لحامله ليتم تمريره إليها. للتأكد من تمرير الرمز المميز لحامله، امنح تطبيق الوظيفة دور مالك بيانات Azure Digital Twins لمثيل Azure Digital Twins الخاص بك، والذي سيمنح تطبيق الوظيفة إذنا لتنفيذ أنشطة مستوى البيانات على المثيل.
ملاحظة
يجب إكمال هذا القسم بواسطة مستخدم Azure لديه أذونات لإدارة وصول المستخدم إلى موارد Azure، بما في ذلك منح الأذونات وتفويضها. الأدوار الشائعة التي تفي بهذا المطلب هي المالكأو مسؤول الحسابأو مجموعة من مدير وصول المستخدمو المساهم. لمزيد من المعلومات حول متطلبات الأذونات لأدوار Azure Digital Twins، راجع إعداد مثيل ومصادقة.
استخدم الأمر التالي للاطلاع على تفاصيل الهوية التي يديرها النظام للدالة. لاحظ الحقل في
principalIdالإخراج. ستستخدم هذا المعرف للإشارة إلى الوظيفة بحيث يمكنك منحها أذونات في الخطوة التالية.az functionapp identity show --resource-group <your-resource-group> --name <your-function-app-name>ملاحظة
إذا كانت النتيجة فارغة بدلا من إظهار تفاصيل الهوية، فقم بإنشاء هوية جديدة مدارة بواسطة النظام للدالة باستخدام هذا الأمر:
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>يعرض الإخراج تفاصيل الهوية، بما في
principalIdذلك القيمة المطلوبة للخطوة التالية.استخدم القيمة الموجودة
principalIdفي الأمر التالي لإعطاء الدالة دور مالك بيانات Azure Digital Twins لمثيل Azure Digital Twins الخاص بك.az dt role-assignment create --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
تكوين إعدادات التطبيق
بعد ذلك، اجعل عنوان URL الخاص بمثيل Azure Digital Twins متاحا لوظيفتك عن طريق تعيين متغير بيئة له.
تلميح
يتم إنشاء عنوان URL لمثيل Azure Digital Twins عن طريق إضافة https:// إلى بداية اسم مضيف المثيل. لرؤية اسم المضيف، بالإضافة إلى جميع خصائص المثيل الخاص بك، قم بتشغيل az dt show --dt-name <your-Azure-Digital-Twins-instance>.
يقوم الأمر التالي بتعيين متغير بيئة لعنوان URL الخاص بالمثيل الذي ستستخدمه وظيفتك كلما احتاجت إلى الوصول إلى المثيل.
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>"
بعد ذلك ، أضف متغيرات البيئة في إعدادات تطبيق الوظيفة التي تسمح له بالوصول إلى محور التوائم وموزع السلسلة الزمنية.
استخدم قيمة ConnectionString الأساسية لموزع التوائم التي قمت بحفظها مسبقا لإنشاء إعداد تطبيق في تطبيق الدالات الذي يحتوي على سلسلة اتصال موزع التوائم:
az functionapp config appsettings set --settings "EventHubAppSetting-Twins=<your-twins-hub-primaryConnectionString>" --resource-group <your-resource-group> --name <your-function-app-name>
استخدم قيمة موزع السلسلة الزمنية الأساسيةConnectionString التي قمت بحفظها سابقا لإنشاء إعداد تطبيق في تطبيق الدالات يحتوي على سلسلة اتصال موزع السلسلة الزمنية:
az functionapp config appsettings set --settings "EventHubAppSetting-TSI=<your-time-series-hub-primaryConnectionString>" --resource-group <your-resource-group> --name <your-function-app-name>
إنشاء مثيل Insights سلسلة زمنية وتوصيله
في هذا القسم، ستقوم بإعداد السلاسل الزمنية Insights مثيل لتلقي البيانات من مركز السلاسل الزمنية. لمزيد من المعلومات حول هذه العملية، راجع إعداد سلسلة زمنية Azure Insights بيئة Gen2 PAYG. اتبع الخطوات أدناه لإنشاء بيئة Insights سلسلة زمنية.
في مدخل Azure، ابحث عن بيئات Insights السلاسل الزمنية، وحدد الزر إنشاء. اختر الخيارات التالية لإنشاء بيئة السلاسل الزمنية.
- الاشتراك - اختر اشتراكك.
- مجموعة الموارد - اختر مجموعة الموارد الخاصة بك.
- اسم البيئة - حدد اسما لبيئة السلاسل الزمنية.
- الموقع - اختر موقعا.
- الطبقة - اختر طبقة تسعير Gen2(L1 ).
- اسم الخاصية - أدخل $dtId (اقرأ المزيد حول تحديد قيمة معرف في أفضل الممارسات لاختيار معرف سلسلة زمنية).
- اسم حساب التخزين - حدد اسم حساب التخزين.
- تمكين التخزين الدافئ - اترك هذا الحقل مضبوطا على نعم.
يمكنك ترك القيم الافتراضية للخصائص الأخرى في هذه الصفحة. حدد الزر التالي: مصدر >الحدث.
- الاشتراك - اختر اشتراكك.
في علامة التبويب مصدر الحدث ، اختر الحقول التالية:
- إنشاء مصدر حدث؟ - اختر نعم.
- نوع المصدر - اختر مركز الأحداث.
- الاسم - حدد اسما لمصدر الحدث.
- الاشتراك - اختر اشتراكك في Azure.
- مساحة اسم مركز الأحداث - اختر مساحة الاسم التي قمت بإنشائها مسبقا في هذه المقالة.
- اسم مركز الحدث - اختر اسم موزع السلسلة الزمنية الذي قمت بإنشائه مسبقا في هذه المقالة.
- اسم نهج الوصول إلى مركز الأحداث - اختر قاعدة مصادقة موزع السلاسل الزمنية التي أنشأتها سابقا في هذه المقالة.
- مجموعة مستهلكي مركز الأحداث - حدد جديد وحدد اسما لمجموعة مستهلكي مركز الأحداث. ثم حدد Add.
- اسم الخاصية - اترك هذا الحقل فارغا.
اختر الزر مراجعة + إنشاء لمراجعة جميع التفاصيل. ثم حدد الزر مراجعة + إنشاء مرة أخرى لإنشاء بيئة السلاسل الزمنية.
إرسال بيانات إنترنت الأشياء إلى Azure Digital Twins
لبدء إرسال البيانات إلى Insights السلاسل الزمنية، ستحتاج إلى البدء في تحديث خصائص التوأم الرقمي في Azure Digital Twins مع تغيير قيم البيانات.
استخدم الأمر SQL للتحديث المزدوج az dt لتحديث خاصية على التوأم الذي أضفته في قسم المتطلبات الأساسية . إذا استخدمت تعليمات إنشاء التوأم من القياس عن بعد Ingest من IoT Hub)، فيمكنك استخدام الأمر التالي في CLI المحلي أو محطة Cloud Shell bash الطرفية لتحديث خاصية درجة الحرارة على التوأم thermostat67. هناك عنصر نائب واحد لاسم مضيف مثيل Azure Digital Twins (يمكنك أيضا استخدام الاسم المألوف للمثيل مع انخفاض طفيف في الأداء).
az dt twin update --dt-name <your-Azure-Digital-Twins-instance-hostname-or-name> --twin-id thermostat67 --json-patch '{"op":"replace", "path":"/Temperature", "value": 20.5}'
كرر الأمر 4 مرات أخرى على الأقل باستخدام قيم خصائص مختلفة لإنشاء العديد من نقاط البيانات التي يمكن ملاحظتها لاحقا في بيئة Insights السلاسل الزمنية.
تلميح
إذا كنت ترغب في إكمال هذه المقالة باستخدام بيانات محاكاة مباشرة بدلا من تحديث قيم التوائم الرقمية يدويا، فتأكد أولا من إكمال TIP من قسم المتطلبات الأساسية لإعداد وظيفة Azure التي تقوم بتحديث التوائم من جهاز محاكاة. بعد ذلك ، يمكنك تشغيل الجهاز الآن لبدء إرسال بيانات محاكاة وتحديث توأمك الرقمي من خلال تدفق البيانات هذا.
قم بتصور البيانات الخاصة بك في Time Series Insights
الآن ، يجب أن تتدفق البيانات إلى السلسلة الزمنية الخاصة بك Insights المثال ، جاهزة للتحليل. اتبع الخطوات أدناه لاستكشاف البيانات الواردة.
في مدخل Azure، ابحث عن اسم بيئة السلاسل الزمنية التي قمت بإنشائها مسبقا. في خيارات القائمة على اليمين، حدد نظرة عامة لرؤية عنوان URL للسلسلة الزمنية Insights Explorer. حدد عنوان URL لعرض تغيرات درجة الحرارة المنعكسة في بيئة Insights السلاسل الزمنية.
في المستكشف، سترى التوائم في مثيل Azure Digital Twins معروضا على اليمين. حدد التوأم الذي قمت بتحرير الخصائص له، واختر الخاصية التي قمت بتغييرها، وحدد إضافة.
من المفترض أن ترى الآن تغييرات الخصائص التي أجريتها في الرسم البياني، كما هو موضح أدناه.
إذا سمحت بتشغيل المحاكاة لفترة أطول بكثير ، فسيبدو تصورها كما يلي:
الخطوات التالية
يتم تخزين التوائم الرقمية بشكل افتراضي كتسلسل هرمي مسطح في السلاسل الزمنية Insights، ولكن يمكن إثراؤها بمعلومات النموذج وتسلسل هرمي متعدد المستويات للمؤسسة. لمعرفة المزيد حول هذه العملية، اقرأ:
يمكنك كتابة منطق مخصص لتوفير هذه المعلومات تلقائيا باستخدام بيانات النموذج والرسم البياني المخزنة بالفعل في Azure Digital Twins. لقراءة المزيد حول إدارة المعلومات وترقيتها واسترجاعها من الرسم البياني للتوائم، راجع المراجع التالية:







