Краткое руководство. Взаимодействие с приложением устройства в Node.js с помощью потоков устройств Центра Интернета вещей (предварительная версия)Quickstart: Communicate to a device application in Node.js via IoT Hub device streams (preview)

Центр Интернета вещей Microsoft Azure поддерживает функцию "Потоки устройств", которая сейчас доступна в режиме предварительной версии.Microsoft Azure IoT Hub currently supports device streams as a preview feature.

Потоки устройств Центра Интернета вещей позволяют службам и приложениям устройств безопасным и подходящим методом обмениваться данными с брандмауэром.IoT Hub device streams allow service and device applications to communicate in a secure and firewall-friendly manner. На этапе предварительной версии пакет SDK для Node.js поддерживает только потоки устройств на стороне службы.During public preview, Node.js SDK only supports device streams on the service side. В результате это краткое руководство охватывает только инструкции по запуску приложения на стороне службы.As a result, this quickstart only covers instructions to run the service-side application. Вам потребуется запустить сопутствующее приложение на стороне устройства с помощью инструкций, приведенных в одном из следующих кратких руководств:You should run an accompanying device-side application from one of the following quickstarts:

Приложение Node.js на стороне службы, используемое в этом кратком руководстве, имеет следующие функции:The service-side Node.js application in this quickstart has the following functionalities:

  • создание потока устройств к устройству IoT;Creates a device stream to an IoT device.

  • считывание введенной в командную строку информации и отправка в приложение устройства, которое отправит ее обратно.Reads input from command line and sends it to the device application, which will echo it back.

Код продемонстрирует процесс инициализации потока устройств, а также его использование для отправки и получения данных.The code will demonstrate the initiation process of a device stream, as well as how to use it to send and receive data.

Открытие Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell — это интерактивная оболочка среды, размещенная в Azure и работающая в браузере.Azure Cloud Shell is an interactive shell environment hosted in Azure and used through your browse. Azure Cloud Shell позволяет использовать оболочку bash или PowerShell, чтобы запускать разнообразные инструменты для работы со службами Azure.Azure Cloud Shell allows you to use either bash or PowerShell shells to run a variety of tools to work with Azure services. Azure Cloud Shell поставляется со встроенными командами, с помощью которых можно запускать код в данной статье, не устанавливая дополнительные компоненты в локальной среде.Azure Cloud Shell comes pre-installed with the commands to allow you to run the content of this article without having to install anything on your local environment.

Для выполнения кода из этой статьи в Azure Cloud Shell откройте сеанс Cloud Shell, скопируйте блок кода с помощью кнопки Копировать и вставьте его в сеанс Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.To run any code contained in this article on Azure Cloud Shell, open a Cloud Shell session, use the Copy button on a code block to copy the code, and paste it into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS. Вставленный текст не выполняется автоматически, поэтому нажмите клавишу ВВОД для выполнения кода.Pasted text is not automatically executed, so press Enter to run code.

Запустить Azure Cloud Shell можно следующим образом.You can launch Azure Cloud Shell with:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При этом не выполняется автоматическое копирование текста в Cloud Shell.This doesn't automatically copy text to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Откройте Azure Cloud Shell в браузере.Open Azure Cloud Shell in your browser. <a href="https://shell.azure.com" title="Запуск Azure Cloud Shell
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Кнопка "Cloud Shell" на портале Azure

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don’t have an Azure subscription, create a free account before you begin.

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

Предварительная версия потоков устройств сейчас поддерживается только в Центрах Интернета вещей, созданных в следующих регионах.The preview of device streams is currently only supported for IoT Hubs created in the following regions:

  • Центральная часть СШАCentral US

  • Центральная часть США (EUAP)Central US EUAP

Для запуска приложения на стороне службы в этом руководстве вам понадобится Node.js 10.x.x или более поздней версии на компьютере разработчика.To run the service-side application in this quickstart you need Node.js v10.x.x or later on your development machine.

Node.js, предназначенный для нескольких платформ, можно скачать здесь: Nodejs.org.You can download Node.js for multiple platforms from Nodejs.org.

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

node --version

Выполните следующую команду, чтобы добавить расширение Интернета вещей Microsoft Azure для Azure CLI в экземпляр Cloud Shell.Run the following command to add the Microsoft Azure IoT Extension for Azure CLI to your Cloud Shell instance. Расширение Интернета вещей добавляет в Azure CLI специальные команды Центра Интернета вещей, IoT Edge и службы подготовки устройств Интернета вещей (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-cli-iot-ext

Если вы еще не сделали это, скачайте пример проекта Node.js по адресу https://github.com/Azure-Samples/azure-iot-samples-node/archive/streams-preview.zip и извлеките ZIP-архив.If you haven't already done so, download the sample Node.js project from https://github.com/Azure-Samples/azure-iot-samples-node/archive/streams-preview.zip and extract the ZIP archive.

Создание Центра Интернета вещей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 by using the Azure portal.

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

  2. Выберите Создать ресурс, а затем Интернет вещей.Select Create a resource, and then select Internet of Things.

  3. В списке справа выберите Центр Интернета вещей.In the list at the right, select Iot Hub. Откроется первая страница для создания центра Интернета вещей.The first page for creating an IoT hub opens.

    Создание центра Интернета вещей на портале Azure

    Заполните следующие поля.Fill in the fields:

    a.a. В раскрывающемся списке Подписка выберите нужную подписку для центра Интернета вещей.In the Subscription drop-down list, select the subscription to use for your IoT hub.

    b.b. Для группы ресурсов выполните одно из следующих действий.For Resource Group, do either of the following:

    • Чтобы создать группу ресурсов, щелкните Создать и укажите имя, которое вы хотите использовать.To create a new resource group, select Create new and enter the name you want to use.

    • Чтобы использовать существующую группу, выберите Использовать существующий, а затем группу ресурсов из раскрывающегося списка.To use an existing resource group, select Use existing and then, in the drop-down list, select the resource group.

      Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    c.c. В раскрывающемся списке Регион выберите регион, в котором будет расположен центр Интернета вещей.In the Region drop-down list, select the region in which you want your hub to be located. Выберите регион, который поддерживает функцию "Потоки устройств" центра Интернета вещей (предварительная версия). Это — Центральная часть США или Центральная часть США (EUAP) .Select a region that supports the IoT Hub device streams preview, either Central US or Central US EUAP.

    d.d. В поле Имя центра Интернета вещей введите имя центра Интернета вещей.In the IoT Hub Name box, enter the name for your IoT hub. Оно должно быть глобально уникальным.The name must be globally unique. Если введенное имя доступно, появится зеленая галочка.If the name you enter is available, a green check mark appears.

    Важно!

    Так как центр Интернета вещей будет общедоступен в качестве конечной точки 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.

  4. Чтобы продолжить создание центра Интернета вещей, выберите Далее: Размер и масштабирование.To continue creating your IoT hub, select Next: Size and scale.

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

    На этой панели вы можете принять настройки по умолчанию и щелкнуть Просмотр и создание внизу страницы.In this pane, you can accept the default settings and select Review + create at the bottom. Можно воспользоваться следующими вариантами:Consider the following options:

    • В раскрывающемся списке Ценовая категория и категория масштабирования выберите один из стандартных уровней (S1, S2, S3) или F1: Уровень "Бесплатный" .In the Pricing and scale tier drop-down list, select one of the standard tiers (S1, S2, or S3) or F1: Free tier. Также этот выбор может основываться на размере вашего парка и характеристиках непотоковых рабочих нагрузок, которые будут выполняться в центре Интернета вещей (например, сообщения телеметрии).This choice can also be guided by the size of your fleet and the non-streaming workloads that you expect in your hub (for example, telemetry messages). Например, для тестирования и оценки можно использовать бесплатный уровень.For example, the free tier is intended for testing and evaluation. Он позволяет подключить к Центру Интернета вещей 500 устройств и отправлять до 8000 сообщений в день.It allows 500 devices to be connected to the IoT hub and up to 8,000 messages per day. Для каждой подписки Azure можно создать один центр Интернета вещей на уровне "Бесплатный".Each Azure subscription can create one IoT hub in the free tier.

    • Для параметра Число единиц центра Интернета вещей этот выбор зависит от характеристик непотоковых рабочих нагрузок, которые будут выполняться в центре Интернета вещей.For Number of IoT Hub units: This choice depends on non-streaming workload you expect in your hub. Сейчас можно выбрать 1.You can select 1 for now.

    Дополнительную информацию о параметрах уровня см. в статье Choose the right IoT hub tier (Выбор правильного уровня центра Интернета вещей).For more information about tier options, see Choose the right IoT hub tier.

  5. Щелкните вкладку Просмотр и создание, чтобы просмотреть возможные варианты. Панель, которая откроется, будет выглядеть примерно следующим образом.To review your choices, select the Review + create tab. The pane that opens is similar to the following:

    Сведения о создании центра Интернета вещей

  6. Щелкните Создать, чтобы создать центр Интернета вещей.To create your new IoT hub, select Create. Процесс займет несколько минут.The process 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.

    MyDevice. Это имя, присвоенное зарегистрированному устройству.MyDevice: This is the name given for the registered device. Используйте имя MyDevice, как показано в примере.Use MyDevice as shown. Если вы выбрали другое имя для устройства, используйте его при работе с этим руководством и обновите имя устройства в примерах приложений перед их запуском.If you choose a different name for your device, you will 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 MyDevice
    
  2. Чтобы разрешить внутреннему приложению подключаться к Центру Интернета вещей и получать сообщения, вам необходима строка подключения к службе.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 show-connection-string --policy-name service --name YourIoTHubName
    

    Запомните или запишите возвращаемое значение, которое выглядит следующим образом:Make a note of the returned value, which looks like this:

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

Обмен данными между устройством и службой через потоки устройствCommunicate between device and service via device streams

В рамках этого раздела вы запустите приложения на стороне устройства и на стороне службы, а также настроите обмен данными между двумя этими приложениями.In this section, you run both the device-side application and the service-side application and communicate between the two.

Запуск приложения на стороне устройстваRun the device-side application

Как упоминалось ранее, пакет SDK для Node.js Центра Интернета вещей поддерживает только потоки устройств на стороне службы.As mentioned earlier, IoT Hub Node.js SDK only supports device streams on the service side. Для приложения на стороне устройства используйте сопутствующую программу устройства, которая доступна в одном из этих кратких руководств:For device-side application, use the accompanying device program available in one of these quickstarts:

Прежде чем перейти к следующему шагу, убедитесь, что приложение на стороне устройства запущено.Ensure the device-side application is running before proceeding to the next step.

Запуск приложения на стороне службыRun the service-side application

Если приложение на стороне устройства запущено, выполните следующие действия, чтобы запустить приложение на стороне службы в Node.js.Assuming the device-side application is running, follow the steps below to run the service-side application in Node.js:

  • Укажите свои учетные данные службы и идентификатор устройства в качестве переменных среды.Provide your service credentials and device ID as environment variables.

    # In Linux
    export IOTHUB_CONNECTION_STRING="<provide_your_service_connection_string>"
    export STREAMING_TARGET_DEVICE="MyDevice"
    
    # In Windows
    SET IOTHUB_CONNECTION_STRING=<provide_your_service_connection_string>
    SET STREAMING_TARGET_DEVICE=MyDevice
    

    Измените имя MyDevice на идентификатор выбранного вами устройства.Change MyDevice to the device ID you chose for your device.

  • Перейдите к папке Quickstarts/device-streams-service в распакованной папке проекта и запустите образец, используя узел.Navigate to Quickstarts/device-streams-service in your unzipped project folder and run the sample using node.

    cd azure-iot-samples-node-streams-preview/iot-hub/Quickstarts/device-streams-service
    
    # Install the preview service SDK, and other dependencies
    npm install azure-iothub@streams-preview
    npm install
    
    node echo.js
    

После последнего шага программа на стороне службы инициирует поток к устройству и после установления соединения отправит службе через поток строковый буфер.At the end of the last step, the service-side program will initiate a stream to your device and once established will send a string buffer to the service over the stream. В этом примере программа на стороне службы просто считывает данные из stdin, введенные в окне терминала, и отправляет на устройство, которое затем возвращает их обратно.In this sample, the service-side program simply reads the stdin on the terminal and sends it to the device, which will then echo it back. Это демонстрирует успешную двунаправленную связь между приложениями.This demonstrates successful bidirectional communication between the two applications.

Выходные данные консоли на стороне службы

Теперь можно завершить выполнение программы, повторно нажав клавишу ВВОД.You can then terminate the program by pressing enter again.

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

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

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

Важно!

Удаление группы ресурсов — процесс необратимый.Deleting a resource group is irreversible. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления.The resource group and all the resources contained in it are permanently deleted. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.Make sure that you don't accidentally delete the wrong resource group or resources. Если вы создали центр Интернета вещей в группе ресурсов, содержащей ресурсы, которые нужно сохранить, удалите только ресурс Центра Интернета вещей, не удаляя всю группу ресурсов.If you created the IoT hub inside an existing resource group that contains resources that you want to keep, delete only the IoT hub resource itself, not the resource group.

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

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

  2. Введите в поле Фильтровать по имени имя группы ресурсов, содержащей центр Интернета вещей.In the Filter by name box, enter the name of the resource group that contains your IoT hub.

  3. В списке результатов справа от своей группы ресурсов щелкните многоточие ( ... ), а затем выберите Удалить группу ресурсов.In the result list, to the right of your resource group, select the ellipsis (...), and then select Delete resource group.

    Кнопка "Удалить группу ресурсов"

  4. Чтобы подтвердить удаление, повторно введите имя группы ресурсов и выберите Удалить.To confirm the deletion of the resource group, reenter the resource group name, and then select Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all its contained resources are deleted.

Дополнительная информацияNext steps

В этом кратком руководстве вы настроили Центр Интернета вещей, зарегистрировали устройство, установили поток устройств между приложением на стороне устройства и службы и использовали поток для обмена данными между приложениями.In this quickstart, you have set up an IoT hub, registered a device, established a device stream between applications on the device and service side, and used the stream to send data back and forth between the applications.

Используйте приведенные ниже ссылки для получения дополнительных сведений о потоках устройства:Use the links below to learn more about device streams:

IoT Hub Device Streams (preview) (Потоки устройств (предварительная версия))Device streams overview