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:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Azure Cloud Shell-snelstart: Bash voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
- Meld u aan bij de Azure CLI met behulp van de opdracht az login .
- Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
- Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Notitie
In dit artikel wordt gebruikgemaakt van de nieuwste versie van de Azure IoT-extensie,
azure-iot
. De verouderde versie heetazure-cli-iot-ext
. Zorg ervoor dat er maar één versie is geïnstalleerd. U kunt de opdrachtaz 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:
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.
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
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
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:
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}
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>
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.
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.
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:
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.
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}
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:
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.
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}
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
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.
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:
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:
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
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}
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.
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:
Binnenkomende berichten controleren
U kunt Metrische gegevens in de portal gebruiken om te verifiëren dat de telemetrieberichten uw IoT hub bereiken.
Selecteer uw IoT-hub in de vervolgkeuzelijst Resource in azure Portal.
Selecteer Metrische gegevens in de sectie Bewaking van het navigatiemenu.
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:
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.
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}"
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:
Wanneer het gesimuleerde apparaat de aanroep van de directe methode ontvangt, wordt er een bevestiging teruggestuurd naar de hub:
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.
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}"
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.
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:
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.