ابدأ باستخدام هوية وحدة IoT Hub والوحدة النمطية المزدوجة باستخدام مدخل Microsoft Azure وجهاز .NET

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

ملاحظة

الميزات الموضحة في هذه المقالة متوفرة فقط في المستوى القياسي لـ IoT Hub. لمزيد من المعلومات حول مستويات IoT Hub الأساسية والقياسية/المجانية، راجع اختيار طبقة IoT Hub المناسبة للحل الخاص بك.

في هذا المقال، ستتعلم كيفية إجراء ما يلي:

  • قم بإنشاء هوية وحدة نمطية في المدخل.

  • استخدام جهاز NET SDK. لتحديث الوحدة النمطية المزدوجة من جهازك.

ملاحظة

راجع Azure IoT SDKs لمزيد من المعلومات حول أدوات SDK المتوفرة لإنشاء كل من الجهاز والتطبيقات الخلفية.

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

مصادقة الوحدة النمطية

يمكنك استخدام مفاتيح متماثلة أو شهادات X.509 لمصادقة هويات الوحدة النمطية. لمصادقة شهادة X.509، يجب أن يكون لشهادة الوحدة النمطية اسمها الشائع (CN) منسق مثل CN=<deviceid>/<moduleid>. على سبيل المثال:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

قم بإنشاء هوية وحدة في المدخل

ضمن هوية جهاز واحد، يمكنك إنشاء ما يصل إلى 20 هوية وحدة. لإضافة هوية، اتبع الخطوات التالية:

  1. من جهازك الموجود في مدخل Microsoft Azure، اختر إضافة هوية الوحدة النمطية لإنشاء هوية الوحدة النمطية الأولى.

  2. أدخل الاسم myFirstModule. احفظ هوية الوحدة الخاصة بك.

    لقطة شاشة تعرض صفحة

    تظهر هوية الوحدة الجديدة الخاصة بك في الجزء السفلي من الشاشة. حدده لمشاهدة تفاصيل هوية الوحدة.

    لقطة شاشة تعرض قائمة تفاصيل هوية الوحدة النمطية.

احفظ سلسلة الاتصال (مفتاح أساسي). يمكنك استخدامه في القسم التالي لإعداد الوحدة النمطية الخاصة بك على الجهاز في تطبيق وحدة التحكم.

قم بتحديث الوحدة النمطية المزدوجة باستخدام .NET device SDK

في الوقت الحالي دعنا نتواصل مع السحابة من جهاز المحاكاة الخاص بك. بمجرد إنشاء هوية الوحدة النمطية، يتم إنشاء وحدة توءم ضمنياً في IoT Hub. في هذا القسم، تقوم بإنشاء تطبيق .NET console على جهازك الذي تمت محاكاته والذي يقوم بتحديث خصائص الوحدة النمطية المزدوجة التي تم الإبلاغ عنها.

إنشاء مشروع Visual Studio

لإنشاء تطبيق يقوم بتحديث خصائص الوحدة النمطية المزدوجة، التي تم الإبلاغ عنها، اتبع الخطوات التالية:

  1. في Visual Studio، حدد Create a new project، ثم اختر Console App (.NET Framework)، وحدد Next.

  2. في Configure your new project، أدخل UpdateModuleTwinReportedProperties باعتباره Project name. حدد «Next» للمتابعة.

    لقطة شاشة تعرض النافذة المنبثقة

  3. احتفظ بإطار عمل .NET الافتراضي، ثم حدد إنشاء.

قم بتثبيت أحدث SDK لجهاز Azure IoT Hub .NET

تتوفر هوية الوحدة النمطية والوحدة النمطية المزدوجة فقط في SDKs لجهاز مركز IoT الذي تم إصداره مسبقا. لتثبيته، اتبع الخطوات التالية:

  1. في Visual Studio، افتح Tools>NuGet Package Manager>إدارة حزم NuGet للحلول.

  2. حدد Browse، ثم حدد Include prerelease. ابحث عن Microsoft.Azure.Devices.Client. حدد أحدث إصدار وقم بالتثبيت.

    لقطة شاشة توضح كيفية تثبيت Microsoft.Azure.Devices.Client.

    الآن يمكنك الوصول إلى جميع ميزات الوحدة.

قم بإنشاء تطبيق وحدة تحكم UpdateModuleTwinReportedProperties

لإنشاء تطبيقك، اتبع الخطوات التالية:

  1. إضافة العبارات التالية using في الجزء العلوي من الملف Program.cs:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. إضافة الحقول التالية إلى فئة البرنامج. استبدل قيمة العنصر النائب بسلسلة اتصال الوحدة النمطية التي حفظتها مسبقا.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. أضف الطريقة التالية OnDesiredPropertyChanged إلى فئة البرنامج :
private static async Task OnDesiredPropertyChanged(TwinCollection desiredProperties, object userContext)
    {
        Console.WriteLine("desired property change:");
        Console.WriteLine(JsonConvert.SerializeObject(desiredProperties));
        Console.WriteLine("Sending current time as reported property");
        TwinCollection reportedProperties = new TwinCollection
        {
            ["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.Now
        };

        await Client.UpdateReportedPropertiesAsync(reportedProperties).ConfigureAwait(false);
    }
  1. أخيراً، استبدل الطريقة Main بالتعليمة البرمجية التالية:
static void Main(string[] args)
{
    Microsoft.Azure.Devices.Client.TransportType transport = Microsoft.Azure.Devices.Client.TransportType.Amqp;

    try
    {
        Client = ModuleClient.CreateFromConnectionString(ModuleConnectionString, transport);
        Client.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);
        Client.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChanged, null).Wait();

        Console.WriteLine("Retrieving twin");
        var twinTask = Client.GetTwinAsync();
        twinTask.Wait();
        var twin = twinTask.Result;
        Console.WriteLine(JsonConvert.SerializeObject(twin));

        Console.WriteLine("Sending app start time as reported property");
        TwinCollection reportedProperties = new TwinCollection();
        reportedProperties["DateTimeLastAppLaunch"] = DateTime.Now;

        Client.UpdateReportedPropertiesAsync(reportedProperties);
    }
    catch (AggregateException ex)
    {
        Console.WriteLine("Error in sample: {0}", ex);
    }

    Console.WriteLine("Waiting for Events.  Press enter to exit...");
    Console.ReadKey();
    Client.CloseAsync().Wait();
}

private static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
{
    Console.WriteLine($"Status {status} changed: {reason}");
}

يمكنك إنشاء هذا التطبيق وتشغيله باستخدام F5.

أنت الآن تعرف كيفية استرداد الوحدة النمطية المزدوجة وتحديث الخصائص المبلغ عنها باستخدام بروتوكول AMQP.

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

لمتابعة عملية بدء استخدام IoT Hub واستكشاف سيناريوهات IoT الأخرى، راجع: