Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här självstudien använder du Azure IoT Hub-portalverktyg och Azure CLI-kommandon för att testa enhetsanslutningen. I den här självstudien används också en enkel enhetssimulator som du kör på din stationära dator.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
I den här tutorialen lär du dig följande:
- Kontrollera autentiseringen av din enhet
- Kontrollera anslutningen från enhet till moln
- Kontrollera anslutningen från moln till enhet
- Kontrollera synkroniseringen av devicetwin
Prerequisites
Den här handledningen använder Azure CLI för att skapa molnresurser. Det finns två sätt att köra CLI-kommandon:
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Azure Cloud Shell Snabbstart – Bash.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör på Windows eller macOS, överväg att köra Azure CLI i en Docker-container. För mer information, se Hur man kör Azure CLI i en Docker-container.
- Logga in på Azure CLI med kommandot az login .
- När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
- Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Note
Den här artikeln använder den senaste versionen av Azure IoT-tillägget med namnet
azure-iot. Den äldre versionen kallasazure-cli-iot-ext. Du bör bara ha en version installerad i taget. Du kan använda kommandotaz extension listför att verifiera de tillägg som är installerade.Använd
az extension remove --name azure-cli-iot-extför att ta bort den äldre versionen av tillägget.Använd
az extension add --name azure-iotför att lägga till den nya versionen av tillägget.Om du vill se vilka tillägg som för närvarande är installerade använder du
az extension list.Exempelprogrammet som du kör i den här självstudien använder Node.js. Du behöver Node.js v10.x.x eller senare på utvecklingsdatorn.
Du kan ladda ned Node.js för flera plattformar från nodejs.org.
Du kan kontrollera den aktuella versionen av Node.js på utvecklingsdatorn med följande kommando:
node --version
Klona eller ladda ned exempelprojektet Node.js från Azure IoT-exempel för Node.js.
Kontrollera att port 8883 är öppen i brandväggen. Enhetsexemplet i den här självstudien använder MQTT-protokoll, som kommunicerar via port 8883. Den här porten kan blockeras i vissa företags- och utbildningsnätverksmiljöer. Mer information och sätt att kringgå det här problemet finns i Ansluta till IoT Hub (MQTT).
Skapa en IoT-hubb
I det här avsnittet använder du Azure CLI för att skapa en IoT-hubb och en resursgrupp. En Azure-resursgrupp är en logisk behållare i vilken Azure-resurser distribueras och hanteras. En IoT-hubb fungerar som en central meddelandehubb för dubbelriktad kommunikation mellan din IoT-applikation och enheterna.
Om du redan har en IoT-hubb i din Azure-prenumeration kan du hoppa över det här avsnittet.
Så här skapar du en IoT-hubb och en resursgrupp:
Starta DIN CLI-app. Om du vill köra CLI-kommandona i resten av den här artikeln kopierar du kommandosyntaxen, klistrar in den i CLI-appen, redigerar variabelvärden och trycker på
Enter.- Om du använder Cloud Shell, välj knappen Testa på CLI-kommandona för att starta Cloud Shell i ett delat webbläsarfönster. Eller så kan du öppna Cloud Shell på en separat webbläsarflik.
- Om du använder Azure CLI lokalt, starta din CLI-konsolapp och logga in på Azure CLI.
Kör az extension add för att installera eller uppgradera azure-iot-tillägget till den aktuella versionen.
az extension add --upgrade --name azure-iotI din CLI-app, kör kommandot az group create för att skapa en resursgrupp. Följande kommando skapar en resursgrupp med namnet MyResourceGroup på platsen eastus .
Note
Du kan också ange en annan plats. Om du vill se tillgängliga platser kör du
az account list-locations. Den här snabbstarten använder eastus enligt exempelkommandot.az group create --name MyResourceGroup --location eastusKör kommandot az iot hub create för att skapa en IoT-hubb. Det kan ta några minuter att skapa en IoT-hubb.
YourIoTHubName. Ersätt platshållaren och de omgivande klamrarna i följande kommando med det namn du valde för din IoT-hubb. Ett IoT-hubbnamn måste vara globalt unikt i Azure. Använd ditt IoT Hub-namn i resten av den här snabbstarten var du än ser platshållaren.
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
Kontrollera enhetsautentisering
En enhet måste autentisera med din hubb innan den kan utbyta data med hubben. Du kan använda verktyget IoT-enheter i avsnittet Enhetshantering i portalen för att hantera dina enheter och kontrollera de autentiseringsnycklar som de använder. I det här avsnittet av självstudien lägger du till en ny testenhet, hämtar dess nyckel och kontrollerar att testenheten kan ansluta till hubben. Senare återställer du autentiseringsnyckeln för att se vad som händer när en enhet försöker använda en inaktuell nyckel.
Registrera en enhet
En enhet måste vara registrerad vid din IoT-hubb innan den kan ansluta. I det här avsnittet använder du Azure CLI för att skapa en enhetsidentitet.
Om du redan har en enhet registrerad i din IoT-hubb kan du hoppa över det här avsnittet.
Så här skapar du en enhetsidentitet:
Kör kommandot az iot hub device-identity create i CLI-gränssnittet. Det här kommandot skapar enhetsidentiteten.
YourIoTHubName. Ersätt platshållaren och de omgivande klamrarna i följande kommando med det namn du valde för din IoT-hubb. Ett IoT-hubbnamn måste vara globalt unikt i Azure.
myDevice. Du kan använda det här namnet för enhets-ID:t i den här artikeln eller ange ett annat enhetsnamn.
az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}Kör följande kommando: az iot hub device-identity connection-string show.
az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}Utdata för anslutningssträng är i följande format:
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>Spara anslutningssträng på en säker plats.
Note
Håll CLI-appen öppen. Du använder det i senare steg.
Simulera testenheten
Om du vill simulera en enhet som skickar telemetri till din IoT-hubb kör du det Node.js simulerade enhetsprogrammet som du laddade ned tidigare.
I ett terminalfönster på utvecklingsdatorn navigerar du till rotmappen för exempelprojektet Node.js som du laddade ned. Navigera sedan till mappen iot-hub\Tutorials\ConnectivityTests .
I terminalfönstret kör du följande kommandon för att installera de bibliotek som krävs och köra det simulerade enhetsprogrammet. Använd enhetsanslutningssträngen som du antecknade när du registrerade enheten.
npm install node SimulatedDevice-1.js "{your_device_connection_string}"Terminalfönstret visar ett meddelande när det ansluter till din hubb:
Nu har du autentiserats från en enhet med hjälp av en enhetsnyckel som genererats av din IoT-hubb.
Återställ nycklar
I det här avsnittet återställer du enhetsnyckeln och observerar felet när den simulerade enheten försöker ansluta.
Om du vill återställa den primära enhetsnyckeln för enheten kör du kommandot az iot hub device-identity update :
# 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}Kör det simulerade enhetsprogrammet igen i terminalfönstret på utvecklingsdatorn:
npm install node SimulatedDevice-1.js "{your_device_connection_string}"Den här gången visas ett autentiseringsfel när programmet försöker ansluta:
Generera en SAS-token (signatur för delad åtkomst)
Om enheten använder en av IoT Hub-enhets-SDK:erna genererar SDK-bibliotekskoden den SAS-token som används för att autentisera med hubben. En SAS-token genereras från namnet på din hubb, namnet på din enhet och enhetsnyckeln.
I vissa scenarier, till exempel i en molnprotokollgateway eller som en del av ett anpassat autentiseringsschema, kan du behöva generera SAS-token själv. För att felsöka problem med din SAS-generationskod är det bra att generera en känd SAS-token som ska användas under testningen.
Note
Det SimulatedDevice-2.js exemplet innehåller exempel på hur du genererar en SAS-token både med och utan SDK.
Kör kommandot az iot hub generate-sas-token för att generera en känd SAS-token med hjälp av CLI:
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}Kopiera den fullständiga texten för den genererade SAS-token. En SAS-token ser ut som i följande exempel:
SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111I ett terminalfönster på utvecklingsdatorn navigerar du till rotmappen för exempelprojektet Node.js du laddade ned. Navigera sedan till mappen iot-hub\Tutorials\ConnectivityTests .
I terminalfönstret kör du följande kommandon för att installera de bibliotek som krävs och köra det simulerade enhetsprogrammet:
npm install node SimulatedDevice-2.js "{Your SAS token}"Terminalfönstret visar ett meddelande när det ansluter till din hubb med hjälp av SAS-token:
Nu har du autentiserats från en enhet med hjälp av en SAS-testtoken som genereras av ett CLI-kommando. Filen SimulatedDevice-2.js innehåller exempelkod som visar hur du genererar en SAS-token i kod.
Protocols
En enhet kan använda något av följande protokoll för att ansluta till din IoT-hubb:
| Protocol | Utgående port |
|---|---|
| MQTT | 8883 |
| MQTT över WebSockets | 443 |
| AMQP | 5671 |
| AMQP över WebSockets | 443 |
| HTTPS | 443 |
Om den utgående porten blockeras av en brandvägg kan enheten inte ansluta:
Kontrollera anslutningen från enhet till moln
När en enhet har anslutit kan den börja skicka telemetri till din IoT-hubb. Det här avsnittet visar hur du kan kontrollera att telemetrin som skickas av enheten når din hubb.
Skicka meddelanden från enhet till moln
Eftersom vi återställer anslutningssträngen för enheten i föregående avsnitt använder du kommandot az iot hub device-identity connection-string show för att hämta den uppdaterade anslutningssträngen:
az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}Om du vill köra en simulerad enhet som skickar meddelanden navigerar du till mappen iot-hub\Tutorials\ConnectivityTests i koden som du laddade ned.
I terminalfönstret kör du följande kommandon för att installera de bibliotek som krävs och köra det simulerade enhetsprogrammet:
npm install node SimulatedDevice-3.js "{your_device_connection_string}"Terminalfönstret visar information när den skickar telemetri till din hubb:
Övervaka inkommande meddelanden
Du kan använda Mått i portalen för att kontrollera att telemetrimeddelandena når din IoT-hubb.
I Azure-portalen väljer du din IoT-hubb i listrutan Resurs .
Välj Mått i avsnittet Övervakning i navigeringsmenyn.
Välj Telemetrimeddelanden som skickas som mått och ange tidsintervallet till Senaste timme. Diagrammet visar det sammanlagda antalet meddelanden som skickas av den simulerade enheten:
Det tar några minuter innan måtten blir tillgängliga när du har startat den simulerade enheten.
Kontrollera anslutningen från moln till enhet
Det här avsnittet visar hur du kan göra ett test direkt metodanrop till en enhet för att kontrollera moln-till-enhet-anslutning. Du kör en simulerad enhet på utvecklingsdatorn för att lyssna efter direktmetodanrop från hubben.
I ett terminalfönster använder du följande kommando för att köra det simulerade enhetsprogrammet:
node SimulatedDevice-3.js "{your_device_connection_string}"I ett separat fönster använder du kommandot az iot hub invoke-device-method för att anropa en direktmetod på enheten:
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}Den simulerade enheten skriver ut ett meddelande till konsolen när den tar emot ett direkt metodanrop:
När den simulerade enheten tar emot direktmetodanropet skickar den en bekräftelse tillbaka till hubben:
Kontrollera tvillingsynkronisering
Enheter använder tvillingar för att synkronisera tillstånd mellan enheten och hubben. I det här avsnittet använder du CLI-kommandon för att skicka önskade egenskaper till en enhet och läsa de rapporterade egenskaperna som skickas av enheten.
Den simulerade enhet som du använder i det här avsnittet skickar rapporterade egenskaper till hubben när den startas och skriver ut önskade egenskaper till konsolen när den tar emot dem.
I ett terminalfönster använder du följande kommando för att köra det simulerade enhetsprogrammet:
node SimulatedDevice-3.js "{your_device_connection_string}"I ett separat fönster kör du kommandot az iot hub device-twin show för att kontrollera att hubben tog emot de rapporterade egenskaperna från enheten:
az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}I utdata från kommandot kan du se egenskapen devicelaststarted i avsnittet rapporterade egenskaper. Den här egenskapen visar datum och tid då du senast startade den simulerade enheten.
Kontrollera att hubben kan skicka önskade egenskapsvärden till enheten genom att använda kommandot 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}Den simulerade enheten skriver ut ett meddelande när den tar emot en önskad egenskapsuppdatering från hubben:
Förutom att ta emot önskade egenskapsändringar när de görs söker den simulerade enheten automatiskt efter önskade egenskaper när den startas.
Rensa resurser
Om du inte behöver IoT-hubben längre kan du ta bort den och resursgruppen i portalen. Om du vill göra det väljer du den resursgrupp som innehåller din IoT-hubb och väljer Ta bort.
Nästa steg
I den här självstudien har du sett hur du kontrollerar dina enhetsnycklar, kontrollerar anslutningen mellan enheter och molnet, kontrollerar anslutningen från moln till enhet och kontrollerar synkroniseringen av enhetstvillingar. Mer information om hur du övervakar din IoT-hubb finns i artikeln om IoT Hub-övervakning.