Szybki Start: używanie Node.js do sterowania urządzeniem podłączonym do usługi Azure IoT HubQuickstart: Use Node.js to control a device connected to an Azure IoT hub

W tym przewodniku szybki start użyjesz metody bezpośredniej do kontrolowania symulowanego urządzenia połączonego z platformą Azure IoT Hub.In this quickstart, you use a direct method to control a simulated device connected to Azure IoT Hub. IoT Hub to usługa platformy Azure, która umożliwia zarządzanie urządzeniami IoT z chmury oraz pozyskiwanie dużych ilości danych telemetrycznych urządzeń do chmury w celu przechowania lub przetworzenia.IoT Hub is an Azure service that enables you to manage your IoT devices from the cloud, and ingest high volumes of device telemetry to the cloud for storage or processing. Możesz użyć metod bezpośrednich, aby zdalnie zmieniać zachowanie urządzenia podłączonego do centrum IoT.You can use direct methods to remotely change the behavior of a device connected to your IoT hub. W tym przewodniku Szybki Start są używane dwie Node.js aplikacje: symulowana aplikacja urządzenia, która odpowiada na metody bezpośrednie wywoływane z aplikacji zaplecza i aplikacji zaplecza, która wywołuje metody bezpośrednie na symulowanym urządzeniu.This quickstart uses two Node.js applications: a simulated device application that responds to direct methods called from a back-end application and a back-end application that calls the direct methods on the simulated device.

Wymagania wstępnePrerequisites

Możesz sprawdzić bieżącą wersję środowiska Node.js na komputerze deweloperskim przy użyciu następującego polecenia:You can verify the current version of Node.js on your development machine using the following command:

node --version

Używanie usługi Azure Cloud ShellUse Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Aby uruchomić kod z tego artykułu bez konieczności instalowania narzędzi w środowisku lokalnym, można użyć wstępnie zainstalowanych poleceń środowiska Cloud Shell.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Aby uruchomić środowisko Azure Cloud Shell:To start Azure Cloud Shell:

OpcjaOption Przykład/linkExample/Link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu.Select Try It in the upper-right corner of a code block. Wybranie pozycji Wypróbuj nie spowoduje automatycznego skopiowania kodu do środowiska Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Przykład funkcji Wypróbuj w środowisku Azure Cloud Shell
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Uruchamianie środowiska Cloud Shell w nowym oknieLaunch Cloud Shell in a new window
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Przycisk Cloud Shell w witrynie Azure Portal

Aby uruchomić kod z tego artykułu w środowisku Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.Start Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu, aby skopiować kod.Select the Copy button on a code block to copy the code.

  3. Wklej kod w sesji Cloud Shell, naciskając klawisze Ctrl+Shift+V w systemach Windows i Linux lub klawisze Cmd+Shift+V w systemie macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Naciśnij klawisz Enter, aby uruchomić kod.Select Enter to run the code.

Dodawanie rozszerzenia usługi Azure IoTAdd Azure IoT Extension

Uruchom następujące polecenie, aby dodać rozszerzenie IoT Microsoft Azure dla interfejsu wiersza polecenia platformy Azure do wystąpienia Cloud Shell.Run the following command to add the Microsoft Azure IoT Extension for Azure CLI to your Cloud Shell instance. Rozszerzenie IoT dodaje do interfejsu wiersza polecenia platformy Azure polecenia specyficzne dla usług IoT Hub, IoT Edge oraz IoT Device Provisioning Service (DPS).The IoT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS) specific commands to Azure CLI.

az extension add --name azure-iot

Uwaga

W tym artykule jest stosowana Najnowsza wersja rozszerzenia usługi Azure IoT o nazwie azure-iot .This article uses the newest version of the Azure IoT extension, called azure-iot. Starsza wersja jest wywoływana azure-cli-iot-ext . W danym momencie powinna być zainstalowana tylko jedna wersja.The legacy version is called azure-cli-iot-ext.You should only have one version installed at a time. Za pomocą polecenia można az extension list sprawdzić poprawność zainstalowanych rozszerzeń.You can use the command az extension list to validate the currently installed extensions.

Służy az extension remove --name azure-cli-iot-ext do usuwania starszej wersji rozszerzenia.Use az extension remove --name azure-cli-iot-ext to remove the legacy version of the extension.

Użyj az extension add --name azure-iot , aby dodać nową wersję rozszerzenia.Use az extension add --name azure-iot to add the new version of the extension.

Aby zobaczyć, jakie rozszerzenia zostały zainstalowane, użyj programu az extension list .To see what extensions you have installed, use az extension list.

Tworzenie centrum IoT HubCreate an IoT hub

Jeśli ukończono poprzedni przewodnik Szybki start: wysyłanie danych telemetrycznych z urządzenia do centrum IoT, możesz pominąć ten krok.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

W tej sekcji opisano, jak utworzyć centrum IoT przy użyciu witryny Azure Portal.This section describes how to create an IoT hub using the Azure portal.

  1. Zaloguj się w witrynie Azure Portal.Sign in to the Azure portal.

  2. Na stronie głównej platformy Azure wybierz przycisk + Utwórz zasób , a następnie wprowadź IoT Hub w polu Wyszukaj w portalu Marketplace .From the Azure homepage, select the + Create a resource button, and then enter IoT Hub in the Search the Marketplace field.

  3. Wybierz IoT Hub z wyników wyszukiwania, a następnie wybierz pozycję Utwórz.Select IoT Hub from the search results, and then select Create.

  4. Na karcie podstawowe Wypełnij pola w następujący sposób:On the Basics tab, complete the fields as follows:

    • Subskrypcja: wybierz subskrypcję, która ma być używana przez centrum.Subscription: Select the subscription to use for your hub.

    • Grupa zasobów: Wybierz grupę zasobów lub Utwórz nową.Resource Group: Select a resource group or create a new one. Aby utworzyć nowy, wybierz pozycję Utwórz nową i wprowadź nazwę, której chcesz użyć.To create a new one, select Create new and fill in the name you want to use. Aby użyć istniejącej grupy zasobów, wybierz tę grupę zasobów.To use an existing resource group, select that resource group. Aby uzyskać więcej informacji, zobacz Zarządzanie grupami zasobów usługi Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    • Region: Wybierz region, w którym ma się znajdować centrum.Region: Select the region in which you want your hub to be located. Wybierz lokalizację znajdującą się najbliżej siebie.Select the location closest to you. Niektóre funkcje, takie jak IoT Hub strumienie urządzeń, są dostępne tylko w określonych regionach.Some features, such as IoT Hub device streams, are only available in specific regions. W przypadku tych ograniczonych funkcji należy wybrać jeden z obsługiwanych regionów.For these limited features, you must select one of the supported regions.

    • Nazwa IoT Hub: Wprowadź nazwę centrum.IoT Hub Name: Enter a name for your hub. Ta nazwa musi być unikatowa w skali globalnej.This name must be globally unique. Jeśli wprowadzona nazwa jest dostępna, zostanie wyświetlony zielony znacznik wyboru.If the name you enter is available, a green check mark appears.

    Ważne

    Ponieważ Centrum IoT będzie publicznie wykrywalne jako punkt końcowy usługi DNS, pamiętaj o uniknięciu wprowadzania informacji poufnych lub identyfikowalnych przez użytkownika podczas jego nazywania.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

    Tworzenie centrum w Azure Portal

  5. Wybierz pozycję Dalej: rozmiar i skala , aby kontynuować tworzenie centrum.Select Next: Size and scale to continue creating your hub.

    Ustawianie rozmiaru i skali nowego centrum przy użyciu Azure Portal

    W tym miejscu możesz zaakceptować ustawienia domyślne.You can accept the default settings here. W razie potrzeby można zmodyfikować dowolne z następujących pól:If desired, you can modify any of the following fields:

    • Cennik i warstwa skalowania: wybrana warstwa.Pricing and scale tier: Your selected tier. Możesz wybrać jedną z wielu warstw, w zależności od liczby potrzebnych funkcji i liczby komunikatów wysyłanych przez Twoje rozwiązanie dziennie.You can choose from several tiers, depending on how many features you want and how many messages you send through your solution per day. Warstwa Bezpłatna służy do testowania i oceny.The free tier is intended for testing and evaluation. Umożliwia podłączenie 500 urządzeń do centrum oraz do 8 000 komunikatów dziennie.It allows 500 devices to be connected to the hub and up to 8,000 messages per day. Każda subskrypcja platformy Azure może utworzyć jedno Centrum IoT Hub w warstwie Bezpłatna.Each Azure subscription can create one IoT hub in the free tier.

      Jeśli pracujesz za pomocą usługi szybki start dla IoT Hub strumieni urządzeń, wybierz warstwę bezpłatna.If you are working through a Quickstart for IoT Hub device streams, select the free tier.

    • Jednostki centrum IoT: liczba dozwolonych komunikatów na jednostkę dziennie zależy od warstwy cenowej centrum.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Na przykład jeśli chcesz, aby koncentrator obsługiwał ruch przychodzący z 700 000 komunikatów, wybierz dwie jednostki warstwy S1.For example, if you want the hub to support ingress of 700,000 messages, you choose two S1 tier units. Aby uzyskać szczegółowe informacje na temat innych opcji warstw, zobacz Choosing the right IoT Hub tier (Wybieranie właściwej warstwy usługi IoT Hub).For details about the other tier options, see Choosing the right IoT Hub tier.

    • Azure Security Center: Włącz tę opcję, aby dodać dodatkową warstwę ochrony przed zagrożeniami do IoT i urządzeń.Azure Security Center: Turn this on to add an extra layer of threat protection to IoT and your devices. Ta opcja jest niedostępna dla centrów w warstwie Bezpłatna.This option is not available for hubs in the free tier. Aby uzyskać więcej informacji na temat tej funkcji, zobacz Azure Security Center for IoT.For more information about this feature, see Azure Security Center for IoT.

    • Ustawienia zaawansowane > Partycje między urządzeniami a chmurą: Ta właściwość wiąże komunikaty z urządzenia z chmurą z liczbą jednoczesnych czytników komunikatów.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. Większość centrów potrzebuje tylko czterech partycji.Most hubs need only four partitions.

  6. Wybierz pozycję Dalej: Tagi , aby przejść do następnego ekranu.Select Next: Tags to continue to the next screen.

    Tagi to pary nazwa/wartość.Tags are name/value pairs. Można przypisać ten sam tag do wielu zasobów i grup zasobów, aby klasyfikować zasoby i konsolidować rozliczenia.You can assign the same tag to multiple resources and resource groups to categorize resources and consolidate billing. Aby uzyskać więcej informacji, zobacz Używanie tagów do organizowania zasobów platformy Azure.For more information, see Use tags to organize your Azure resources.

    Przypisywanie tagów dla centrum przy użyciu Azure Portal

  7. Wybierz pozycję Dalej: Przejrzyj i Utwórz , aby przejrzeć wybrane opcje.Select Next: Review + create to review your choices. Zobaczysz coś podobnego do tego ekranu, ale z wartościami wybranymi podczas tworzenia centrum.You see something similar to this screen, but with the values you selected when creating the hub.

    Przejrzyj informacje dotyczące tworzenia nowego centrum

  8. Wybierz pozycję Utwórz , aby utworzyć nowe centrum.Select Create to create your new hub. Utworzenie centrum zajmuje kilka minut.Creating the hub takes a few minutes.

Rejestrowanie urządzeniaRegister a device

Jeśli ukończono poprzedni przewodnik Szybki start: wysyłanie danych telemetrycznych z urządzenia do centrum IoT, możesz pominąć ten krok.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

Zanim urządzenie będzie mogło nawiązać połączenie, należy je najpierw zarejestrować w centrum IoT.A device must be registered with your IoT hub before it can connect. W tym przewodniku Szybki start opisano rejestrowanie urządzenia symulowanego przy użyciu usługi Azure Cloud Shell.In this quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Uruchom następujące polecenie w Azure Cloud Shell, aby utworzyć tożsamość urządzenia.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName: zamień ten symbol zastępczy poniżej na wybraną nazwę centrum IoT Hub.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyNodeDevice: jest to nazwa urządzenia, które jest rejestrowany.MyNodeDevice: This is the name of the device you're registering. Zaleca się użycie MyNodeDevice , jak pokazano.It's recommended to use MyNodeDevice as shown. W przypadku wybrania innej nazwy dla urządzenia należy również użyć tej nazwy w tym artykule i zaktualizować nazwę urządzenia w przykładowych aplikacjach przed ich uruchomieniem.If you choose a different name for your device, you also need to use that name throughout this article, and update the device name in the sample applications before you run them.

    az iot hub device-identity create \
      --hub-name {YourIoTHubName} --device-id MyNodeDevice
    
  2. Uruchom następujące polecenia w usłudze Azure Cloud Shell, aby uzyskać parametry połączenia urządzenia dla urządzenia, które właśnie zostało zarejestrowane:Run the following commands in Azure Cloud Shell to get the device connection string for the device you just registered:

    YourIoTHubName: zamień ten symbol zastępczy poniżej na wybraną nazwę centrum IoT Hub.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub device-identity show-connection-string \
      --hub-name {YourIoTHubName} \
      --device-id MyNodeDevice \
      --output table
    

    Zanotuj parametry połączenia urządzenia, które są następujące:Make a note of the device connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    Użyjesz tej wartości w dalszej części tego przewodnika Szybki start.You use this value later in the quickstart.

  3. Potrzebne będą także parametry połączenia usługi, aby umożliwić aplikacji zaplecza nawiązywanie połączenia z centrum IoT i pobieranie komunikatów.You also need a service connection string to enable the back-end application to connect to your IoT hub and retrieve the messages. Następujące polecenie pobiera parametry połączenia usługi dla centrum IoT:The following command retrieves the service connection string for your IoT hub:

    YourIoTHubName: zamień ten symbol zastępczy poniżej na wybraną nazwę centrum IoT Hub.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub show-connection-string \
      --policy-name service --name {YourIoTHubName} --output table
    
    

    Zanotuj parametry połączenia usługi, które wyglądają następująco:Make a note of the service connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

    Użyjesz tej wartości w dalszej części tego przewodnika Szybki start.You use this value later in the quickstart. Te parametry połączenia z usługą różnią się od parametrów połączenia urządzenia zanotowanych w poprzednim kroku.This service connection string is different from the device connection string you noted in the previous step.

Nasłuchiwanie wywołań metod bezpośrednichListen for direct method calls

Aplikacja urządzenia symulowanego łączy się z punktem końcowym właściwym dla urządzenia w centrum IoT, wysyła symulowane dane telemetryczne i nasłuchuje wywołań metod bezpośrednich z centrum.The simulated device application connects to a device-specific endpoint on your IoT hub, sends simulated telemetry, and listens for direct method calls from your hub. W tym przewodniku Szybki start wywołanie metody bezpośredniej z centrum nakazuje urządzeniu zmienić interwał wysyłania danych telemetrycznych.In this quickstart, the direct method call from the hub tells the device to change the interval at which it sends telemetry. Symulowane urządzenie wysyła potwierdzenie z powrotem do centrum po wykonaniu metody bezpośredniej.The simulated device sends an acknowledgment back to your hub after it executes the direct method.

  1. W lokalnym oknie terminalu przejdź do folderu głównego przykładowego projektu Node.js.In a local terminal window, navigate to the root folder of the sample Node.js project. Następnie przejdź do folderu iot-hub\Quickstarts\simulated-device-2.Then navigate to the iot-hub\Quickstarts\simulated-device-2 folder.

  2. Otwórz plik SimulatedDevice.js w wybranym edytorze tekstów.Open the SimulatedDevice.js file in a text editor of your choice.

    Zastąp wartość connectionString zmiennej parametrami połączenia urządzenia, które zostały wykonane wcześniej w notatce.Replace the value of the connectionString variable with the device connection string you made a note of earlier. Następnie Zapisz zmiany w SimulatedDevice.js.Then save your changes to SimulatedDevice.js.

  3. W lokalnym oknie terminalu uruchom następujące polecenia, aby zainstalować wymagane biblioteki i uruchomić aplikację urządzenia symulowanego:In the local terminal window, run the following commands to install the required libraries and run the simulated device application:

    npm install
    node SimulatedDevice.js
    

    Poniższy zrzut ekranu przedstawia dane wyjściowe w momencie wysyłania przez aplikację urządzenia symulowanego danych telemetrycznych do centrum IoT:The following screenshot shows the output as the simulated device application sends telemetry to your IoT hub:

    Uruchamianie urządzenia symulowanego

Wywoływanie metody bezpośredniejCall the direct method

Aplikacja zaplecza łączy się z punktem końcowym po stronie usługi w usłudze IoT Hub.The back-end application connects to a service-side endpoint on your IoT Hub. Aplikacja wykonuje bezpośrednie wywołania metody do urządzenia za pośrednictwem Centrum IoT Hub i nasłuchuje pod kątem potwierdzeń.The application makes direct method calls to a device through your IoT hub and listens for acknowledgments. Aplikacja zaplecza usługi IoT Hub zwykle działa w chmurze.An IoT Hub back-end application typically runs in the cloud.

  1. Otwórz inne lokalne okno terminalu i przejdź do folderu głównego przykładowego projektu Node.js.In another local terminal window, navigate to the root folder of the sample Node.js project. Następnie przejdź do folderu iot-hub\Quickstarts\back-end-application.Then navigate to the iot-hub\Quickstarts\back-end-application folder.

  2. Otwórz plik BackEndApplication.js w wybranym edytorze tekstów.Open the BackEndApplication.js file in a text editor of your choice.

    Zastąp wartość connectionString zmiennej parametrami połączenia usługi, które zostały wykonane wcześniej w notatce.Replace the value of the connectionString variable with the service connection string you made a note of earlier. Następnie Zapisz zmiany w BackEndApplication.js.Then save your changes to BackEndApplication.js.

  3. W lokalnym oknie terminalu uruchom następujące polecenia, aby zainstalować wymagane biblioteki i uruchomić aplikację zaplecza:In the local terminal window, run the following commands to install the required libraries and run the back-end application:

    npm install
    node BackEndApplication.js
    

    Na poniższym zrzucie ekranu przedstawiono dane wyjściowe, gdy aplikacja wysyła wywołanie metody bezpośredniej do urządzenia i otrzymuje potwierdzenie:The following screenshot shows the output as the application makes a direct method call to the device and receives an acknowledgment:

    Dane wyjściowe, gdy aplikacja wykonuje bezpośrednie wywołanie metody do urządzenia

    Po uruchomieniu aplikacji zaplecza zobaczysz komunikat w oknie konsoli uruchomionym na urządzeniu symulowanym, a także zobaczysz, że zmienia się prędkość wysyłania komunikatów:After you run the back-end application, you see a message in the console window running the simulated device, and the rate at which it sends messages changes:

    Dane wyjściowe w przypadku zmiany w symulowanym kliencie

Oczyszczanie zasobówClean up resources

Jeśli zamierzasz przejść do kolejnego zalecanego artykułu, możesz zachować już utworzone zasoby i użyć ich ponownie.If you will be continuing to the next recommended article, you can keep the resources you've already created and reuse them.

W przeciwnym razie możesz usunąć zasoby platformy Azure utworzone w tym artykule, aby uniknąć naliczania opłat.Otherwise, you can delete the Azure resources created in this article to avoid charges.

Ważne

Usunięcie grupy zasobów jest nieodwracalne.Deleting a resource group is irreversible. Grupa zasobów oraz wszystkie zawarte w niej zasoby zostaną trwale usunięte.The resource group and all the resources contained in it are permanently deleted. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów.Make sure that you do not accidentally delete the wrong resource group or resources. Jeśli usługa IoT Hub została utworzona wewnątrz istniejącej grupy zasobów zawierającej zasoby, które chcesz zachować, zamiast usuwać całą grupę zasobów, usuń tylko zasób usługi IoT Hub.If you created the IoT Hub inside an existing resource group that contains resources you want to keep, only delete the IoT Hub resource itself instead of deleting the resource group.

Aby usunąć grupę zasobów na podstawie nazwy:To delete a resource group by name:

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.Sign in to the Azure portal and select Resource groups.

  2. W polu tekstowym Filtruj według nazwy wpisz nazwę grupy zasobów zawierającej IoT Hub.In the Filter by name textbox, type the name of the resource group containing your IoT Hub.

  3. Z prawej strony grupy zasobów na liście wynik wybierz pozycję ... , a następnie Usuń grupę zasobów.To the right of your resource group in the result list, select ... then Delete resource group.

    Usuń

  4. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów.You will be asked to confirm the deletion of the resource group. Wpisz ponownie nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.Type the name of your resource group again to confirm, and then select Delete. Po krótkim czasie grupa zasobów i wszystkie zawarte w niej zasoby zostaną usunięte.After a few moments, the resource group and all of its contained resources are deleted.

Następne krokiNext steps

W tym przewodniku Szybki start wywołano metodę bezpośrednią na urządzeniu z aplikacji zaplecza oraz odpowiedziano na wywołanie metody bezpośredniej w aplikacji urządzenia symulowanego.In this quickstart, you called a direct method on a device from a back-end application, and responded to the direct method call in a simulated device application.

Aby dowiedzieć się, jak przekierowywać komunikaty urządzenie-chmura do innych miejsc docelowych w chmurze, przejdź do następnego samouczka.To learn how to route device-to-cloud messages to different destinations in the cloud, continue to the next tutorial.