Delen via


Aan de slag met IoT Hub-module-id's en moduleidentiteitsdubbels

Module-identiteiten en moduleidentiteitsdubbels zijn vergelijkbaar met Azure IoT Hub-apparaatidentiteiten en apparaatdubbels, maar bieden een fijnere granulariteit. Hoewel Azure IoT Hub-apparaatidentiteiten en apparaatdubbels de back-endtoepassing in staat stellen een apparaat te configureren en inzicht te bieden in de voorwaarden van het apparaat, bieden een module-id en module-iddubbel deze mogelijkheden voor afzonderlijke onderdelen van een apparaat. Op compatibele apparaten met meerdere onderdelen, zoals besturingssysteemapparaten of firmwareapparaten, staan module-id's en module-identiteitsdubbels geïsoleerde configuratie en voorwaarden voor elk onderdeel toe. Zie Azure IoT Hub-moduledubbels voor meer informatie.

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 leest u hoe u twee typen toepassingen ontwikkelt:

  • Apparaat-apps die gerapporteerde eigenschappen van moduleidentiteitsdubbel weergeven en bijwerken en aanvragen verwerken om de gewenste eigenschappen bij te werken.
  • Service-apps die gewenste eigenschappen voor module-id's kunnen lezen en instellen.

Notitie

Dit artikel is bedoeld als aanvulling op Azure IoT SDK-voorbeelden waarnaar in dit artikel wordt verwezen. U kunt SDK-hulpprogramma's gebruiken om zowel apparaat- als back-endtoepassingen te bouwen.

Vereisten

  • Een IoT-hub

  • Een IoT Hub-apparaat

  • Een IoT Hub-apparaatmodule-id

  • Als uw toepassing gebruikmaakt van het MQTT-protocol, moet u ervoor zorgen dat poort 8883 is geopend in uw firewall. Het MQTT-protocol communiceert via poort 8883. Deze poort is in sommige netwerkomgevingen van bedrijven en onderwijsinstellingen mogelijk geblokkeerd. Zie Verbinding maken met IoT Hub (MQTT) voor meer informatie en manieren om dit probleem te omzeilen.

  • Visual Studio vereist

Overzicht

In dit artikel wordt beschreven hoe u de Azure IoT SDK voor .NET gebruikt om toepassingscode voor apparaat- en back-endservice te maken voor moduleidentiteitsdubbels.

Een apparaattoepassing maken

In deze sectie wordt beschreven hoe u apparaattoepassingscode gebruikt voor het volgende:

  • Een moduleidentiteitsdubbel ophalen en gerapporteerde eigenschappen onderzoeken
  • Gerapporteerde eigenschappen van module-id-dubbel bijwerken
  • Een aanroephandler voor het bijwerken van de gewenste eigenschap 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.

Vereist NuGet-apparaatpakket

Voor apparaatclienttoepassingen die zijn geschreven in C# is het NuGet-pakket Microsoft.Azure.Devices.Client vereist.

Voeg deze using instructies toe om de apparaatbibliotheek te gebruiken.

using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;

Verbinding maken met een apparaat

De ModuleClient-klasse bevat alle methoden die vereist zijn om te communiceren met moduleidentiteitsdubbels vanaf het apparaat.

Maak verbinding met het apparaat met behulp van de methode CreateFromConnectionString met de module-id verbindingsreeks.

Bellen CreateFromConnectionString zonder transportparameter maakt verbinding met behulp van het standaard AMQP-transport.

In dit voorbeeld wordt verbinding gemaakt met het apparaat met behulp van het standaard AMQP-transport.

static string ModuleConnectionString = "{Device module identity connection string}";
private static ModuleClient _moduleClient = null;

_moduleClient = ModuleClient.CreateFromConnectionString(ModuleConnectionString, null);

Notitie

C#/.NET biedt geen ondersteuning voor de verbinding van een apparaat-app met een IoT Hub-moduleidentiteitsdubbel met behulp van een certificaat.

Een moduleidentiteitsdubbel ophalen en eigenschappen onderzoeken

Roep GetTwinAsync aan om de huidige eigenschappen van de moduleidentiteitsdubbel op te halen in een Twin-object .

In dit voorbeeld worden eigenschappen van module-id-dubbels opgehaald en weergegeven in JSON-indeling.

Console.WriteLine("Retrieving twin...");
Twin twin = await _moduleClient.GetTwinAsync();
Console.WriteLine("\tModule identity twin value received:");
Console.WriteLine(JsonConvert.SerializeObject(twin.Properties));

Gerapporteerde eigenschappen van moduleidentiteitsdubbel bijwerken

Een gerapporteerde eigenschap van een dubbel bijwerken:

  1. Een TwinCollection-object maken voor de gerapporteerde eigenschapsupdate
  2. Een of meer gerapporteerde eigenschappen in het TwinCollection object bijwerken
  3. UpdateReportedPropertiesAsync gebruiken om gerapporteerde eigenschapswijzigingen naar de IoT Hub-service te pushen

Voorbeeld:

try
{
  Console.WriteLine("Sending sample start time as reported property");
  TwinCollection reportedProperties = new TwinCollection();
  reportedProperties["DateTimeLastAppLaunch"] = DateTime.UtcNow;
  await _moduleClient.UpdateReportedPropertiesAsync(reportedProperties);
}
catch (Exception ex)
{
   Console.WriteLine();
   Console.WriteLine("Error in sample: {0}", ex.Message);
}

Een callback-handler voor het bijwerken van de gewenste eigenschap maken

Geef de naam van de callback-handlermethode door aan SetDesiredPropertyUpdateCallbackAsync om een callback-handler voor het bijwerken van de gewenste eigenschap te maken die wordt uitgevoerd wanneer een gewenste eigenschap wordt gewijzigd in de moduleidentiteitsdubbel.

Met deze aanroep wordt bijvoorbeeld het systeem ingesteld om een methode met de naam OnDesiredPropertyChangedAsync te informeren wanneer een gewenste module-eigenschap wordt gewijzigd.

await _moduleClient.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChangedAsync, null);

De eigenschappen van de module-identiteitsdubbel worden als een TwinCollection doorgegeven aan de callback-methode en kunnen als structuren worden onderzocht KeyValuePair .

In dit voorbeeld worden de gewenste eigenschapsupdates ontvangen als een TwinCollection, waarna de KeyValuePair verzamelingsupdates worden doorlopen en afgedrukt. Nadat de KeyValuePair verzameling is doorlopen, wordt de code aanroepen UpdateReportedPropertiesAsync om de DateTimeLastDesiredPropertyChangeReceived gerapporteerde eigenschap bij te werken om de laatst bijgewerkte tijd up-to-date te houden.

private async Task OnDesiredPropertyChangedAsync(TwinCollection desiredProperties, object userContext)
{
   var reportedProperties = new TwinCollection();

   Console.WriteLine("\tDesired properties requested:");
   Console.WriteLine($"\t{desiredProperties.ToJson()}");

   // For the purpose of this sample, we'll blindly accept all twin property write requests.
   foreach (KeyValuePair<string, object> desiredProperty in desiredProperties)
   {
         Console.WriteLine($"Setting {desiredProperty.Key} to {desiredProperty.Value}.");
         reportedProperties[desiredProperty.Key] = desiredProperty.Value;
   }

   Console.WriteLine("\tAlso setting current time as reported property");
   reportedProperties["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.UtcNow;

   await _moduleClient.UpdateReportedPropertiesAsync(reportedProperties);
}

Voorbeeld van SDK-module

De Azure IoT SDK voor .NET biedt werkende voorbeelden van apparaat-apps die taken van moduleidentiteitsdubbels verwerken. Zie voor meer informatie:

Een back-endtoepassing maken

In deze sectie wordt beschreven hoe u module-id-velden leest en bijwerkt.

De Klasse RegistryManager bevat alle methoden die nodig zijn om een back-endtoepassing te maken om te communiceren met moduleidentiteitsdubbels van de service.

Vereist NuGet-servicepakket

Voor back-endservicetoepassingen is het NuGet-pakket Microsoft.Azure.Devices vereist.

Voeg deze using instructies toe om de servicebibliotheek te gebruiken.

using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Shared;

Verbinding maken met IoT Hub

U kunt een back-endservice verbinden met IoT Hub met behulp van de volgende methoden:

  • Beleid voor gedeelde toegang
  • Microsoft Entra

Belangrijk

Dit artikel bevat stappen voor het maken van verbinding met een service met behulp van een handtekening voor gedeelde toegang. Deze verificatiemethode is handig voor testen en evalueren, maar verificatie bij een service met Microsoft Entra ID of beheerde identiteiten is een veiligere benadering. Zie Best practices > voor beveiliging voor cloudbeveiliging voor meer informatie.

Verbinding maken met behulp van een beleid voor gedeelde toegang

Een back-endtoepassing verbinden met IoT Hub met createFromConnectionString.

Voor de UpdateModuleAsync methode die in deze sectie wordt gebruikt, is de machtiging gedeeld toegangsbeleid voor Service Connect vereist om gewenste eigenschappen toe te voegen aan een module. Geef als parameter een CreateFromConnectionStringbeleid voor gedeelde toegang op verbindingsreeks dat serviceverbindingsmachtigingen bevat. Zie Toegang tot IoT Hub beheren met handtekeningen voor gedeelde toegang voor meer informatie over beleid voor gedeelde toegang.

Voorbeeld:

static RegistryManager registryManager;
static string connectionString = "{IoT hub shared access policy connection string}";
registryManager = RegistryManager.CreateFromConnectionString(connectionString);

Verbinding maken met Microsoft Entra

Een back-end-app die gebruikmaakt van Microsoft Entra, moet een beveiligingstokenreferentie verifiëren en verkrijgen voordat u verbinding maakt met IoT Hub. Dit token wordt doorgegeven aan een IoT Hub-verbindingsmethode. Zie Toegang tot IoT Hub beheren met behulp van Microsoft Entra ID voor algemene informatie over het instellen en gebruiken van Microsoft Entra voor IoT Hub.

Microsoft Entra-app configureren

U moet een Microsoft Entra-app instellen die is geconfigureerd voor uw voorkeursverificatiereferenties. De app bevat parameters zoals het clientgeheim dat door de back-endtoepassing wordt gebruikt om te verifiëren. De beschikbare configuraties voor app-verificatie zijn:

  • Clientgeheim
  • Certificaat
  • Referenties voor federatieve identiteit

Voor Microsoft Entra-apps zijn mogelijk specifieke rolmachtigingen vereist, afhankelijk van bewerkingen die worden uitgevoerd. IoT Hub Twin-inzender is bijvoorbeeld vereist om lees- en schrijftoegang tot een IoT Hub-apparaat en moduledubbels in te schakelen. Zie Toegang tot IoT Hub beheren met behulp van Azure RBAC-roltoewijzing voor meer informatie.

Zie quickstart: Een toepassing registreren bij het Microsoft Identity Platform voor meer informatie over het instellen van een Microsoft Entra-app.

Verifiëren met DefaultAzureCredential

De eenvoudigste manier om Microsoft Entra te gebruiken om een back-endtoepassing ChainedTokenCredentialte verifiëren, is door DefaultAzureCredential te gebruiken, maar het wordt aanbevolen om een andere methode te gebruiken in een productieomgeving, inclusief een specifieke TokenCredential of geparseerde toepassing. Ter vereenvoudiging beschrijft deze sectie verificatie met behulp van DefaultAzureCredential en clientgeheim. Zie Gebruiksrichtlijnen voor DefaultAzureCredential voor meer informatie over de voor- en nadelen van het gebruik.DefaultAzureCredential

DefaultAzureCredential ondersteunt verschillende verificatiemechanismen en bepaalt het juiste referentietype op basis van de omgeving waarin het wordt uitgevoerd. Er wordt geprobeerd om meerdere referentietypen in een volgorde te gebruiken totdat er een werkende referentie wordt gevonden.

Microsoft Entra vereist deze NuGet-pakketten en bijbehorende using instructies:

  • Azure.Core
  • Azure.Identity
using Azure.Core;
using Azure.Identity;

In dit voorbeeld worden clientgeheim, client-id en tenant-id van Microsoft Entra-app-registratie toegevoegd aan omgevingsvariabelen. Deze omgevingsvariabelen worden gebruikt om DefaultAzureCredential de toepassing te verifiëren. Het resultaat van een geslaagde Microsoft Entra-verificatie is een beveiligingstokenreferentie die wordt doorgegeven aan een IoT Hub-verbindingsmethode.

string clientSecretValue = "xxxxxxxxxxxxxxx";
string clientID = "xxxxxxxxxxxxxx";
string tenantID = "xxxxxxxxxxxxx";

Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecretValue);
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientID);
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantID);

TokenCredential tokenCredential = new DefaultAzureCredential();

De resulterende TokenCredential kan vervolgens worden doorgegeven aan een verbinding met de IoT Hub-methode voor elke SDK-client die Microsoft Entra-referenties accepteert:

In dit voorbeeld wordt het TokenCredential doorgegeven om een ServiceClient-verbindingsobject te ServiceClient.Create maken.

string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);

In dit voorbeeld wordt het TokenCredential doorgegeven om RegistryManager.Create een RegistryManager-object te maken.

string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Voorbeeld van code

Zie Het voorbeeld van verificatie op basis van rollen voor een werkende voorbeeld van Microsoft Entra-serviceverificatie.

Identiteitsvelden voor module lezen en bijwerken

Roep GetModuleAsync aan om de huidige id-id-velden van de module op te halen in een moduleobject .

De Module klasse bevat properties die overeenkomen met secties van een moduleidentiteitsdubbel. Gebruik de eigenschappen van de moduleklasse om de id-dubbelvelden van de module weer te geven en bij te werken. U kunt de Module objecteigenschappen gebruiken om meerdere velden bij te werken voordat u de updates naar het apparaat schrijft met behulp van UpdateModuleAsync.

Nadat u veldupdates voor module-id-dubbels hebt gemaakt, roept u UpdateModuleAsync aan om objectveldupdates terug te schrijven Module naar een apparaat. Gebruik try en catch logica in combinatie met een fouthandler om onjuist opgemaakte patchfouten te ondervangen van UpdateModuleAsync.

In dit voorbeeld wordt een module opgehaald in een Module object, wordt de module LastActivityTime eigenschap bijgewerkt en wordt vervolgens de module in IoT Hub bijgewerkt met behulp van UpdateModuleAsync.

// Retrieve the module
var module = await registryManager.GetModuleAsync("myDeviceId","myModuleId");

// Update the module object
module.LastActivityTime = DateTime.Now;

// Apply the patch to update the device twin tags section
try
{
   await registryManager.UpdateModuleAsync(module);
}
catch (Exception e)
{
   console.WriteLine("Module update failed.", e.Message);
}

Andere module-API

Voorbeeld van SDK-service

De Azure IoT SDK voor .NET biedt een werkend voorbeeld van een service-app die moduleidentiteitsdubbeltaken verwerkt. Zie Registerbeheer E2E-tests voor meer informatie.

  • Python versie 3.7 of hoger wordt aanbevolen. Zorg ervoor dat u de 32-bits of 64-bits installatie gebruikt, zoals vereist door uw configuratie. Zorg ervoor dat u Python toevoegt aan uw platformspecifieke omgevingsvariabele als u hierom wordt gevraagd tijdens de installatie.

Overzicht

In dit artikel wordt beschreven hoe u de Azure IoT SDK voor Python gebruikt om toepassingscode voor apparaat- en back-endservice te maken voor moduleidentiteitsdubbels.

Pakketten installeren

De azure-iot-device-bibliotheek moet zijn geïnstalleerd om apparaattoepassingen te maken.

pip install azure-iot-device

De azure-iot-hub-bibliotheek moet zijn geïnstalleerd om back-endservicetoepassingen te maken.

pip install azure-iot-hub

De msrest-bibliotheek wordt gebruikt om HTTPOperationError-uitzonderingen te ondervangen.

pip install msrest

Een apparaattoepassing maken

In deze sectie wordt beschreven hoe u apparaattoepassingscode gebruikt voor het volgende:

  • Een moduleidentiteitsdubbel ophalen en gerapporteerde eigenschappen onderzoeken
  • Gerapporteerde eigenschappen van moduleidentiteitsdubbel bijwerken
  • Een module identity twin desired property update callback handler 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.

Importinstructies

Voeg deze import instructie toe om de apparaatbibliotheek te gebruiken.

# import the device client library
import asyncio
from azure.iot.device.aio import IoTHubDeviceClient

Verbinding maken met een apparaat

De IoTHubModuleClient-klasse bevat methoden die kunnen worden gebruikt voor het werken met moduleidentiteitsdubbels.

Een toepassing verbinden met een apparaat:

  1. Roep create_from_connection_string aan om de moduleidentiteit toe te voegen verbindingsreeks
  2. Verbinding maken aanroepen om de apparaatclient te verbinden met een Azure IoT-hub
# import the device client library
import asyncio
from azure.iot.device.aio import IoTHubDeviceClient

# substitute the device connection string in conn_str
# and add it to the IoTHubDeviceClient object
conn_str = "{Device module identity connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(conn_str)

# connect the application to the device
await device_client.connect()

Notitie

Python biedt geen ondersteuning voor de verbinding van een apparaat-app met een IoT Hub-moduleidentiteitsdubbel met behulp van een certificaat.

Een moduleidentiteitsdubbel ophalen en eigenschappen onderzoeken

Roep get_twin aan om de moduleidentiteitsdubbel op te halen uit de Azure IoT Hub-service. De dubbele informatie wordt in een variabele geplaatst die kan worden onderzocht.

In dit voorbeeld wordt de apparaatdubbel opgehaald en wordt de print opdracht gebruikt om de apparaatdubbel in JSON-indeling weer te geven.

# get the twin
twin = await device_client.get_twin()
print("Twin document:")
print("{}".format(twin))

Gerapporteerde eigenschappen van moduleidentiteitsdubbel bijwerken

U kunt een patch toepassen om gerapporteerde eigenschappen van de id-dubbel van de module bij te werken in JSON-indeling.

Een patch toepassen om gerapporteerde eigenschappen bij te werken:

  1. Wijs een gerapporteerde JSON-patch voor eigenschappen toe aan een variabele.
  2. Roep patch_twin_reported_properties aan om de JSON-patch toe te passen op gerapporteerde eigenschappen.

Voorbeeld:

# create the reported properties patch
reported_properties = {"temperature": random.randint(320, 800) / 10}
print("Setting reported temperature to {}".format(reported_properties["temperature"]))
# update the reported properties and wait for the result
await device_client.patch_twin_reported_properties(reported_properties)

Een module identity twin desired property update callback handler maken

Roep on_twin_desired_properties_patch_received aan om een handlerfunctie of coroutine te maken die wordt aangeroepen wanneer een patch voor gewenste eigenschappen van een module-id-dubbel wordt ontvangen. De handler heeft één argument, de dubbelpatch in de vorm van een JSON-woordenlijstobject.

In dit voorbeeld wordt een patchhandler met gewenste eigenschappen ingesteld met de naam twin_patch_handler.

Voorbeeld:

try:
    # Set handlers on the client
    device_client.on_twin_desired_properties_patch_received = twin_patch_handler
except:
    # Clean up in the event of failure
    client.shutdown()

De twin_patch_handler gewenste eigenschappenupdates van JSON worden ontvangen en afgedrukt.

    # Define behavior for receiving twin desired property patches
    def twin_patch_handler(twin_patch):
        print("Twin patch received:")
        print(twin_patch)

Voorbeelden van SDK-apparaten

De Azure IoT SDK voor Python biedt een werkend voorbeeld van apparaat-apps die moduleidentiteitsdubbeltaken verwerken:

  • get_twin : maak verbinding met een apparaat en haal dubbele gegevens op.
  • update_twin_reported_properties - Gerapporteerde eigenschappen van dubbel bijwerken.
  • receive_twin_desired_properties : gewenste eigenschappen ontvangen en bijwerken.

Een back-endtoepassing maken

In deze sectie wordt beschreven hoe u een back-endtoepassing maakt om gewenste eigenschappen van de moduleidentiteitsdubbel op te halen en bij te werken.

De IoTHubRegistryManager-klasse bevat alle methoden die nodig zijn om een back-endtoepassing te maken om te communiceren met moduleidentiteitsdubbels van de service.

Instructies voor het importeren van services

Voeg deze import instructie toe om de servicebibliotheek te gebruiken.

import sys
from azure.iot.hub import IoTHubRegistryManager
from azure.iot.hub.models import Twin, TwinProperties, QuerySpecification, QueryResult

Verbinding maken met IoT Hub

U kunt een back-endservice verbinden met IoT Hub met behulp van de volgende methoden:

  • Beleid voor gedeelde toegang
  • Microsoft Entra

Belangrijk

Dit artikel bevat stappen voor het maken van verbinding met een service met behulp van een handtekening voor gedeelde toegang. Deze verificatiemethode is handig voor testen en evalueren, maar verificatie bij een service met Microsoft Entra ID of beheerde identiteiten is een veiligere benadering. Zie Best practices > voor beveiliging voor cloudbeveiliging voor meer informatie.

Verbinding maken met behulp van een beleid voor gedeelde toegang

Maak verbinding met IoT Hub met behulp van from_connection_string.

Voor de update_module_twin methode die in deze sectie wordt gebruikt, is de machtiging gedeeld toegangsbeleid voor Service Connect vereist om gewenste eigenschappen toe te voegen aan een module. Geef als parameter een from_connection_stringbeleid voor gedeelde toegang op verbindingsreeks dat serviceverbindingsmachtigingen bevat. Zie Toegang tot IoT Hub beheren met handtekeningen voor gedeelde toegang voor meer informatie over beleid voor gedeelde toegang.

Voorbeeld:

# Connect to IoT hub
IOTHUB_CONNECTION_STRING = "{IoT hub shared access policy connection string}"
iothub_registry_manager = IoTHubRegistryManager.from_connection_string(IOTHUB_CONNECTION_STRING)

Verbinding maken met Microsoft Entra

Een back-end-app die gebruikmaakt van Microsoft Entra, moet een beveiligingstokenreferentie verifiëren en verkrijgen voordat u verbinding maakt met IoT Hub. Dit token wordt doorgegeven aan een IoT Hub-verbindingsmethode. Zie Toegang tot IoT Hub beheren met behulp van Microsoft Entra ID voor algemene informatie over het instellen en gebruiken van Microsoft Entra voor IoT Hub.

Zie Python-apps verifiëren bij Azure-services met behulp van de Azure SDK voor Python voor Python voor een overzicht van python-verificatie

Microsoft Entra-app configureren

U moet een Microsoft Entra-app instellen die is geconfigureerd voor uw voorkeursverificatiereferenties. De app bevat parameters zoals het clientgeheim dat door de back-endtoepassing wordt gebruikt om te verifiëren. De beschikbare configuraties voor app-verificatie zijn:

  • Clientgeheim
  • Certificaat
  • Referenties voor federatieve identiteit

Voor Microsoft Entra-apps zijn mogelijk specifieke rolmachtigingen vereist, afhankelijk van bewerkingen die worden uitgevoerd. IoT Hub Twin-inzender is bijvoorbeeld vereist om lees- en schrijftoegang tot een IoT Hub-apparaat en moduledubbels in te schakelen. Zie Toegang tot IoT Hub beheren met behulp van Azure RBAC-roltoewijzing voor meer informatie.

Zie quickstart: Een toepassing registreren bij het Microsoft Identity Platform voor meer informatie over het instellen van een Microsoft Entra-app.

Verifiëren met DefaultAzureCredential

De eenvoudigste manier om Microsoft Entra te gebruiken om een back-endtoepassing ChainedTokenCredentialte verifiëren, is door DefaultAzureCredential te gebruiken, maar het wordt aanbevolen om een andere methode te gebruiken in een productieomgeving, inclusief een specifieke TokenCredential of geparseerde toepassing. Ter vereenvoudiging beschrijft deze sectie verificatie met behulp van DefaultAzureCredential en clientgeheim. Zie Referentieketens in de Azure Identity-clientbibliotheek voor Python voor meer informatie over de voor- en nadelen van het gebruik.DefaultAzureCredential

DefaultAzureCredential ondersteunt verschillende verificatiemechanismen en bepaalt het juiste referentietype op basis van de omgeving waarin het wordt uitgevoerd. Er wordt geprobeerd om meerdere referentietypen in een volgorde te gebruiken totdat er een werkende referentie wordt gevonden.

Microsoft Entra vereist dit importpakket en de bijbehorende import instructie:

pip install azure-identity
from azure.identity import DefaultAzureCredential

In dit voorbeeld zijn clientgeheim, client-id en tenant-id van Microsoft Entra-app-registratie toegevoegd aan omgevingsvariabelen. Deze omgevingsvariabelen worden gebruikt om DefaultAzureCredential de toepassing te verifiëren. Het resultaat van een geslaagde Microsoft Entra-verificatie is een beveiligingstokenreferentie die wordt doorgegeven aan een IoT Hub-verbindingsmethode.

from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()

Het resulterende AccessToken kan vervolgens worden doorgegeven om from_token_credential verbinding te maken met IoT Hub voor elke SDK-client die Microsoft Entra-referenties accepteert:

from_token_credential vereist twee parameters:

  • De URL van de Azure-service: de Azure-service-URL moet de indeling {Your Entra domain URL}.azure-devices.net hebben zonder voorvoegsel https:// . Bijvoorbeeld: MyAzureDomain.azure-devices.net.
  • Het Azure-referentietoken

In dit voorbeeld wordt de Azure-referentie verkregen met behulp van DefaultAzureCredential. De URL en referenties van de Azure-service worden vervolgens opgegeven om IoTHubRegistryManager.from_token_credential de verbinding met IoT Hub te maken.

import sys
import os

from azure.identity import DefaultAzureCredential
from azure.iot.hub import IoTHubRegistryManager

# Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'

# Set environment variables
os.environ['AZURE_CLIENT_SECRET'] = clientSecretValue
os.environ['AZURE_CLIENT_ID'] = clientID
os.environ['AZURE_TENANT_ID'] = tenantID

# Acquire a credential object
credential = DefaultAzureCredential()

# Use Entra to authorize IoT Hub service
print("Connecting to IoTHubRegistryManager...")
iothub_registry_manager = IoTHubRegistryManager.from_token_credential(
url="MyAzureDomain.azure-devices.net",
token_credential=credential)
Codevoorbeelden

Zie Microsoft Authentication Library (MSAL) voor Python voor werkende voorbeelden van Microsoft Entra-serviceverificatie.

Gewenste eigenschappen van moduleidentiteitsdubbel ophalen en bijwerken

U kunt de gewenste eigenschappen van een back-endtoepassing bijwerken met behulp van update_module_twin.

Gewenste eigenschappen van moduleidentiteitsdubbel ophalen en bijwerken:

  1. Roep get_module_twin aan om de huidige versie van de moduleidentiteitsdubbel op te halen.
  2. Gebruik de klasse Twin om gewenste eigenschappen toe te voegen in JSON-indeling.
  3. Aanroep update_module_twin om de patch toe te passen op de apparaatdubbel. U kunt ook replace_module_twin gebruiken om de gewenste eigenschappen en tags voor een moduleidentiteitsdubbel te vervangen.

In dit voorbeeld wordt de telemetryInterval gewenste eigenschap bijgewerkt naar 122.

try:
    module_twin = iothub_registry_manager.get_module_twin(DEVICE_ID, MODULE_ID)
    print ( "" )
    print ( "Module identity twin properties before update:" )
    print ( "{0}".format(module_twin.properties) )

    # Update twin
    twin_patch = Twin()
    twin_patch.properties = TwinProperties(desired={"telemetryInterval": 122})
    updated_module_twin = iothub_registry_manager.update_module_twin(
        DEVICE_ID, MODULE_ID, twin_patch, module_twin.etag
    )
    print ( "" )
    print ( "Module identity twin properties after update     :" )
    print ( "{0}".format(updated_module_twin.properties) )

except Exception as ex:
    print ( "Unexpected error {0}".format(ex) )
except KeyboardInterrupt:
    print ( "IoTHubRegistryManager sample stopped" )

Voorbeeld van SDK-service

De Azure IoT SDK voor Python biedt een werkend voorbeeld van een service-app waarmee taken van de moduledubbels van de apparaatidentiteit worden verwerkt. Zie IoTHub Registry Manager testen voor meer informatie.

  • Vereist Node.js versie 10.0.x of hoger

Overzicht

In dit artikel wordt beschreven hoe u de Azure IoT SDK voor Node.js gebruikt om toepassingscode voor apparaat- en back-endservice te maken voor module-identiteitsdubbels.

Een apparaattoepassing maken

In deze sectie wordt beschreven hoe u het pakket azure-iot-device gebruikt in de Azure IoT SDK voor Node.js om een apparaattoepassing te maken voor:

  • Een moduleidentiteitsdubbel ophalen en gerapporteerde eigenschappen onderzoeken
  • Gerapporteerde dubbeleigenschappen van module-id bijwerken
  • Melding ontvangen van wijzigingen in de gewenste eigenschap van module-id-dubbel

Het pakket azure-iot-device bevat objecten die interface hebben met IoT-apparaten. De klasse Twin bevat dubbelspecifieke objecten. In deze sectie wordt klassecode beschreven Client die wordt gebruikt voor het lezen en schrijven van identiteitsdubbelgegevens van apparaatmodules.

SDK-pakket installeren

Voer deze opdracht uit om de SDK voor het apparaat azure-iot-device te installeren op uw ontwikkelcomputer:

npm install azure-iot-device --save

Een apparaat verbinden met IoT Hub

Een apparaat-app kan worden geverifieerd met IoT Hub met behulp van de volgende methoden:

  • Gedeelde toegangssleutel
  • X.509-certificaat

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.

Verifiëren met behulp van een gedeelde toegangssleutel

Een transportprotocol kiezen

Het Client object ondersteunt deze protocollen:

  • Amqp
  • Http - Bij gebruik Httpcontroleert het Client exemplaar zelden op berichten van IoT Hub (minimaal om de 25 minuten).
  • Mqtt
  • MqttWs
  • AmqpWs

Installeer de benodigde transportprotocollen op uw ontwikkelcomputer.

Met deze opdracht wordt bijvoorbeeld het Amqp protocol geïnstalleerd:

npm install azure-iot-device-amqp --save

Voor meer informatie over de verschillen tussen MQTT-, AMQP- en HTTPS-ondersteuning raadpleegt u de richtlijnen voor communicatie tussen cloud-naar-apparaten en kies een communicatieprotocol voor apparaten.

Een clientobject maken

Maak een Client object met behulp van het geïnstalleerde pakket.

Voorbeeld:

const Client = require('azure-iot-device').Client;
Een protocolobject maken

Maak een Protocol object met behulp van een geïnstalleerd transportpakket.

In dit voorbeeld wordt het AMQP-protocol toegewezen:

const Protocol = require('azure-iot-device-amqp').Amqp;
Het apparaat verbindingsreeks en transportprotocol toevoegen

Aanroepen vanuitConnectionString om verbindingsparameters voor apparaten op te geven:

  • connStr: de IoT Hub Identity Module verbindingsreeks.
  • transportCtor - Het transportprotocol.

In dit voorbeeld wordt het Amqp transportprotocol gebruikt:

const deviceConnectionString = "{IoT hub identity module connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
De verbinding met IoT Hub openen

Gebruik de open methode om een verbinding te openen tussen een IoT-apparaat en IoT Hub.

Voorbeeld:

client.open(function(err) {
  if (err) {
    console.error('error connecting to hub: ' + err);
    process.exit(1);
  }
})

Verifiëren met behulp van een X.509-certificaat

Het X.509-certificaat is gekoppeld aan het apparaat-naar-IoT Hub-verbindingstransport.

Een apparaat-naar-IoT Hub-verbinding configureren met behulp van een X.509-certificaat:

  1. Roep fromConnectionString aan om het apparaat of de identiteitsmodule toe te voegen verbindingsreeks en het transporttype aan het Client object toe te voegen. Voeg x509=true toe aan de verbindingsreeks om aan te geven dat een certificaat wordt toegevoegd aan DeviceClientOptions. Voorbeeld:

    • Een apparaat verbindingsreeks:

      HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true

    • Een identiteitsmodule verbindingsreeks:

      HostName=xxxxx.azure-devices.net;DeviceId=Device-1;ModuleId=Module-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true

  2. Configureer een JSON-variabele met certificaatgegevens en geef deze door aan DeviceClientOptions.

  3. Roep setOptions aan om een X.509-certificaat en -sleutel (en eventueel een wachtwoordzin) toe te voegen aan het clienttransport.

  4. Roep open om de verbinding van het apparaat naar IoT Hub te openen.

In dit voorbeeld ziet u informatie over certificaatconfiguratie in een JSON-variabele. De certificeringsconfiguratie clientOptions wordt doorgegeven aan setOptionsen de verbinding wordt geopend met behulp van open.

const Client = require('azure-iot-device').Client;
const Protocol = require('azure-iot-device-mqtt').Mqtt;
// Connection string illustrated for demonstration only. Never hard-code the connection string in production. Instead use an environmental variable or other secure storage.
const connectionString = `HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true`
const client = Client.fromConnectionString(connectionString, Protocol);

var clientOptions = {
   cert: myX509Certificate,
   key: myX509Key,
   passphrase: passphrase,
   http: {
     receivePolicy: {
       interval: 10
     }
   }
 }

 client.setOptions(clientOptions);
 client.open(connectCallback);

Zie voor meer informatie over certificaatverificatie:

Voorbeeld van code

Zie Eenvoudig voorbeeldapparaat X.509 voor een werkend voorbeeld van X.509-certificaatverificatie.

Een moduleidentiteitsdubbel ophalen en gerapporteerde eigenschappen onderzoeken

Roep getTwin aan om de huidige identiteitsdubbelgegevens van de module op te halen in een Twin-object .

Apparaatcode heeft vervolgens toegang tot de eigenschappen van de module-id-dubbel.

Voorbeeld:

// Retrieve the current module identity twin
client.getTwin(function(err, twin))
if (err)
    console.error('could not get twin');

// Display the current properties
console.log('twin contents:');
console.log(twin.properties);

Gerapporteerde eigenschappen van moduleidentiteitsdubbel bijwerken

Gebruik update om gerapporteerde eigenschappen van het apparaat bij te werken. Neem een patch met JSON-indeling op als de eerste parameter en de callback-methode voor de uitvoeringsstatus van de functie als de tweede parameter voor de methode.

In dit voorbeeld wordt een patch voor de identiteitsdubbel in JSON-indeling opgeslagen in de patch variabele. De patch bevat een updatewaarde voor de moduleidentiteitsdubbel connectivity van cellular. De patch- en fouthandler worden doorgegeven aan de update methode. Als er een fout optreedt, wordt er een consolefoutbericht weergegeven.

// Create a patch to send to IoT Hub
var patch = {
  updateTime: new Date().toString(),
  firmwareVersion:'1.2.1',
  weather:{
    temperature: 72,
    humidity: 17
  }
};

// Apply the patch
twin.properties.reported.update(patch, function(err)
  {
    if (err)
      {
        console.error('could not update twin');
      } 
    else
      {
        console.log('twin state reported');
        process.exit();
      }
  });

Melding ontvangen van wijzigingen in de gewenste eigenschap van module-id-dubbel

Maak een gebeurtenislistener voor het bijwerken van de gewenste eigenschap van een module-id-dubbel die wordt uitgevoerd wanneer een gewenste eigenschap wordt gewijzigd door de naam van de callback-handlermethode door te geven aan twin.on.

De gewenste gebeurtenislistener voor eigenschappen kan de volgende vormen aannemen:

  • Alle patches ontvangen met één gebeurtenis-handler
  • Een gebeurtenis ontvangen als er iets verandert onder een groep eigenschappen
  • Een gebeurtenis ontvangen voor een wijziging van één eigenschap

Alle patches ontvangen met één gebeurtenis-handler

U kunt een listener maken om elke gewenste eigenschapswijziging te ontvangen.

Met deze voorbeeldcode worden alle eigenschappen uitgevoerd die van de service worden ontvangen.

twin.on('properties.desired', function (delta) {
    console.log('new desired properties received:');
    console.log(JSON.stringify(delta));
});

Een gebeurtenis ontvangen als er iets verandert onder een groep eigenschappen

U kunt een listener maken om een gebeurtenis te ontvangen als er iets onder een eigenschapsgroep verandert.

Voorbeeld:

  1. De minTemperature eigenschappen maxTemperature bevinden zich onder een eigenschapsgroep met de naam properties.desired.climate changes.

  2. Een back-endservicetoepassing past deze patch toe op het bijwerken minTemperature en maxTemperature de gewenste eigenschappen:

    const twinPatch1 = {
    properties: {
       desired: {
        climate: { minTemperature: 68, maxTemperature: 76, },
        },
      },
     };
    
  3. Met deze code stelt u een gewenste gebeurtenislistener voor eigenschapswijziging in die wordt geactiveerd voor wijzigingen binnen de properties.desired.climate eigenschappengroepering. Als er een gewenste eigenschapswijziging binnen deze groep is, worden berichten over minimale en maximale temperatuurwijziging weergegeven in de console:

    twin.on('properties.desired.climate', function (delta) {
        if (delta.minTemperature || delta.maxTemperature) {
            console.log('updating desired temp:');
            console.log('min temp = ' + twin.properties.desired.climate.minTemperature);
            console.log('max temp = ' + twin.properties.desired.climate.maxTemperature);
        }
    });
    

Een gebeurtenis ontvangen voor een wijziging van één eigenschap

U kunt een listener instellen voor een wijziging van één eigenschap. In dit voorbeeld wordt de code voor deze gebeurtenis alleen uitgevoerd als de fanOn booleaanse waarde deel uitmaakt van de patch. De code voert de nieuwe gewenste fanOn status uit wanneer de service deze bijwerken.

  1. Een back-endtoepassing past deze gewenste eigenschapspatch toe:

     const twinPatch2 = {
      properties: {
        desired: {
          climate: {
            hvac: {
              systemControl: { fanOn: true, },
            },
          },
        },
      },
    };
    
  2. De listener wordt alleen geactiveerd wanneer de fanOn eigenschap wordt gewijzigd:

     twin.on('properties.desired.climate.hvac.systemControl', function (fanOn) {
         console.log('setting fan state to ' + fanOn);
      });
    

Volledig voorbeeld

In dit voorbeeld worden de principes van deze sectie ingekapseld, met inbegrip van callback-functie genest op meerdere niveaus.

var Client = require('azure-iot-device').Client;
var Protocol = require('azure-iot-device-amqp').Amqp;
// Copy/paste your module connection string here.
var connectionString = 'HostName=xxx.azure-devices.net;DeviceId=myFirstDevice2;ModuleId=myFirstModule2;SharedAccessKey=xxxxxxxxxxxxxxxxxx';
// Create a client using the Amqp protocol.
var client = Client.fromConnectionString(connectionString, Protocol);
client.on('error', function (err) {
  console.error(err.message);
});
// connect to the hub
client.open(function(err) {
  if (err) {
    console.error('error connecting to hub: ' + err);
    process.exit(1);
  }
  console.log('client opened');
// Create device Twin
  client.getTwin(function(err, twin) {
    if (err) {
      console.error('error getting twin: ' + err);
      process.exit(1);
    }
    // Output the current properties
    console.log('twin contents:');
    console.log(twin.properties);
    // Add a handler for desired property changes
    twin.on('properties.desired', function(delta) {
        console.log('new desired properties received:');
        console.log(JSON.stringify(delta));
    });
    // create a patch to send to the hub
    var patch = {
      updateTime: new Date().toString(),
      firmwareVersion:'1.2.1',
      weather:{
        temperature: 75,
        humidity: 20
      }
    };
    // send the patch
    twin.properties.reported.update(patch, function(err) {
      if (err) throw err;
      console.log('twin state reported');
    });

  });
});

Voorbeelden van Device SDK

De Azure IoT SDK voor Node.js biedt werkende voorbeelden van apparaat-apps die taken van moduleidentiteitsdubbels verwerken. Zie voor meer informatie:

Een back-endtoepassing maken

In deze sectie wordt beschreven hoe u een back-endtoepassing maakt waarmee een moduleidentiteitsdubbel wordt opgehaald en de gewenste eigenschappen worden bijgewerkt.

Service SDK-pakket installeren

Voer deze opdracht uit om azure-iothub te installeren op uw ontwikkelcomputer:

npm install azure-iothub --save

Een registerobject maken

De registerklasse bevat alle methoden die nodig zijn om te communiceren met moduleidentiteitsdubbels vanuit een back-endtoepassing.

let Registry = require('azure-iothub').Registry;

Verbinding maken met IoT Hub

U kunt een back-endservice verbinden met IoT Hub met behulp van de volgende methoden:

  • Beleid voor gedeelde toegang
  • Microsoft Entra

Belangrijk

Dit artikel bevat stappen voor het maken van verbinding met een service met behulp van een handtekening voor gedeelde toegang. Deze verificatiemethode is handig voor testen en evalueren, maar verificatie bij een service met Microsoft Entra ID of beheerde identiteiten is een veiligere benadering. Zie Best practices > voor beveiliging voor cloudbeveiliging voor meer informatie.

Verbinding maken met behulp van een beleid voor gedeelde toegang

Gebruik fromConnectionString om verbinding te maken met IoT Hub.

Voor de update methode die in deze sectie wordt gebruikt, is de machtiging gedeeld toegangsbeleid voor Service Connect vereist om gewenste eigenschappen toe te voegen aan een module. Geef als parameter een fromConnectionStringbeleid voor gedeelde toegang op verbindingsreeks dat serviceverbindingsmachtigingen bevat. Zie Toegang tot IoT Hub beheren met handtekeningen voor gedeelde toegang voor meer informatie over beleid voor gedeelde toegang.

let connectionString = '{IoT hub shared access policy connection string}';
let registry = Registry.fromConnectionString(serviceConnectionString);

Verbinding maken met Microsoft Entra

Een back-end-app die gebruikmaakt van Microsoft Entra, moet een beveiligingstokenreferentie verifiëren en verkrijgen voordat u verbinding maakt met IoT Hub. Dit token wordt doorgegeven aan een IoT Hub-verbindingsmethode. Zie Toegang tot IoT Hub beheren met behulp van Microsoft Entra ID voor algemene informatie over het instellen en gebruiken van Microsoft Entra voor IoT Hub.

Zie voor een overzicht van Node.js SDK-verificatie:

Microsoft Entra-app configureren

U moet een Microsoft Entra-app instellen die is geconfigureerd voor uw voorkeursverificatiereferenties. De app bevat parameters zoals het clientgeheim dat door de back-endtoepassing wordt gebruikt om te verifiëren. De beschikbare configuraties voor app-verificatie zijn:

  • Clientgeheim
  • Certificaat
  • Referenties voor federatieve identiteit

Voor Microsoft Entra-apps zijn mogelijk specifieke rolmachtigingen vereist, afhankelijk van bewerkingen die worden uitgevoerd. IoT Hub Twin-inzender is bijvoorbeeld vereist om lees- en schrijftoegang tot een IoT Hub-apparaat en moduledubbels in te schakelen. Zie Toegang tot IoT Hub beheren met behulp van Azure RBAC-roltoewijzing voor meer informatie.

Zie quickstart: Een toepassing registreren bij het Microsoft Identity Platform voor meer informatie over het instellen van een Microsoft Entra-app.

Verifiëren met DefaultAzureCredential

De eenvoudigste manier om Microsoft Entra te gebruiken om een back-endtoepassing ChainedTokenCredentialte verifiëren, is door DefaultAzureCredential te gebruiken, maar het wordt aanbevolen om een andere methode te gebruiken in een productieomgeving, inclusief een specifieke TokenCredential of geparseerde toepassing. Ter vereenvoudiging beschrijft deze sectie verificatie met behulp van DefaultAzureCredential en clientgeheim. Zie Referentieketens in de Azure Identity-clientbibliotheek voor JavaScript voor meer informatie over de voor- en nadelen van het gebruik DefaultAzureCredential

DefaultAzureCredential ondersteunt verschillende verificatiemechanismen en bepaalt het juiste referentietype op basis van de omgeving waarin het wordt uitgevoerd. Er wordt geprobeerd om meerdere referentietypen in een volgorde te gebruiken totdat er een werkende referentie wordt gevonden.

Microsoft Entra vereist dit pakket:

npm install --save @azure/identity

In dit voorbeeld zijn clientgeheim, client-id en tenant-id van Microsoft Entra-app-registratie toegevoegd aan omgevingsvariabelen. Deze omgevingsvariabelen worden gebruikt om DefaultAzureCredential de toepassing te verifiëren. Het resultaat van een geslaagde Microsoft Entra-verificatie is een beveiligingstokenreferentie die wordt doorgegeven aan een IoT Hub-verbindingsmethode.

import { DefaultAzureCredential } from "@azure/identity";

// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();

Het resulterende referentietoken kan vervolgens worden doorgegeven aan fromTokenCredential om verbinding te maken met IoT Hub voor elke SDK-client die Microsoft Entra-referenties accepteert:

fromTokenCredential vereist twee parameters:

  • De URL van de Azure-service: de Azure-service-URL moet de indeling {Your Entra domain URL}.azure-devices.net hebben zonder voorvoegsel https:// . Bijvoorbeeld: MyAzureDomain.azure-devices.net.
  • Het Azure-referentietoken

In dit voorbeeld wordt de Azure-referentie verkregen met behulp van DefaultAzureCredential. De URL en referentie van het Azure-domein worden vervolgens opgegeven om Registry.fromTokenCredential de verbinding met IoT Hub te maken.

const { DefaultAzureCredential } = require("@azure/identity");

let Registry = require('azure-iothub').Registry;

// Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'

// Set environment variables
process.env['AZURE_CLIENT_SECRET'] = clientSecretValue;
process.env['AZURE_CLIENT_ID'] = clientID;
process.env['AZURE_TENANT_ID'] = tenantID;

// Acquire a credential object
const credential = new DefaultAzureCredential()

// Create an instance of the IoTHub registry
hostName = 'MyAzureDomain.azure-devices.net';
let registry = Registry.fromTokenCredential(hostName,credential);
Codevoorbeelden

Zie Voorbeelden van Azure-identiteiten voor werkvoorbeelden van Microsoft Entra-serviceverificatie.

Een moduleidentiteitsdubbel ophalen en gewenste eigenschappen bijwerken

U kunt een patch maken die gewenste eigenschapsupdates voor een moduleidentiteitsdubbel bevat.

Een moduleidentiteitsdubbel bijwerken:

  1. Roep getModuleTwin aan om het apparaatdubbelobject op te halen.

  2. Maak een patch op die de update van de module-id-dubbel bevat. De patch is ingedeeld in JSON, zoals beschreven in de klasse Twin. Een back-endservicepatch bevat gewenste eigenschappenupdates. Zie Tags en eigenschappenindeling voor meer informatie over patchindeling.

  3. Roep update aan om de moduleidentiteitsdubbel bij te werken met de patch.

In dit voorbeeld wordt de moduleidentiteitsdubbel opgehaald voor myDeviceId en myModuleId. Vervolgens wordt er een patch toegepast op de tweelingen die informatie bevatten climate .

// Insert your device ID and moduleId here.
var deviceId = 'myFirstDevice2';
var moduleId = 'myFirstModule2';

// Retrieve the current module identity twin
registry.getModuleTwin(deviceId, moduleId, function (err, twin) {
  console.log('getModuleTwin returned ' + (err ? err : 'success'));
  if (err) {
    console.log(err);
  } else {
    console.log('success');
    console.log('Current twin:' + JSON.stringify(twin))

    // Format a desired property patch
    const twinPatch1 = {
      properties: {
        desired: {
          climate: { minTemperature: 69, maxTemperature: 77, },
        },
      },
    };

    // Send the desired property patch to IoT Hub
    twin.update(twinPatch1, function(err) {
    if (err) throw err;
    console.log('twin state reported');
    });
  }
});

Voorbeelden van service-SDK

De Azure IoT SDK voor Node.js biedt werkende voorbeelden van service-apps die taken van moduleidentiteitsdubbels verwerken. Zie voor meer informatie: