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
A Visual Studióval.
IoT Hub az Azure-előfizetésben. Ha még nem rendelkezik központokkal, kövesse az IoT Hub létrehozása című témakörben leírt lépéseket.
Az IoT Hubon regisztrált eszköz. Ha nincs eszköze az IoT Hubon, kövesse az eszköz regisztrálása című témakörben leírt lépéseket.
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:
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.
Adja meg a myFirstModule nevet. Mentse a modul identitását.
Az új modul-identitás a képernyő alján jelenik meg. Válassza ki a modul identitásadatainak megtekintéséhez.
Mentse a kapcsolati sztringet (elsődleges kulcsot). A következő szakaszban a modult egy konzolalkalmazásban állíthatja be az eszközön.
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:
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.
Az új projekt konfigurálásakor adja meg az UpdateModuleTwinReportedProperties nevet projektnévként. A folytatáshoz válassza a Tovább gombra.
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:
A Visual Studióban nyissa meg a Tools>NuGet Csomagkezelő> Manage NuGet Packages for Solution eszközt.
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.
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:
- Adja hozzá a következő
using
utasításokat a Program.cs fájl elejéhez:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
- 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;
- 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);
}
- 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: