Udostępnij za pomocą


Samouczek: testowanie łączności z centrum IoT za pomocą urządzenia symulowanego

W tym samouczku użyjesz narzędzi portalu usługi Azure IoT Hub i poleceń Azure CLI, aby przetestować łączność urządzeń. Ten samouczek również używa prostego symulatora urządzenia działającego na komputerze stacjonarnym.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Sprawdzanie uwierzytelniania urządzenia
  • Sprawdzanie łączności urządzenia z chmurą
  • Sprawdzanie łączności chmury z urządzeniem
  • Sprawdzanie synchronizacji bliźniaka urządzenia

Wymagania wstępne

  • W tym samouczku do tworzenia zasobów w chmurze jest używany interfejs wiersza polecenia platformy Azure. Istnieją dwa sposoby uruchamiania poleceń linii komend:

    Uwaga

    W tym artykule jest używana najnowsza wersja rozszerzenia Usługi Azure IoT o nazwie azure-iot. Starsza wersja nosi nazwę azure-cli-iot-ext. Jednocześnie powinna być zainstalowana tylko jedna wersja. Możesz użyć polecenia az extension list , aby zweryfikować aktualnie zainstalowane rozszerzenia.

    Użyj az extension remove --name azure-cli-iot-ext polecenia , aby usunąć starszą wersję rozszerzenia.

    Użyj az extension add --name azure-iot polecenia , aby dodać nową wersję rozszerzenia.

    Aby sprawdzić, jakie rozszerzenia są obecnie zainstalowane, użyj polecenia az extension list.

  • W tym samouczku uruchamiana jest aplikacja przykładowa, która używa Node.js. Potrzebujesz Node.js wersji 10.x.x lub nowszej na komputerze deweloperskim.

    • Możesz pobrać środowisko Node.js dla wielu platform ze strony nodejs.org.

    • Możesz sprawdzić bieżącą wersję środowiska Node.js na komputerze deweloperskim przy użyciu następującego polecenia:

      node --version
      
  • Sklonuj lub pobierz przykładowy projekt Node.js z przykładów usługi Azure IoT dla Node.js.

  • Upewnij się, że port 8883 jest otwarty w twojej zaporze. Przykład urządzenia w tym samouczku używa protokołu MQTT, który przesyła dane za pośrednictwem portu 8883. Ten port może zostać zablokowany w niektórych środowiskach sieci firmowych i edukacyjnych. Aby uzyskać więcej informacji i sposobów obejścia tego problemu, zobacz Nawiązywanie połączenia z usługą IoT Hub (MQTT).

Tworzenie centrum IoT

W tej sekcji użyjesz interfejsu wiersza polecenia platformy Azure do utworzenia centrum IoT i grupy zasobów. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Centrum IoT działa jako centralne centrum komunikatów na potrzeby dwukierunkowej komunikacji między aplikacją IoT a urządzeniami.

Jeśli masz już centrum IoT w subskrypcji platformy Azure, możesz pominąć tę sekcję.

Aby utworzyć centrum IoT i grupę zasobów:

  1. Uruchom aplikację CLI. Aby uruchomić polecenia interfejsu wiersza polecenia w pozostałej części tego artykułu, skopiuj składnię polecenia, wklej ją do aplikacji interfejsu wiersza polecenia, edytuj wartości zmiennych i naciśnij Enter.

    • Jeśli używasz usługi Cloud Shell, wybierz przycisk Wypróbuj w poleceniach wiersza polecenia, aby otworzyć usługę Cloud Shell w podzielonym oknie przeglądarki. Możesz też otworzyć usługę Cloud Shell na osobnej karcie przeglądarki.
    • Jeśli używasz interfejsu wiersza polecenia platformy Azure lokalnie, uruchom aplikację konsolową interfejsu wiersza polecenia i zaloguj się do interfejsu wiersza polecenia platformy Azure.
  2. Uruchom az extension add, aby zainstalować lub uaktualnić azure-iot do bieżącej wersji.

    az extension add --upgrade --name azure-iot
    
  3. W aplikacji CLI uruchom polecenie az group create, aby utworzyć grupę zasobów. Następujące polecenie tworzy grupę zasobów o nazwie MyResourceGroup w lokalizacji eastus .

    Uwaga

    Opcjonalnie możesz ustawić inną lokalizację. Aby wyświetlić dostępne lokalizacje, uruchom polecenie az account list-locations. W tej szybkiej instrukcji użyto regionu eastus, jak pokazano w przykładowym poleceniu.

    az group create --name MyResourceGroup --location eastus
    
  4. Uruchom az iot hub create, aby utworzyć centrum IoT. Utworzenie centrum IoT Hub może potrwać kilka minut.

    YourIoTHubName. Zastąp ten symbol zastępczy i otaczające nawiasy klamrowe w poniższym poleceniu, korzystając z nazwy, którą wybrałeś dla swojego centrum IoT. Nazwa centrum IoT musi być globalnie unikatowa na platformie Azure. Użyj nazwy swojego centrum IoT w pozostałej części przewodnika szybkiego uruchamiania wszędzie, gdzie pojawia się symbol zastępczy.

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

Sprawdzenie uwierzytelniania urządzenia

Urządzenie musi zostać uwierzytelnione na hubie, zanim możliwa będzie wymiana danych z hubem. Możesz użyć narzędzia Urządzenia IoT w sekcji Zarządzanie urządzeniami w portalu, aby zarządzać urządzeniami i sprawdzić używane klucze uwierzytelniania. W tej części samouczka dodasz nowe urządzenie testowe, pobierzesz jego klucz i sprawdzisz, czy urządzenie testowe może nawiązać połączenie z centrum. W dalszej części zresetujesz klucz uwierzytelniania w celu zaobserwowania, co się stanie, gdy urządzenie spróbuje użyć nieaktualnego klucza.

Rejestrowanie urządzenia

Zanim urządzenie będzie mogło nawiązać połączenie, należy je najpierw zarejestrować w centrum IoT. W tej sekcji użyjesz interfejsu wiersza polecenia platformy Azure do utworzenia tożsamości urządzenia.

Jeśli masz już urządzenie zarejestrowane w centrum IoT Hub, możesz pominąć tę sekcję.

Aby utworzyć tożsamość urządzenia:

  1. Uruchom polecenie az iot hub device-identity create w powłoce CLI. To polecenie tworzy tożsamość urządzenia.

    YourIoTHubName. Zastąp ten symbol zastępczy i otaczające nawiasy klamrowe w poniższym poleceniu, korzystając z nazwy, którą wybrałeś dla swojego centrum IoT. Nazwa centrum IoT musi być globalnie unikatowa na platformie Azure.

    myDevice. Możesz użyć tej nazwy dla identyfikatora urządzenia w tym artykule lub podać inną nazwę urządzenia.

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}
    
  2. Uruchom polecenie az iot hub device-identity connection-string show.

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

    Dane wyjściowe jako ciąg połączenia mają następujący format:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Zapisz parametry połączenia w bezpiecznej lokalizacji.

Uwaga

Pozostaw otwartą aplikację CLI. Użyjesz tego w kolejnych krokach.

Symulowanie urządzenia testowego

Aby symulować urządzenie wysyłające dane telemetryczne do centrum IoT Hub, uruchom wcześniej pobraną aplikację urządzenia symulowanego Node.js.

  1. W oknie terminalu na maszynie dewelopera przejdź do folderu głównego przykładowego projektu Node.js pobranego. Następnie przejdź do folderu iot-hub\Tutorials\ConnectivityTests.

  2. W oknie terminalu uruchom następujące polecenia, aby zainstalować wymagane biblioteki i uruchomić aplikację urządzenia symulowanego. Użyj parametry połączenia urządzenia zanotowane podczas rejestrowania urządzenia.

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

    Okno terminalu wyświetla komunikat o powodzeniu po nawiązaniu połączenia z centrum:

    Zrzut ekranu przedstawiający łączenie symulowanego urządzenia.

Teraz zostałeś pomyślnie uwierzytelniony z urządzenia przy użyciu klucza urządzenia wygenerowanego przez centrum IoT.

Resetowanie kluczy

W tej sekcji zresetujesz klucz urządzenia i zaobserwujesz błąd, który wystąpi, gdy urządzenie symulowane spróbuje nawiązać połączenie.

  1. Aby zresetować podstawowy klucz swojego urządzenia, uruchom polecenie 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. W oknie terminalu na komputerze deweloperskim uruchom ponownie aplikację urządzenia symulowanego:

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

    Tym razem, gdy aplikacja spróbuje nawiązać połączenie, wyświetlony zostanie komunikat o błędzie uwierzytelniania:

    Zrzut ekranu przedstawiający niepowodzenie połączenia po zresetowaniu klucza.

Generowanie tokenu sygnatury dostępu współdzielonego (SAS)

Jeśli urządzenie korzysta z jednego z zestawów SDK urządzeń usługi IoT Hub, kod biblioteki SDK generuje token SAS używany do uwierzytelniania w centrum. Token SAS jest generowany przy użyciu nazwy centrum, nazwy urządzenia oraz klucza urządzenia.

W niektórych scenariuszach, na przykład w przypadku bramy protokołu w chmurze lub w ramach niestandardowego schematu uwierzytelniania, może być konieczne samodzielne wygenerowanie tokenu SAS. Aby rozwiązać problemy z kodem generującym token SAS, warto wygenerować znany sprawny token SAS do użycia podczas testów.

Uwaga

Przykładowy plik SimulatedDevice-2.js zawiera przykłady generowania tokenu sygnatury dostępu współdzielonego (SAS) z zestawem SDK i bez niego.

  1. Uruchom polecenie az iot hub generate-sas-token, aby wygenerować prawidłowy token SAS przy użyciu interfejsu wiersza polecenia (CLI):

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Skopiuj pełny tekst wygenerowanego tokenu SAS. Token SAS wygląda podobnie do następującego przykładu: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. W oknie terminalu na komputerze deweloperskim przejdź do folderu głównego pobranego projektu przykładowego Node.js. Następnie przejdź do folderu iot-hub\Tutorials\ConnectivityTests.

  4. W oknie terminalu uruchom następujące polecenia, aby zainstalować wymagane biblioteki i uruchomić aplikację urządzenia symulowanego:

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

    W oknie terminalu zostanie wyświetlony komunikat o powodzeniu po nawiązaniu połączenia z centrum przy użyciu tokenu SAS:

    Zrzut ekranu przedstawiający pomyślne połączenie przy użyciu tokenu SAS.

Teraz pomyślnie uwierzytelniłeś się z urządzenia przy użyciu testowego tokenu SAS wygenerowanego za pomocą polecenia interfejsu wiersza polecenia. Plik SimulatedDevice-2.js zawiera kod przykładowy, który pokazuje, w jaki sposób wygenerować token SAS w kodzie.

Protokoły

Urządzenie może korzystać z dowolnego z następujących protokołów w celu nawiązania połączenia z centrum IoT:

Protokół Port wyjściowy
MQTT 8883
MQTT przez WebSocket 443
AMQP 5671
AMQP za pośrednictwem obiektów WebSocket 443
HTTPS 443

Jeśli port wychodzący jest blokowany przez zaporę, urządzenie nie może nawiązać połączenia:

Zrzut ekranu przedstawiający błąd połączenia po zablokowaniu portu wychodzącego.

Sprawdzanie łączności urządzenia z chmurą

Po nawiązaniu połączenia urządzenie może rozpocząć wysyłanie danych telemetrycznych do centrum IoT Hub. W tej sekcji przedstawiono sposób sprawdzania, czy dane telemetryczne wysyłane przez urządzenie docierają do centrum.

Wysyłanie komunikatów z urządzenia do chmury

  1. Ponieważ zresetowaliśmy ciąg połączenia dla urządzenia w poprzedniej sekcji, użyj polecenia az iot hub device-identity connection-string show, aby pobrać zaktualizowany ciąg połączenia:

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Aby uruchomić symulowane urządzenie wysyłające komunikaty, przejdź do folderu iot-hub\Tutorials\ConnectivityTests w pobranym kodzie.

  3. W oknie terminalu uruchom następujące polecenia, aby zainstalować wymagane biblioteki i uruchomić aplikację urządzenia symulowanego:

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

    Podczas wysyłania danych telemetrycznych do centrum w oknie terminalu zostaną wyświetlone te informacje:

    Zrzut ekranu przedstawiający symulowane urządzenie wysyłające komunikaty.

Monitorowanie komunikatów przychodzących

Możesz użyć pozycji Metryki w portalu, aby sprawdzić, czy komunikaty zawierające dane telemetryczne docierają do centrum IoT.

  1. W portalu Azure wybierz swój IoT Hub z listy rozwijanej Zasoby.

  2. Wybierz pozycję Metryki w sekcji Monitorowanie w menu nawigacji.

  3. Wybierz Komunikaty telemetryczne wysyłane jako metrykę i ustaw zakres czasu na Ostatnia godzina. Wykres pokazuje zagregowaną liczbę komunikatów wysłanych przez urządzenie symulowane:

    Zrzut ekranu przedstawiający metryki w lewym panelu.

Po uruchomieniu urządzenia symulowanego udostępnienie metryk zajmuje kilka minut.

Sprawdzanie łączności chmury z urządzeniem

W tej sekcji przedstawiono, jak wykonać testowe wywołanie bezpośredniej metody do urządzenia w celu sprawdzenia łączności między chmurą a urządzeniem. Na komputerze deweloperskim uruchamiasz symulowane urządzenie, które nasłuchuje wywołań bezpośrednich metod z centrum.

  1. W oknie terminalu użyj następującego polecenia, aby uruchomić aplikację urządzenia symulowanego:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. W osobnym oknie użyj polecenia az iot hub invoke-device-method, aby wywołać bezpośrednią metodę na urządzeniu.

    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}
    

    Po otrzymaniu wywołania metody bezpośredniej urządzenie symulowane drukuje komunikat w konsoli:

    Zrzut ekranu przedstawiający urządzenie potwierdzające, że metoda bezpośrednia została odebrana.

    Gdy symulowane urządzenie pomyślnie odbiera wywołanie metody bezpośredniej, wysyła potwierdzenie z powrotem do centrum:

    Zrzut ekranu pokazujący, że urządzenie zwraca potwierdzenie metody bezpośredniej.

Sprawdź synchronizację bliźniaczą

Urządzenia używają bliźniaków do synchronizowania stanu pomiędzy urządzeniem a hubem. W tej sekcji użyjesz poleceń interfejsu wiersza polecenia, aby wysłać żądane właściwości do urządzenia i odczytać zgłoszone właściwości wysłane przez urządzenie.

Urządzenie symulowane używane w tej sekcji wysyła zgłoszone właściwości do centrum za każdym razem, gdy jest uruchamiane, i drukuje żądane właściwości w konsoli za każdym razem, gdy je otrzyma.

  1. W oknie terminalu użyj następującego polecenia, aby uruchomić aplikację urządzenia symulowanego:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. W osobnym oknie uruchom polecenie az iot hub device-twin show aby sprawdzić, czy centrum otrzymało zgłoszone właściwości z urządzenia:

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

    W danych wyjściowych polecenia możesz zobaczyć właściwość devicelaststarted w sekcji zgłoszonych właściwości. Ta właściwość pokazuje, kiedy ostatnio uruchomiono urządzenie symulowane.

    Zrzut ekranu przedstawiający zgłoszone właściwości urządzenia.

  3. Aby sprawdzić, czy hub IoT może wysyłać żądane wartości właściwości do urządzenia, użyj polecenia 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}
    

    Po otrzymaniu aktualizacji żądanej właściwości z centrum urządzenie symulowane drukuje komunikat:

    Zrzut ekranu przedstawiający urządzenie z potwierdzeniem odebrania żądanej aktualizacji właściwości.

Oprócz otrzymywania na bieżąco żądanych zmian właściwości urządzenie symulowane automatycznie sprawdza dostępność żądanych właściwości przy uruchomieniu.

Czyszczenie zasobów

Jeśli nie potrzebujesz już tego centrum IoT, usuń je oraz grupę zasobów z poziomu portalu. W tym celu wybierz grupę zasobów zawierającą centrum IoT, a następnie wybierz pozycję Usuń.

Następne kroki

W tym samouczku nauczyłeś się, jak sprawdzać klucze urządzenia, jak sprawdzać łączność z chmurą i z urządzeniem oraz jak sprawdzać synchronizację bliźniaczej kopii urządzenia. Aby dowiedzieć się więcej na temat monitorowania centrum IoT, zapoznaj się z artykułem z instrukcjami dotyczącymi monitorowania usługi IoT Hub.