Megosztás a következőn keresztül:


Ismerkedés az IoT Hub modul identitásával és ikermoduljával az Azure Portal és egy .NET-eszköz használatával

A modulidentitások és modulikrek az Azure IoT Hub eszközidentitásához és eszközikeréhez hasonlók, de nagyobb részletességet biztosítanak. Bár az Azure IoT Hub eszközidentitása és ikereszköze lehetővé teszi a háttéralkalmazás számára az eszköz konfigurálását és az eszköz feltételeinek láthatóságát, a modulidentitás és a modul ikerpéldánya biztosítja ezeket a képességeket az eszköz egyes összetevői számára. A több összetevővel rendelkező, például operációsrendszer-eszközökkel vagy belső vezérlőprogram-eszközökkel rendelkező, képes eszközökön a modulidentitások és a modulikrek lehetővé teszik az egyes összetevők elkülönített konfigurációját és feltételeit.

Feljegyzés

A cikkben ismertetett funkciók csak az IoT Hub standard szintjén érhetők el. Az alapszintű és standard/ingyenes IoT Hub-szintekről további információt a megoldáshoz megfelelő IoT Hub-szint kiválasztása című témakörben talál.

Ebből a cikkből megtudhatja, hogyan:

  • Modulidentitás létrehozása a portálon.

  • Egy .NET-eszköz SDK-val frissítse a modul ikerpéldányát az eszközről.

Feljegyzés

Az eszköz- és háttéralkalmazások készítéséhez elérhető SDK-eszközökről további információt az Azure IoT SDK-kban talál.

Előfeltételek

Modulhitelesítés

A modulidentitások hitelesítéséhez szimmetrikus kulcsokat vagy X.509-tanúsítványokat használhat. Az X.509-tanúsítványhitelesítéshez a modul tanúsítványának a köznapi neve (CN) formátumával CN=<deviceid>/<moduleid>kell rendelkeznie. Példa:

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

Modulidentitás létrehozása a portálon

Egy eszközidentitáson belül legfeljebb 20 modulidentitás hozható létre. Identitás hozzáadásához kövesse az alábbi lépéseket:

  1. Az Azure Portal meglévő eszközén válassza a Modulidentitás hozzáadása lehetőséget az első modulidentitás létrehozásához.

  2. Adja meg a myFirstModule nevet. Mentse a modul identitását.

  3. Az új modul-identitás a képernyő alján jelenik meg. Válassza ki a modul identitásadatainak megtekintéséhez.

  4. Mentse a kapcsolati sztringet (elsődleges kulcsot). A következő szakaszban a modult egy konzolalkalmazásban állíthatja be az eszközön.

    Képernyőkép a Modulidentitás részletei menüről.

A moduliker frissítése a .NET eszközoldali SDK-val

Most kommunikáljunk a felhőben a szimulált eszközről. A modulidentitás létrehozása után egy moduliker is implicit módon létrejön az IoT Hubban. Ebben a szakaszban egy .NET-konzolalkalmazást hoz létre a szimulált eszközön a moduliker jelentett tulajdonságainak frissítéséhez.

Visual Studio-projekt létrehozása

Ha olyan alkalmazást szeretne létrehozni, amely frissíti a modul ikerpéldányának jelentett tulajdonságait, kövesse az alábbi lépéseket:

  1. A Visual Studióban válassza az Új projekt létrehozása, majd a Konzolalkalmazás (.NET-keretrendszer) lehetőséget, majd a Tovább lehetőséget.

  2. Az új projekt konfigurálásakor adja meg az UpdateModuleTwinReportedProperties nevet projektnévként. A folytatáshoz válassza a Tovább gombra.

    Képernyőkép az

  3. Tartsa meg az alapértelmezett .NET-keretrendszert, majd válassza a Létrehozás lehetőséget.

A legújabb Azure IoT Hub .NET-eszköz SDK telepítése

A modul identitás- és modul-ikerfunkciói csak az IoT Hub előzetes kiadás előtti eszközoldali SDK-jaiban érhetők el. A telepítéshez kövesse az alábbi lépéseket:

  1. A Visual Studióban nyissa meg a Tools>NuGet Csomagkezelő> Manage NuGet Packages for Solution eszközt.

  2. Válassza a Tallózás lehetőséget, majd válassza az Előválasztás belefoglalása lehetőséget. Keressen rá a Microsoft.Azure.Devices.Client fájlra. Válassza ki a legújabb verziót, és telepítse.

    Képernyőkép a Microsoft.Azure.Devices.Client telepítéséről.

    Most már az összes modulfunkcióhoz rendelkezik hozzáféréssel.

UpdateModuleTwinReportedProperties konzolalkalmazás létrehozása

Fontos

Ez a cikk az eszközök közös hozzáférésű jogosultságkóddal, más néven szimmetrikus kulcshitelesítéssel való csatlakoztatásának lépéseit tartalmazza. Ez a hitelesítési módszer alkalmas tesztelésre és kiértékeléshez, de az eszköz hitelesítése X.509-tanúsítványokkal biztonságosabb módszer. További információkért tekintse meg a kapcsolatbiztonság ajánlott biztonsági eljárásait>.

Az alkalmazás létrehozásához kövesse az alábbi lépéseket:

  1. Adja hozzá a következő usingutasításokat a Program.cs fájl elejéhez:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Adja hozzá a Program osztályhoz a következő mezőket: Cserélje le a helyőrző értékét a korábban mentett modulra kapcsolati sztring.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Adja hozzá a Program osztályhoz a következő, OnDesiredPropertyChanged metódust:
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. Végül cserélje le a Main metódust a következő kódra:
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}");
}

Ezt az alkalmazást az F5 használatával hozhatja létre és futtathatja.

Most már tudja, hogyan lehet lekérni a modul ikerpéldányát, és frissíteni a jelentett tulajdonságokat az AMQP protokollal.

Következő lépések

További bevezetés az IoT Hub használatába, valamint egyéb IoT-forgatókönyvek megismerése: