Delen via


Aan de slag met ioT Hub-moduleidentiteit en moduledubbel met behulp van Azure Portal en een .NET-apparaat

Module-id's en moduledubbels zijn vergelijkbaar met Azure IoT Hub-apparaat-id's en apparaatdubbels, maar bieden een hogere granulariteit. Hoewel azure IoT Hub-apparaatidentiteit en apparaatdubbel de back-endtoepassing in staat stellen een apparaat te configureren en zichtbaarheid te bieden aan de voorwaarden van het apparaat, bieden een module-id en moduledubbel deze mogelijkheden voor afzonderlijke onderdelen van een apparaat. Op compatibele apparaten met meerdere onderdelen, zoals besturingssysteemapparaten of firmwareapparaten, staan module-identiteiten en moduledubbels geïsoleerde configuratie en voorwaarden voor elk onderdeel toe.

Notitie

De functies die in dit artikel worden beschreven, zijn alleen beschikbaar in de standaardlaag van de IoT Hub. Zie De juiste IoT Hub-laag voor uw oplossing kiezen voor meer informatie over de Basic- en Standard-/gratis IoT Hub-lagen.

In dit artikel leert u het volgende:

  • Maak een module-id in de portal.

  • Gebruik een .NET-apparaat-SDK om de moduledubbel van uw apparaat bij te werken.

Notitie

Zie Azure IoT SDK's voor meer informatie over de SDK-hulpprogramma's die beschikbaar zijn voor het bouwen van zowel apparaat- als back-end-apps.

Vereisten

  • Visual Studio.

  • Een IoT-hub in uw Azure-abonnement. Als u nog geen hub hebt, kunt u de stappen volgen in Een IoT-hub maken.

  • Een apparaat dat is geregistreerd in uw IoT-hub. Als u geen apparaat in uw IoT-hub hebt, volgt u de stappen in Een apparaat registreren.

Moduleverificatie

U kunt symmetrische sleutels of X.509-certificaten gebruiken om module-identiteiten te verifiëren. Voor X.509-certificaatverificatie moet het certificaat van de module de algemene naam (CN) hebben, zoals CN=<deviceid>/<moduleid>. Voorbeeld:

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

Een module-id in de portal maken

Binnen één apparaat-id kunt u 20 module-entiteiten maken. Voer de volgende stappen uit om een identiteit toe te voegen:

  1. Kies module-id toevoegen op uw bestaande apparaat in Azure Portal om uw eerste module-id te maken.

  2. Voer de naam myFirstModule in. Sla uw module-id op.

  3. Uw nieuwe module-id wordt onder aan het scherm weergegeven. Selecteer deze om details van module-id's weer te geven.

  4. Sla de verbindingsreeks (primaire sleutel) op. U gebruikt deze in de volgende sectie om uw module in te stellen op het apparaat in een console-app.

    Schermopname van het menu Identity Details van module.

De moduledubbel bijwerken met de SDK voor .NET-apparaten

We gaan nu communiceren met de cloud vanaf uw gesimuleerde apparaat. Door de module-id te maken, wordt impliciet ook een moduledubbel in de IoT Hub gemaakt. In deze sectie maakt u een .NET-consoletoepassing op het gesimuleerde apparaat waarmee de gerapporteerde eigenschappen van de moduledubbel worden bijgewerkt.

Een Visual Studio-project maken

Als u een app wilt maken waarmee de moduledubbel wordt bijgewerkt, voert u de volgende stappen uit:

  1. Selecteer in Visual Studio Een nieuw project maken, kies vervolgens Console-app (.NET Framework) en selecteer Volgende.

  2. Voer in Configure your new project , enter UpdateModuleTwinReportedProperties as the Project name. Selecteer Volgende om door te gaan.

    Schermopname van de pop-up 'Uw nieuwe project configureren'.

  3. Behoud het standaard .NET Framework en selecteer Vervolgens Maken.

De nieuwste Azure IoT Hub .NET-apparaat-SDK installeren

De functies voor module-id's en moduledubbels zijn alleen beschikbaar in de SDK's voor vooraf uitgebrachte IoT Hub-apparaten. Voer de volgende stappen uit om deze te installeren:

  1. Open Tools>NuGet Pakketbeheer> Manage NuGet Packages for Solution in Visual Studio.

  2. Selecteer Bladeren en selecteer vervolgens Prerelease opnemen. Zoek naar Microsoft.Azure.Devices.Client. Selecteer de nieuwste versie en installeer deze.

    Schermopname die laat zien hoe u de Microsoft.Azure.Devices.Client installeert.

    U hebt nu toegang tot alle modulefuncties.

UpdateModuleTwinReportedProperties-console-app maken

Belangrijk

Dit artikel bevat stappen voor het verbinden van een apparaat met behulp van een Shared Access Signature, ook wel symmetrische sleutelverificatie genoemd. Deze verificatiemethode is handig voor testen en evalueren, maar het verifiëren van een apparaat met X.509-certificaten is een veiligere benadering. Zie Best practices > voor beveiliging voor verbindingsbeveiliging voor meer informatie.

Voer de volgende stappen uit om uw app te maken:

  1. Voeg aan het begin van het bestand Program.cs de volgende using-instructies toe:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Voeg de volgende velden toe aan de klasse Program: Vervang de waarde van de tijdelijke aanduiding door de module verbindingsreeks u eerder hebt opgeslagen.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Voeg de methode OnDesiredPropertyChanged toe aan de klasse Program:
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. Vervang ten slotte de Main-methode door de volgende code:
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}");
}

U kunt deze app bouwen en uitvoeren met F5.

U weet nu hoe u de moduledubbel ophaalt en gerapporteerde eigenschappen bijwerkt met het AMQP-protocol.

Volgende stappen

Als u aan de slag wilt gaan met IoT Hub en andere IoT-scenario's wilt verkennen, leest u deze artikelen: