Share via


Självstudier: Använda en simulerad enhet för att testa anslutningen till din IoT-hubb

I den här kursen använder du Azure IoT Hub-portalverktyg och Azure CLI-kommandon för att testa anslutningen för enheten. Den här kursen använder också en enkel enhetssimulator som du kör på din stationära dator.

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

I den här självstudien lär du dig att:

  • Kontrollera din enhetsautentisering
  • Kontrollera anslutningen från enhet till moln
  • Kontrollera anslutningen moln till enhet
  • Kontrollera dubbelsynkronisering

Förutsättningar

  • I den här självstudien används Azure CLI för att skapa molnresurser. Det finns två sätt att köra CLI-kommandon:

    Kommentar

    Den här artikeln använder den senaste versionen av Azure IoT-tillägget med namnet azure-iot. Den äldre versionen kallas azure-cli-iot-ext. Du bör bara ha en version installerad i taget. Du kan använda kommandot az extension list för att verifiera de tillägg som är installerade.

    Använd az extension remove --name azure-cli-iot-ext för att ta bort den äldre versionen av tillägget.

    Använd az extension add --name azure-iot för att lägga till den nya versionen av tillägget.

    Om du vill se vilka tillägg du har installerat 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 Anslut ing to 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 container där Azure-resurser distribueras och hanteras. En IoT-hubb fungerar som en central meddelandehubb för dubbelriktad kommunikation mellan ditt IoT-program 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:

  1. 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äljer du knappen Prova 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 startar du CLI-konsolappen och loggar in på Azure CLI.
  2. 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-iot
    
  3. I CLI-appen kör du kommandot az group create för att skapa en resursgrupp. Följande kommando skapar en resursgrupp med namnet MyResourceGroup på platsen eastus .

    Kommentar

    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 eastus
    
  4. Kö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 klammerparenteserna 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 {your_iot_hub_name}
    

Kontrollera din enhetsautentisering

En enhet måste autentiseras mot din hubb innan den kan utbyta data med hubben. Du kan använda verktyget IoT-enheter -verktyget i området enhetshantering i portalen för att hantera dina enheter och kontrollera de autentiseringsnycklar som de använder. I denna del av kursen lägger du till en ny testenhet, tar emot dess nyckel och kontrollerar att en testenhet kan anslutas till hubben. Senare kan du återställa autentiseringsnyckeln om du vill 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:

  1. Kör kommandot az iot hub device-identity create i CLI-gränssnittet. Det här kommandot skapar enhetsidentiteten.

    your_iot_hub_name. Ersätt platshållaren nedan med det namn som du har valt för din IoT-hubb.

    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 {your_iot_hub_name}
    
  2. Kör kommandot az iot hub device-identity connection-string show.

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

    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>
    
  3. Spara anslutningssträng på en säker plats.

Kommentar

Håll CLI-appen öppen. Du kommer att använda det senare.

Simulera en testenhet

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.

  1. I ett terminalfönster på utvecklingsdatorn går du till rotmappen för exempelprojektet Node.js som du laddade ned. Gå sedan till mappen iot-hub\Tutorials\ConnectivityTests.

  2. Installera de bibliotek som krävs för det simulerade enhetsprogrammet genom att köra följande kommandon i terminalfönstret. Använd enheten anslutningssträng 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:

    Screenshot that shows the simulated device connecting.

Du har nu autentiserats från en enhet med en enhetsnyckel som har genererats av din IoT-hubb.

Återställning av nycklar

I det här avsnittet får du återställa enhetsnyckeln och se felet när den simulerade enheten försöker ansluta.

  1. 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}
    
  2. 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 ser du ett autentiseringsfel när programmet försöker ansluta:

    Screenshot that shows the connection failing after the key reset.

Generera en SAS-token (signatur för delad åtkomst)

Om enheten använder en av SDK:erna för IoT Hub-enheten, genererar SDK-bibliotekskoden en SAS-token som används för att autentisera mot hubben. En SAS-token skapas från namnet på din hubb, namnet på din enhet och enhetsnyckeln.

I vissa scenarier, till exempel en molnprotokollgateway eller en del av ett anpassat autentiseringsschema, kan du behöva skapa en SAS-token själv. När du felsöker problem med din SAS-kod är det användbart att skapa en fungerande SAS-token som kan användas vid test.

Kommentar

SimulatedDevice-2.js-exemplet innehåller exempel på hur du genererar en SAS-token både med och utan SDK.

  1. Kör kommandot az iot hub genereate-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}
    
  2. 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=111111

  3. Navigera till rotmappen för Node.js-exempelprojektet som du hämtade i ett terminalfönster på din utvecklingsdator. Gå sedan till mappen iot-hub\Tutorials\ConnectivityTests.

  4. Installera de bibliotek som krävs för det simulerade enhetsprogrammet genom att köra följande kommandon i terminalfönstret:

    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:

    Screenshot that shows a successful connection using a SAS token.

Du har nu autentiserats från en enhet med en test-SAS-token som har genererats av ett CLI-kommando. Filen SimulatedDevice 2.js innehåller exempelkod som visar hur du genererar en SAS-token i kod.

Protokoll

En enhet kan använda något av följande protokoll för att ansluta till din IoT-hubb:

Protokoll 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 anslutas:

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

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 verifiera att telemetri som skickas av enheten når din hubb.

Skicka meddelanden från enhet till moln

  1. Eftersom vi återställer anslutningssträng 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äng:

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Om du vill köra en simulerad enhet som skickar meddelanden navigerar du till mappen iot-hub\Tutorials\Anslut ivityTests i koden som du laddade ned.

  3. Installera de bibliotek som krävs för det simulerade enhetsprogrammet genom att köra följande kommandon i terminalfönstret:

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

    Terminalfönstret visar information när det skickar telemetri till din hubb:

    Screenshot that shows the simulated device sending messages.

Övervaka inkommande meddelanden

Du kan använda mått i portalen för att kontrollera att telemetrimeddelanden kommer fram till din IoT-hubb.

  1. I Azure-portalen väljer du din IoT-hubb i listrutan Resurs.

  2. Välj Mått i avsnittet Övervakning i navigeringsmenyn.

  3. Välj Telemetrimeddelanden som skickas som mått och ange tidsintervallet till Senaste timme. Diagrammet visar det sammanlagda antalet meddelanden som har skickats av den simulerade enheten:

    Screenshot showing left pane metrics.

Det tar några minuter för mätvärdena att bli tillgängliga efter att du har startat den simulerade enheten.

Kontrollera anslutningen moln till enhet

Hur du kan testa ett direkt metodanrop till en enhet för att kontrollera anslutningen från moln till enhet. Du kör en simulerad enhet på din utvecklingsdator för att lyssna efter direkta metodanrop från din hubb.

  1. Kör det simulerade enhetsprogrammet genom att köra följande kommandon i terminalfönstret:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. 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:

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

    När den simulerade enheten tar emot direktmetodanropet skickar den en bekräftelse tillbaka till hubben:

    Screenshot showing that the device returns a direct method acknowledgment.

Kontrollera dubbelsynkronisering

Enheter använder direktsynkronisering för att synkronisera tillstånd mellan enheten och hubben. I det här avsnittet kan du använda CLI-kommandon för att skicka önskade egenskaper till en enhet och läsa rapporterade egenskaper som skickas av enheten.

Den simulerade enheten som du använder i det här avsnittet skickar rapporterade egenskaper till hubben när den startas och skriver ut önskade egenskaper i konsolen när den tar emot dem.

  1. Kör det simulerade enhetsprogrammet genom att köra följande kommandon i terminalfönstret:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. 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}
    

    Du kan se egenskapen devicelaststarted i området med rapporterade egenskaper. Den här egenskapen visar datum och tid då den simulerade enheten senast startades.

    Screenshot showing the reported properties of a device.

  3. 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:

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

Förutom att ta emot önskade egenskapsändringar när de har utförts, söker simulerade enheten automatiskt efter 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 kursen har du fått lära dig att kontrollera dina enhetsnycklar, kontrollera anslutningen från enhet till moln, kontrollera anslutningen från moln till enhet och kontrollera dubbelsynkronisering. Gå till artikeln om övervakning av IoT Hub för att lära dig mer om hur du övervakar din IoT Hub.