Краткое руководство. Взаимодействие с приложениями устройств в C# с помощью потоков устройств Центра Интернета вещей (предварительная версия)Quickstart: Communicate to device applications in C# 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. Краткое руководство включает две программы C#, использующие потоки устройств для обмена данными (вывод на экран).This quickstart involves two C# programs that leverage device streams to send data back and forth (echo).

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

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. В Cloud Shell предварительно установлены и настроены общие инструменты Azure для использования с вашей учетной записью.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Нажмите кнопку Копировать, чтобы скопировать код. Вставьте его в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить код.Select Copy to copy the code, paste it in Cloud Shell, and then press Enter to run it. Cloud Shell можно открыть разными способами:There are a few ways to open Cloud Shell:

Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Откройте Cloud Shell в браузере.Open Cloud Shell in your browser. Запуск кнопки Azure Cloud ShellLaunch Azure Cloud Shell button
Нажмите кнопку меню 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

Примеры приложений, запускаемые в рамках этого краткого руководства, написаны на языке C#.The two sample applications you run in this quickstart are written using C#. На компьютере, на котором ведется разработка, необходимо установить пакет SDK для .NET Core версии 2.1.0 или более поздней.You need the .NET Core SDK 2.1.0 or greater on your development machine.

Пакет SDK для .NET Core, предназначенный для нескольких платформ, можно загрузить из .NET.You can download the .NET Core SDK for multiple platforms from .NET.

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

dotnet --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

Скачайте пример проекта C# по ссылке https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/master.zip и извлеките ZIP-архив.Download the sample C# project from https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/master.zip and extract the ZIP archive. Он понадобится на стороне устройства и стороне службы.You will need it on both device and service side.

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

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

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

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

  3. Нажмите кнопку Центр Интернета вещей в списке справа.Click Iot Hub from the list on the right. Появится первый экран для создания Центра Интернета вещей.You see the first screen for creating an IoT hub.

    Снимок экрана создания концентратора на портале Azure

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

    Подписка: Выберите нужную подписку для Центра Интернета вещей.Subscription: Select the subscription to use for your IoT hub.

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

    Регион. Выберите регион, в котором будет расположен Центр Интернета вещей.Region: This is 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.

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

    Важно!

    Центр Интернета вещей будет общедоступным в качестве конечной точки DNS, поэтому не используйте конфиденциальную информацию, когда присваиваете ему имя.The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

  4. Щелкните Далее: Size and scale (Далее: размер и масштаб), чтобы продолжить создание Центра Интернета вещей.Click Next: Size and scale to continue creating your IoT hub.

    Снимок экрана, где показаны параметры размера и масштаба для нового Центра Интернета вещей на портале Azure

    На этом экране можно оставить значения по умолчанию и просто выбрать Review + create (Просмотреть и создать) внизу.On this screen, you can take the defaults and just click Review + create at the bottom.

    Ценовая категория и категория масштабирования. Убедитесь, что выбран один стандартный (S1, S2, S3) или бесплатный (F1) уровень.Pricing and scale tier: Ensure you select one of the standard (S1, S2, S3) or the Free (F1) tier. Также этот выбор может основываться на размере вашего парка и характеристиках непотоковых рабочих нагрузок, которые будут выполняться в Центре Интернета вещей (например, сообщения телеметрии).This choice can also be guided by the size of your fleet and the non-streaming workloads you expect in your hub (e.g., 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.

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

    Дополнительные сведения о других параметрах уровня см. в статье Масштабирование решения для Центра Интернета вещей.For details about the other tier options, see Choosing the right IoT Hub tier.

  5. Нажмите кнопку Review + create (Просмотреть и создать), чтобы просмотреть выбранные параметры.Click Review + create to review your choices. Отобразится примерно следующий экран.You see something similar to this screen.

    Снимок экрана, где показана информация для создания центра Интернета вещей

  6. Нажмите кнопку Создать, чтобы создать центр Интернета вещей.Click Create to create your new IoT hub. Создание центра занимает несколько минут.Creating the hub takes a few minutes.

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

Устройство должно быть зарегистрировано в Центре Интернета вещей, прежде чем оно сможет подключиться.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 choose 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. Выполните следующую команду в 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 choose for your IoT hub.

    az iot hub device-identity show-connection-string --hub-name YourIoTHubName --device-id MyDevice --output table
    

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

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

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

  3. Понадобится также строка подключения к службе из Центра Интернета вещей, чтобы включить приложение на стороне службы для подключения к Центру Интернета вещей и установить потоки устройств.You also need the service connection string from your IoT hub to enable the service-side application to connect to your IoT hub and establish a device stream. Следующая команда получает это значение для Центра Интернета вещей:The following command retrieves this value for your IoT hub:

    YourIoTHubName. Замените этот заполнитель именем вашего Центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you choose 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

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

Перейдите к iot-hub/Quickstarts/device-streams-echo/service в распакованной папке проекта.Navigate to iot-hub/Quickstarts/device-streams-echo/service in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя параметраParameter name Значение параметраParameter value
ServiceConnectionString Предоставляет строку подключения к службе Центра Интернета вещей.Provide the service connection string of your IoT Hub.
DeviceId Предоставляет идентификатор устройства, созданного ранее, например MyDevice.Provide the ID of the device you created earlier, for example, MyDevice.

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-echo/service/

# Build the application
dotnet build

# Run the application
# In Linux/MacOS
dotnet run "<ServiceConnectionString>" "<MyDevice>"

# In Windows
dotnet run <ServiceConnectionString> <MyDevice>

Примечание

Происходит превышение времени ожидания, если приложения на стороне устройства не отвечает вовремя.A timeout occurs if the device-side application doesn't respond in time.

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

Перейдите к каталогу iot-hub/Quickstarts/device-streams-echo/device в распакованной папке проекта.Navigate to iot-hub/Quickstarts/device-streams-echo/device directory in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя параметраParameter name Значение параметраParameter value
DeviceConnectionString Предоставляет строку подключения к устройства к Центру Интернета вещей.Provide the device connection string of your IoT Hub.

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-echo/device/

# Build the application
dotnet build

# Run the application
# In Linux/MacOS
dotnet run "<DeviceConnectionString>"

# In Windows
dotnet run <DeviceConnectionString>

После последнего шага программа на стороне службы инициирует поток к устройству и после установления соединения отправит службе через поток строковый буфер.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. В этом примере программа на стороне службы просто возвращает те же данные устройству, демонстрируя успешную двустороннюю связь между двумя приложениями.In this sample, the service-side program simply echoes back the same data to the device, demonstrating successful bidirectional communication between the two applications. Смотрите рисунок, приведенный ниже.See figure below.

Выходные данные консоли на стороне устройства: замещающий текстConsole output on the device-side: alt text

Выходные данные консоли на стороне службы: замещающий текстConsole output on the service-side: alt text

Трафик, передаваемый по потоку, будет туннелироваться через Центр Интернета вещей, а не напрямую.The traffic being sent over the stream will be tunneled through IoT Hub rather than being sent directly. Это обеспечивает такие преимущества.This provides these benefits.

Очистка ресурсов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 click 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, click ... 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 click Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all of its contained resources are deleted.

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

В этом кратком руководстве вы настроили Центр Интернета вещей, зарегистрировали устройство, установили поток устройств между приложением C# на стороне устройства и службы и использовали поток для обмена данными между приложениями.In this quickstart, you have set up an IoT hub, registered a device, established a device stream between C# 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: