Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Przewodnik Szybki start usługi Azure Cloud Shell — Bash.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
- Zaloguj się do Azure CLI, używając polecenia az login.
- Zainstaluj rozszerzenia interfejsu wiersza polecenia platformy Azure przy pierwszym użyciu, gdy zostanie wyświetlony monit. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
- Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
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ć poleceniaaz extension list, aby zweryfikować aktualnie zainstalowane rozszerzenia.Użyj
az extension remove --name azure-cli-iot-extpolecenia , aby usunąć starszą wersję rozszerzenia.Użyj
az extension add --name azure-iotpolecenia , 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:
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.
Uruchom az extension add, aby zainstalować lub uaktualnić azure-iot do bieżącej wersji.
az extension add --upgrade --name azure-iotW 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 eastusUruchom 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:
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}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>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.
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.
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:
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.
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}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:
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.
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}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=111111W 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.
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:
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:
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
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}Aby uruchomić symulowane urządzenie wysyłające komunikaty, przejdź do folderu iot-hub\Tutorials\ConnectivityTests w pobranym kodzie.
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:
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.
W portalu Azure wybierz swój IoT Hub z listy rozwijanej Zasoby.
Wybierz pozycję Metryki w sekcji Monitorowanie w menu nawigacji.
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:
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.
W oknie terminalu użyj następującego polecenia, aby uruchomić aplikację urządzenia symulowanego:
node SimulatedDevice-3.js "{your_device_connection_string}"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:
Gdy symulowane urządzenie pomyślnie odbiera wywołanie metody bezpośredniej, wysyła potwierdzenie z powrotem do centrum:
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.
W oknie terminalu użyj następującego polecenia, aby uruchomić aplikację urządzenia symulowanego:
node SimulatedDevice-3.js "{your_device_connection_string}"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.
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:
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.