Краткое руководство. Управление подключенным к центру Интернета вещей устройством с использованием Node.jsQuickstart: Use Node.js to control a device connected to an Azure IoT hub

В этом кратком руководстве показано, как использовать прямой метод для управления имитированным устройством, подключенным к Центру Интернета вещей Azure.In this quickstart, you use a direct method to control a simulated device connected to Azure IoT Hub. Центр Интернета вещей — это служба Azure, которая позволяет управлять устройствами Интернета вещей из облака и принимать большие объемы телеметрии с устройств в облако для хранения или обработки.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. Этот метод позволяет удаленно изменить поведение подключенного к Центру Интернета вещей устройства.You can use direct methods to remotely change the behavior of a device connected to your IoT hub. При работе с этим кратким руководством используются два приложения Node.js: приложение имитированного устройства, которое реагирует на прямые методы, и внутреннее приложение, которое вызывает эти прямые методы на имитированном устройстве.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.

Предварительные требованияPrerequisites

  • Учетная запись Azure с активной подпиской.An Azure account with an active subscription. Создайте бесплатно.Create one for free.

  • Node.js версии 10 и выше.Node.js 10+.

    Текущую версию Node.js на компьютере, на котором ведется разработка, можно проверить, используя следующую команду:You can verify the current version of Node.js on your development machine using the following command:

    node --version
    
  • Пример проекта Node.js.A sample Node.js project.

  • Порт 8883, открытый в брандмауэре.Port 8883 open in your firewall. Пример устройства в этом кратком руководстве использует протокол MQTT, который передает данные через порт 8883.The device sample in this quickstart uses MQTT protocol, which communicates over port 8883. В некоторых корпоративных и академических сетях этот порт может быть заблокирован.This port may be blocked in some corporate and educational network environments. Дополнительные сведения и способы устранения этой проблемы см. в разделе о подключении к Центру Интернета вещей по протоколу MQTT.For more information and ways to work around this issue, see Connecting to IoT Hub (MQTT).

  • Используйте среду Bash в Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Запуск Cloud Shell в новом окнеLaunch Cloud Shell in a new window

  • При необходимости установите Azure CLI, чтобы выполнять справочные команды CLI.If you prefer, install the Azure CLI to run CLI reference commands.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала.To finish the authentication process, follow the steps displayed in your terminal. Сведения о дополнительных возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.For additional sign-in options, see Sign in with the Azure CLI.

    • Если появится запрос, установите расширения Azure CLI при первом использовании.When you're prompted, install Azure CLI extensions on first use. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.For more information about extensions, see Use extensions with the Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки.Run az version to find the version and dependent libraries that are installed. Чтобы обновиться до последней версии, выполните команду az upgrade.To upgrade to the latest version, run az upgrade.

Примечание

В этой статье используется последняя версия расширения Azure IoT под названием azure-iot.This article uses the newest version of the Azure IoT extension, called azure-iot. Прежняя версия называется azure-cli-iot-ext. В каждый момент времени должна быть установлена только одна версия.The legacy version is called azure-cli-iot-ext.You should only have one version installed at a time. Проверить установленные расширения можно с помощью команды az extension list.You can use the command az extension list to validate the currently installed extensions.

Используйте az extension remove --name azure-cli-iot-ext, чтобы удалить устаревшую версию расширения.Use az extension remove --name azure-cli-iot-ext to remove the legacy version of the extension.

Используйте az extension add --name azure-iot, чтобы добавить новую версию расширения.Use az extension add --name azure-iot to add the new version of the extension.

Чтобы узнать, какие расширения установлены, используйте az extension list.To see what extensions you have installed, use az extension list.

Создание Центра Интернета вещейCreate an IoT hub

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, этот шаг можно пропустить.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

В этом разделе описывается создание центра Интернета вещей с помощью портала Azure.This section describes how to create an IoT hub using the Azure portal.

  1. Войдите на портал Azure.Sign in to the Azure portal.

  2. На начальной странице портала Azure нажмите кнопку +Создать ресурс и введите текст Центр Интернета вещей в поле поиска в Marketplace.From the Azure homepage, select the + Create a resource button, and then enter IoT Hub in the Search the Marketplace field.

  3. В результатах поиска выберите Центр Интернета вещей и щелкните Создать.Select IoT Hub from the search results, and then select Create.

  4. Заполните следующие поля на вкладке Основные сведения.On the Basics tab, complete the fields as follows:

    • Подписка: Выберите нужную подписку для концентратора.Subscription: Select the subscription to use for your hub.

    • Группа ресурсов. Выберите группу ресурсов или создайте новую.Resource Group: Select a resource group or create a new one. Чтобы создать новую, щелкните Создать и введите нужное имя.To create a new one, select Create new and fill in the name you want to use. Чтобы выбрать существующую группу ресурсов, щелкните ее.To use an existing resource group, select that resource group. Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    • Регион. Выберите регион, в котором будет расположен концентратор.Region: Select the region in which you want your hub to be located. Выберите ближайшее к вам расположение.Select the location closest to you. Некоторые функции, такие как потоки устройств Центра Интернета вещей, доступны только в определенных регионах.Some features, such as IoT Hub device streams, are only available in specific regions. Для функций с такими ограничениями необходимо выбрать один из поддерживаемых регионов.For these limited features, you must select one of the supported regions.

    • Имя Центра Интернета вещей. Введите имя для концентратора.IoT Hub Name: Enter a name for your hub. Оно должно быть глобально уникальным.This name must be globally unique.

    Важно!

    Так как центр Интернета вещей будет общедоступен в качестве конечной точки DNS, убедитесь, что в его имени не фигурируют конфиденциальные или персональные сведения.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.

    Создание центра на портале Azure.

  5. По завершении выберите Next: Networking (Далее: сеть), чтобы продолжить создание центра.Select Next: Networking to continue creating your hub.

    Выберите, какие конечные точки могут подключаться к Центру Интернета вещей.Choose the endpoints that can connect to your IoT Hub. Можете выбрать параметр по умолчанию Общедоступная конечная точка (все сети) либо выбрать Общедоступная конечная точка (выбранные диапазоны IP-адресов) или Частная конечная точка.You can select the default setting Public endpoint (all networks), or choose Public endpoint (selected IP ranges), or Private endpoint. Для нашего примера примите параметр по умолчанию.Accept the default setting for this example.

    Выбор конечных точек для подключения.

  6. По завершении выберите Next: Management (Далее: управление), чтобы продолжить создание центра.Select Next: Management to continue creating your hub.

    Настройка параметров размера и масштаба для нового центра на портале Azure.

    Здесь вы можете принять настройки по умолчанию.You can accept the default settings here. При необходимости можете изменить любое из следующих полей:If desired, you can modify any of the following fields:

    • Ценовая категория и категория масштабирования. Выбранный уровень решения.Pricing and scale tier: Your selected tier. В зависимости от количества необходимых компонентов и ежедневно отправляемых сообщений с помощью решения, можно выбрать несколько уровней.You can choose from several tiers, depending on how many features you want and how many messages you send through your solution per day. Для тестирования и оценки можно использовать уровень "Бесплатный".The free tier is intended for testing and evaluation. Он позволяет подключить к концентратору 500 устройств и отправлять до 8000 сообщений в день.It allows 500 devices to be connected to the hub and up to 8,000 messages per day. Для каждой подписки Azure можно создать один центр Интернета вещей на уровне "Бесплатный".Each Azure subscription can create one IoT hub in the free tier.

      Если вы используете функцию "Быстрое начало" для потоков устройств Центра Интернета вещей, выберите уровень "Бесплатный".If you are working through a Quickstart for IoT Hub device streams, select the free tier.

    • Единицы центра Интернета вещей. Допустимое число сообщений за единицу в сутки зависит от ценовой категории концентратора.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Например, если концентратор должен поддерживать 700 000 входящих сообщений, следует выбрать две единицы уровня S1.For example, if you want the hub to support ingress of 700,000 messages, you choose two S1 tier units. Дополнительные сведения о других параметрах уровня см. в статье Масштабирование решения для Центра Интернета вещей.For details about the other tier options, see Choosing the right IoT Hub tier.

    • Defender для Интернета вещей. Включите это решение, чтобы обеспечить дополнительный уровень защиты от угроз для ваших устройств и устройств Интернета вещей.Defender for IoT: Turn this on to add an extra layer of threat protection to IoT and your devices. Этот параметр недоступен для концентраторов на уровне "Бесплатный".This option is not available for hubs in the free tier. Дополнительные сведения см. в документации по Центру безопасности Azure для Интернета вещей.For more information about this feature, see Azure Security Center for IoT.

    • Дополнительные параметры Settings > С устройства в облако: Это свойство привязывает сообщения, отправляемые с устройства в облако, к числу одновременно работающих модулей чтения этих сообщений.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. Для большинства концентраторов достаточно четырех разделов.Most hubs need only four partitions.

  7. По завершении выберите Next: Теги, чтобы перейти к следующему экрану.Select Next: Tags to continue to the next screen.

    Теги — это пары "имя — значение".Tags are name/value pairs. Один и тот же тег можно присвоить нескольким ресурсам и группам ресурсов для их классификации и объединения счетов.You can assign the same tag to multiple resources and resource groups to categorize resources and consolidate billing. Дополнительные сведения см. в статье Использование тегов для организации ресурсов в Azure.For more information, see Use tags to organize your Azure resources.

    Назначение тегов для центра с помощью портала Azure.

  8. По завершении выберите Next: Просмотр и создание, чтобы просмотреть выбранные параметры.Select Next: Review + create to review your choices. Отобразится примерно следующий экран только со значениями, которые вы задали при создании центра.You see something similar to this screen, but with the values you selected when creating the hub.

    Просмотр сведений при создании центра.

  9. Щелкните Создать, чтобы создать концентратор.Select Create to create your new hub. Создание центра занимает несколько минут.Creating the hub takes a few minutes.

Регистрация устройстваRegister a device

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, этот шаг можно пропустить.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

Устройство должно быть зарегистрировано в Центре Интернета вещей, прежде чем оно сможет подключиться.A device must be registered with your IoT hub before it can connect. В этом кратком руководстве для регистрации имитируемого устройства используется Azure Cloud Shell.In this quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Выполните приведенные ниже команды в Azure Cloud Shell, чтобы создать удостоверение устройства.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyNodeDevice. Это имя регистрируемого устройства.MyNodeDevice: This is the name of the device you're registering. Рекомендуется использовать MyNodeDevice, как показано ниже.It's recommended to use MyNodeDevice as shown. Если вы выбрали другое имя для устройства, используйте его при работе с этим руководством и обновите имя устройства в примерах приложений перед их запуском.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. Выполните следующую команду в Azure Cloud Shell, чтобы получить строку подключения зарегистрированного устройства:Run the following commands in Azure Cloud Shell to get the device connection string for the device you just registered:

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

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

    Запишите строку подключения устройства, которая выглядит так:Make a note of the device connection string, which looks like:

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

    Это значение понадобится позже в рамках этого краткого руководства.You use this value later in the quickstart.

  3. Чтобы разрешить внутреннему приложению подключаться к Центру Интернета вещей и получать сообщения, вам необходима строка подключения к службе.You also need a service connection string to enable the back-end application to connect to your IoT hub and retrieve the messages. Следующая команда извлекает строку подключения службы для Центра Интернета вещей:The following command retrieves the service connection string for your IoT hub:

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

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

    Запишите строку подключения к службе, которая выглядит так:Make a note of the service connection string, which looks like:

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

    Это значение понадобится позже в рамках этого краткого руководства.You use this value later in the quickstart. Строка подключения к службе отличается от строки подключения к устройству из предыдущего шага.This service connection string is different from the device connection string you noted in the previous step.

Ожидание передачи данных при вызове прямого методаListen for direct method calls

Приложение имитированного устройства подключается к конечной точке конкретного устройства в Центре Интернета вещей, отправляет имитированные данные телеметрии и ожидает передачи данных при вызове прямого метода из центра.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. В рамках этого краткого руководства вызов прямого метода из центра инициирует изменение интервала, с которым устройство отправляет данные телеметрии.In this quickstart, the direct method call from the hub tells the device to change the interval at which it sends telemetry. После выполнения прямого метода имитированное устройство отправляет подтверждение в центр.The simulated device sends an acknowledgment back to your hub after it executes the direct method.

  1. В окне терминала на локальном компьютере перейдите в корневую папку примера проекта Node.js.In a local terminal window, navigate to the root folder of the sample Node.js project. Затем перейдите в папку iot-hub\Quickstarts\simulated-device-2.Then navigate to the iot-hub\Quickstarts\simulated-device-2 folder.

  2. Откройте файл SimulatedDevice.js в любом текстовом редакторе.Open the SimulatedDevice.js file in a text editor of your choice.

    Замените значение переменной connectionString записанной ранее строкой подключения к устройству.Replace the value of the connectionString variable with the device connection string you made a note of earlier. Сохраните изменения в файле SimulatedDevice.js.Then save your changes to SimulatedDevice.js.

  3. Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне локального терминала следующие команды: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
    

    На следующем снимке экрана показан пример выходных данных, когда приложение имитированного устройства отправляет данные телеметрии в Центр Интернета вещей:The following screenshot shows the output as the simulated device application sends telemetry to your IoT hub:

    Запуск виртуального устройства

Вызов прямого методаCall the direct method

Внутреннее приложение подключается к конечной точке на стороне службы в Центре Интернета вещей.The back-end application connects to a service-side endpoint on your IoT Hub. Приложение выполняет вызовы прямых методов к устройству через Центр Интернета вещей и ожидает подтверждений.The application makes direct method calls to a device through your IoT hub and listens for acknowledgments. Внутреннее приложение Центра Интернета вещей обычно работает в облаке.An IoT Hub back-end application typically runs in the cloud.

  1. В другом окне терминала на локальном компьютере перейдите в корневую папку примера проекта Node.js.In another local terminal window, navigate to the root folder of the sample Node.js project. Затем перейдите в папку iot-hub\Quickstarts\back-end-application.Then navigate to the iot-hub\Quickstarts\back-end-application folder.

  2. Откройте файл BackEndApplication.js в любом текстовом редакторе.Open the BackEndApplication.js file in a text editor of your choice.

    Замените значение переменной connectionString записанной ранее строкой подключения к службе.Replace the value of the connectionString variable with the service connection string you made a note of earlier. Сохраните изменения в файле BackEndApplication.js.Then save your changes to BackEndApplication.js.

  3. Установите необходимые библиотеки и запустите внутреннее приложение, выполнив в окне локального терминала следующие команды: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
    

    На следующем снимке экрана показан пример выходных данных, когда приложение выполняет вызов прямого метода к устройству и получает подтверждение:The following screenshot shows the output as the application makes a direct method call to the device and receives an acknowledgment:

    Выходные данные при выполнении приложением прямого вызова метода на устройство

    После запуска внутреннего приложения в окне консоли, в котором выполняется имитированное устройство, отобразится сообщение и изменится интервал, с которым это приложение отправляет сообщения: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:

    Выходные данные при изменении в имитируемом клиенте

Очистка ресурсовClean up resources

Можно сохранить созданные ресурсы и повторно использовать их при выполнении задач в следующей рекомендуемой статье, если вы планируете перейти к ней.If you will be continuing to the next recommended article, you can keep the resources you've already created and reuse them.

Если нет, вы можете удалить ресурсы Azure, созданные в рамках этой статьи, чтобы избежать расходов.Otherwise, you can delete the Azure resources created in this article to avoid charges.

Важно!

Удаление группы ресурсов — процесс необратимый.Deleting a resource group is irreversible. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления.The resource group and all the resources contained in it are permanently deleted. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.Make sure that you do not accidentally delete the wrong resource group or resources. Если вы создали Центр Интернета вещей в группе ресурсов, содержащей ресурсы, которые нужно сохранить, удалите только ресурс Центра Интернета вещей, не удаляя всю группу ресурсов.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.

Удаление группы ресурсов по имени:To delete a resource group by name:

  1. Войдите в портал Azure и выберитеГруппы ресурсов.Sign in to the Azure portal and select Resource groups.

  2. В текстовое поле Фильтровать по имени введите имя группы ресурсов, содержащей Центр Интернета вещей.In the Filter by name textbox, type the name of the resource group containing your IoT Hub.

  3. Справа от своей группы ресурсов в списке результатов щелкните ... , а затем выберите Удалить группу ресурсов.To the right of your resource group in the result list, select ... then Delete resource group.

    DELETE

  4. Подтвердите операцию удаления группы ресурсов.You will be asked to confirm the deletion of the resource group. Снова введите имя группы ресурсов, которую необходимо удалить, и щелкните Удалить.Type the name of your resource group again to confirm, and then select Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all of its contained resources are deleted.

Дальнейшие действияNext steps

В рамках этого краткого руководства вы вызвали прямой метод на устройстве из внутреннего приложения, а также ответили на этот вызов в приложении имитированного устройства.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.

Чтобы узнать, как маршрутизировать сообщения с устройства в облако в разные расположения в облаке, перейдите к следующему руководству.To learn how to route device-to-cloud messages to different destinations in the cloud, continue to the next tutorial.