Delen via


Zelfstudie: Een gesimuleerd apparaat gebruiken om connectiviteit met uw IoT-hub te testen

In deze zelfstudie gebruikt u Azure IoT Hub-portalhulpmiddelen en Azure CLI-opdrachten om de connectiviteit te testen. Deze zelfstudie gebruikt ook een eenvoudige apparaatsimulator die u op uw pc uitvoert.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

In deze zelfstudie leert u het volgende:

  • Uw apparaatverificatie controleren
  • De apparaat-naar-cloud-verbinding controleren
  • De cloud-naar-apparaat-verbinding controleren
  • Synchronisatie van apparaatdubbel controleren

Vereisten

  • In deze zelfstudie wordt de Azure CLI gebruikt om cloudresources te maken. Er zijn twee manieren om CLI-opdrachten uit te voeren:

    Notitie

    In dit artikel wordt gebruikgemaakt van de nieuwste versie van de Azure IoT-extensie, azure-iot. De verouderde versie heet azure-cli-iot-ext. Zorg ervoor dat er maar één versie is geïnstalleerd. U kunt de opdracht az extension list gebruiken om de momenteel geïnstalleerde extensies te valideren.

    Gebruik az extension remove --name azure-cli-iot-ext om de verouderde versie van de extensie te verwijderen.

    Gebruik az extension add --name azure-iot om de nieuwe versie van de extensie toe te voegen.

    Gebruik az extension list om te bekijken welke installaties u hebt geïnstalleerd.

  • De voorbeeldtoepassing die u in deze zelfstudie uitvoert, maakt gebruik van Node.js. Node.js v10.x.x of hoger moet zijn geïnstalleerd op uw ontwikkelcomputer.

    • U kunt Node.js voor meerdere platforms downloaden van nodejs.org.

    • Gebruik de volgende opdracht om de huidige versie van Node.js op uw ontwikkelcomputer te controleren:

      node --version
      
  • Kloon of download het voorbeeldproject Node.js van Azure IoT-voorbeelden voor Node.js.

  • Zorg ervoor dat de poort 8883 is geopend in uw firewall. In het apparaatvoorbeeld in deze zelfstudie wordt het MQTT-protocol gebruikt, dat 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.

Een IoT Hub maken

In deze sectie gebruikt u Azure CLI om een IoT-hub en een resourcegroep te maken. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Een IoT-hub fungeert als een centrale berichtenhub voor bidirectionele communicatie tussen uw IoT-toepassing en de apparaten.

Als u al een IoT-hub in uw Azure-abonnement hebt, kunt u deze sectie overslaan.

Een IoT-hub en een resourcegroep maken:

  1. Start de CLI-app. Als u de CLI-opdrachten in de rest van dit artikel wilt uitvoeren, kopieert u de syntaxis van de opdracht, plakt u deze in uw CLI-app, bewerkt u variabelewaarden en drukt u op Enter.

    • Als u Cloud Shell gebruikt, selecteert u de knop Uitproberen in de CLI-opdrachten om Cloud Shell te starten in een gesplitst browservenster. U kunt de Cloud Shell ook openen in een afzonderlijk browsertabblad.
    • Als u Azure CLI lokaal gebruikt, start u uw CLI-console-app en meldt u zich aan bij Azure CLI.
  2. Voer az extension add uit om de azure-iot-extensie te installeren of bij te werken naar de huidige versie.

    az extension add --upgrade --name azure-iot
    
  3. Voer in uw CLI-app de opdracht az group create uit om een resourcegroep te maken. Met de volgende opdracht wordt een resourcegroep met de naam MyResourceGroup gemaakt op de locatie VS - oost.

    Notitie

    U kunt desgewenst een andere locatie instellen. Als u de beschikbare locaties wilt zien, voert u de opdracht uit az account list-locations. In deze quickstart wordt gebruikgemaakt van eastus , zoals wordt weergegeven in de voorbeeldopdracht.

    az group create --name MyResourceGroup --location eastus
    
  4. Voer de opdracht az iot hub create uit om een IoT-hub te maken. Het kan enkele minuten duren voordat een IoT-hub is gemaakt.

    YourIotHubName. Vervang deze tijdelijke aanduiding en de omringende accolades in de volgende opdracht met behulp van de naam die u hebt gekozen voor uw IoT-hub. De naam van de IoT-hub moet wereldwijd uniek zijn in Azure. Gebruik de naam van uw IoT-hub in de rest van deze quickstart, waar u de tijdelijke aanduiding ook ziet.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Apparaatverificatie controleren

Een apparaat moet door uw hub worden geverifieerd voordat het gegevens kan uitwisselen met de hub. U kunt het hulpprogramma IoT-apparaten gebruiken in de sectie Apparaatbeheer van de portal om uw apparaten te beheren en de verificatiesleutels die ze gebruiken te controleren. In deze sectie van de zelfstudie voegt u een nieuw testapparaat toe, haalt u de sleutel op en controleert u dat het testapparaat verbinding kan maken met de hub. Later stelt u de verificatiesleutel opnieuw in om te zien wat er gebeurt wanneer een apparaat een verouderde sleutel probeert te gebruiken.

Een apparaat registreren

Een apparaat moet zijn geregistreerd bij uw IoT-hub voordat het verbinding kan maken. In deze sectie gebruikt u Azure CLI om een apparaat-id te maken.

Als u al een apparaat hebt geregistreerd in uw IoT-hub, kunt u deze sectie overslaan.

Een apparaat-id maken:

  1. Voer de opdracht az iot hub device-identity create uit in uw CLI-shell. Met deze opdracht maakt u de apparaat-id.

    your_iot_hub_name. vervang deze tijdelijke aanduiding door een door u gekozen naam voor de IoT-hub.

    myDevice. U kunt deze naam gebruiken voor de apparaat-id in dit artikel of een andere apparaatnaam opgeven.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Voer de opdracht az iot hub device-identity connection-string show uit.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    De verbindingsreeks-uitvoer heeft de volgende indeling:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Sla de verbindingsreeks op een veilige locatie op.

Notitie

Houd uw CLI-app geopend. U gebruikt deze in latere stappen.

Een testapparaat simuleren

Als u een apparaat wilt simuleren dat telemetrie verzendt naar uw IoT-hub, voert u de Node.js gesimuleerde apparaattoepassing uit die u eerder hebt gedownload.

  1. Navigeer in een terminalvenster op uw ontwikkelcomputer naar de hoofdmap van het voorbeeldproject Node.js dat u hebt gedownload. Navigeer vervolgens naar de map iot-hub\Tutorials\ConnectivityTests.

  2. Voer in het terminalvenster de volgende opdrachten uit om de vereiste bibliotheken te installeren en de toepassing voor het gesimuleerde apparaat uit te voeren. Gebruik het apparaat verbindingsreeks u een notitie hebt gemaakt bij het registreren van het apparaat.

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    In het terminalvenster wordt een bericht weergegeven wanneer het verbinding maakt met uw hub:

    Screenshot that shows the simulated device connecting.

U bent nu geverifieerd vanaf een apparaat dat een apparaatsleutel gebruikt die is gegenereerd door uw IoT hub.

Sleutels opnieuw instellen

In deze sectie stelt u de apparaatsleutel opnieuw in en bekijkt u de foutmelding wanneer het gesimuleerd apparaat verbinding probeert te maken.

  1. Als u de primaire apparaatsleutel voor uw apparaat opnieuw wilt instellen, voert u de opdracht az iot hub device-identity update uit:

    # Generate a new Base64 encoded key using the current date
    read key < <(date +%s | sha256sum | base64 | head -c 32)
    
    # Reset the primary device key for test device
    az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
    
  2. In het terminalvenster op uw ontwikkelcomputer, voert u de toepassing Gesimuleerd apparaat opnieuw uit:

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Deze keer ziet u een verificatiefout wanneer de toepassing verbinding probeert te maken:

    Screenshot that shows the connection failing after the key reset.

Een SAS-token (Shared Access Signature) genereren

Als uw apparaat een van de SDK’s van de IoT Hub gebruikt, genereert de SDK-bibliotheekcode het SAS-toeken dat wordt gebruikt voor verificatie met de hub. Een SAS-token wordt gegenereerd uit de naam van uw hub, de naam van uw apparaat en de apparaatsleutel.

In bepaalde scenario’s, zoals in een cloud-protocolgateway of als onderdeel van een aangepast verificatieschema, moet u mogelijk zelf het SAS-token genereren. Om problemen met uw SAS-generatiecode op te lossen, is het handig om een bekend correct SAS-token te genereren voor gebruik tijdens het testen.

Notitie

Het voorbeeld SimulatedDevice-2.js omvat voorbeelden van het genereren van een SAS-token, zowel met als zonder de SDK.

  1. Voer de opdracht az iot hub genereate-sas-token uit om een bekend goed SAS-token te genereren met behulp van de CLI:

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Kopieer de volledige tekst van het gegenereerde SAS-token. Een SAS-token ziet er als volgt uit: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. Navigeer in een terminalvenster op uw ontwikkelcomputer naar de hoofdmap van het voorbeeldproject in Node.js dat u hebt gedownload. Navigeer vervolgens naar de map iot-hub\Tutorials\ConnectivityTests.

  4. Voer in het terminalvenster de volgende opdrachten uit om de vereiste bibliotheken te installeren en de toepassing voor het gesimuleerde apparaat uit te voeren:

    npm install
    node SimulatedDevice-2.js "{Your SAS token}"
    

    In het terminalvenster wordt een bericht weergegeven wanneer deze verbinding maakt met uw hub met behulp van het SAS-token:

    Screenshot that shows a successful connection using a SAS token.

U bent nu geverifieerd vanaf een apparaat dat een test-SAS-token gebruikt dat is gegenereerd door een CLI-opdracht. Het bestand SimulatedDevice-2.js bevat voorbeeldcode die laat zien hoe u een SAS-token in code genereert.

Protocollen

Een apparaat kan elk van onderstaande protocollen gebruiken om verbinding te maken met uw IoT hub:

Protocol Uitgaande poort
MQTT 8883
MQTT via WebSockets 443
AMQP 5671
AMQP via WebSockets 443
HTTPS 443

Als de uitgaande poort wordt geblokkeerd door een firewall kan het apparaat geen verbinding maken:

Screenshot that shows a connection error when the outbound port is blocked.

De apparaat-naar-cloud-verbinding controleren

Nadat een apparaat verbinding heeft gemaakt, kan het beginnen met het verzenden van telemetrie naar uw IoT-hub. Deze sectie laat u zien hoe u kunt verifiëren dat de telemetriegegevens die door het apparaat worden verzonden, aankomen bij uw hub.

Apparaat-naar-cloud-berichten verzenden

  1. Omdat we de verbindingsreeks voor uw apparaat in de vorige sectie opnieuw instellen, gebruikt u de opdracht az iot hub device-identity connection-string show om de bijgewerkte verbindingsreeks op te halen:

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Navigeer naar de map iot-hub\Tutorials\ConnectivityTests in de code die u hebt gedownload om een gesimuleerd apparaat uit te voeren dat berichten verzendt.

  3. Voer in het terminalvenster de volgende opdrachten uit om de vereiste bibliotheken te installeren en de toepassing voor het gesimuleerde apparaat uit te voeren:

    npm install
    node SimulatedDevice-3.js "{your_device_connection_string}"
    

    Het terminalvenster geeft gegevens weer terwijl het telemetrie naar uw hub verzendt:

    Screenshot that shows the simulated device sending messages.

Binnenkomende berichten controleren

U kunt Metrische gegevens in de portal gebruiken om te verifiëren dat de telemetrieberichten uw IoT hub bereiken.

  1. Selecteer uw IoT-hub in de vervolgkeuzelijst Resource in azure Portal.

  2. Selecteer Metrische gegevens in de sectie Bewaking van het navigatiemenu.

  3. Selecteer Telemetrieberichten die als meetwaarde worden verzonden en stel het tijdsbereik in op Afgelopen uur. De kaart toont het totaal aantal berichten dat is verzonden door het gesimuleerd apparaat:

    Screenshot showing left pane metrics.

Het duurt enkele minuten voordat de metrische gegevens beschikbaar zijn nadat u het gesimuleerd apparaat hebt gestart.

De cloud-naar-apparaat-verbinding controleren

Deze sectie laat zien hoe u een testaanroep via de directe methode naar een apparaat kunt maken om de cloud-naar-apparaat-connectiviteit te controleren. U voert een gesimuleerd apparaat uit op uw ontwikkelcomputer om te luisteren naar aanroepen via de directe methode vanuit uw hub.

  1. Gebruik in een terminalvenster de volgende opdracht om de toepassing voor het gesimuleerde apparaat uit te voeren:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Gebruik in een afzonderlijk venster de opdracht az iot hub invoke-device-method om een directe methode op het apparaat aan te roepen:

    az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
    

    Het gesimuleerd apparaat drukt een bericht af op de console wanneer het een aanroep via directe methode ontvangt:

    Screenshot that shows the device confirming that the direct method was received.

    Wanneer het gesimuleerde apparaat de aanroep van de directe methode ontvangt, wordt er een bevestiging teruggestuurd naar de hub:

    Screenshot showing that the device returns a direct method acknowledgment.

Synchronisatie van dubbel controleren

Apparaten gebruiken dubbels om de staat tussen het apparaat en de hub te synchroniseren. In deze sectie gebruikt u CLI-opdrachten om gewenste eigenschappen naar een apparaat te verzenden en de gerapporteerde eigenschappen die door het apparaat zijn verzonden te lezen.

Het gesimuleerd apparaat dat u in deze sectie gebruikt zend gerapporteerde eigenschappen naar de hub wanneer het opstart en drukt gewenste eigenschappen af op de console wanneer die worden ontvangen.

  1. Gebruik in een terminalvenster de volgende opdracht om de toepassing voor het gesimuleerde apparaat uit te voeren:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Voer in een afzonderlijk venster de opdracht az iot hub device-twin show uit om te controleren of de hub de gerapporteerde eigenschappen van het apparaat heeft ontvangen:

    az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    In de uitvoer van de opdracht kunt u de eigenschap devicelaststarted zien in de sectie gerapporteerde eigenschappen. Deze eigenschap toont de datum en tijd dat u het gesimuleerd apparaat voor het laatst hebt opgestart.

    Screenshot showing the reported properties of a device.

  3. Als u wilt controleren of de hub gewenste eigenschapswaarden naar het apparaat kan verzenden, gebruikt u de opdracht az iot hub device-twin update :

    az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    Het gesimuleerd apparaat drukt een bericht af wanneer het een update van een gewenste eigenschap ontvangt van de hub:

    Screenshot that shows the device confirming that the desired properties update was received.

Naast het ontvangen van wijzigingen van gewenste eigenschappen wanneer die worden aangebracht, controleert het gesimuleerd apparaat automatisch op gewenste eigenschappen wanneer het opstart.

Resources opschonen

Als u de IoT-hub niet langer nodig hebt, verwijdert u deze en de resourcegroep in de portal. Hiervoor selecteert u de resourcegroep die uw IoT-hub bevat en selecteert u Verwijderen.

Volgende stappen

In deze zelfstudie hebt u gezien hoe u uw apparaatsleutels, de apparaat-naar-cloud-connectiviteit, de cloud-naar-apparaat-connectiviteit en de synchronisatie van apparaatdubbel controleert. Ga naar het Hoe-artikel voor IoT Hub-bewaking voor meer informatie over het controleren van uw IoT Hub.