Руководство по Проверка подключения к центру Интернета вещей с помощью имитированного устройстваTutorial: Use a simulated device to test connectivity with your IoT hub

В этом руководстве описано, как применять инструменты на портале Центра Интернета вещей Azure и команды Azure CLI для проверки возможности подключения устройств.In this tutorial, you use Azure IoT Hub portal tools and Azure CLI commands to test device connectivity. В этом руководстве используется простая имитация устройства, выполняемая на обычном компьютере.This tutorial also uses a simple device simulator that you run on your desktop machine.

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

Из этого руководства вы узнаете, как выполнять следующие задачи:In this tutorial, you learn how to:

  • проверка аутентификации устройств;Check your device authentication
  • проверка подключения с устройства в облако;Check device-to-cloud connectivity
  • проверка подключения из облака на устройство;Check cloud-to-device connectivity
  • проверка синхронизации двойников устройств.Check device twin synchronization

Открытие 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

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

Сценарии CLI, которые вы будете выполнять при работе с этим руководством, используют расширение Интернета вещей Microsoft Azure для Azure CLI.The CLI scripts you run in this tutorial use the Microsoft Azure IoT Extension for Azure CLI. Чтобы установить это расширение, выполните следующую команду CLI:To install this extension, run the following CLI command:

az extension add --name azure-cli-iot-ext

Приложение имитации устройства, которое вы выполните в этом руководстве, создано на основе Node.js.The device simulator application you run in this tutorial is written using Node.js. Вам потребуется установить Node.js 4.x.x или более позднюю версию на компьютере для разработки.You need Node.js v4.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

Скачайте пример имитации устройства в виде проекта Node.js по адресу https://github.com/Azure-Samples/azure-iot-samples-node/archive/master.zip и разверните этот ZIP-архив.Download the sample device simulator Node.js project from https://github.com/Azure-Samples/azure-iot-samples-node/archive/master.zip and extract the ZIP archive.

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

Если вы уже создали Центр Интернета вещей бесплатной или стандартной категории при работе с любым предыдущим руководством, этот шаг можно пропустить.If you created a free or standard tier IoT hub in a previous quickstart or tutorial, you can skip this step.

Создание Центра Интернета вещей с помощью портала AzureTo create an IoT Hub using the Azure portal:

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

  2. Выберите Создать ресурс > Интернет вещей > Центр Интернета вещей.Select Create a resource > Internet of Things > IoT Hub.

    Выбор параметра для установки Центра Интернета вещей

  3. Чтобы создать Центр Интернета вещей бесплатного уровня, используйте значения из следующей таблицы:To create your free-tier IoT hub, use the values in the following tables:

    ПараметрSetting ЗначениеValue
    ПодпискаSubscription Выберите подписку Azure в раскрывающемся списке.Select your Azure subscription in the drop-down.
    Группа ресурсовResource group Создайте группу ресурсовCreate new. В этом руководстве используется имя tutorials-iot-hub-rg.This tutorial uses the name tutorials-iot-hub-rg.
    РегионRegion В этом руководстве используется Западная часть США.This tutorial uses West US. Вы можете выбрать ближайший к вам регион.You can choose the region closest to you.
    ИМЯName На следующем снимке экрана используется имя tutorials-iot-hub.The following screenshot uses the name tutorials-iot-hub. При создании Центра выберите собственное уникальное имя.You must choose your own unique name when you create your hub.

    Параметры Центра 1

    ПараметрSetting ЗначениеValue
    Ценовая категория и категория масштабированияPricing and scale tier Бесплатный F1.F1 Free. В подписке может быть только один Центр Интернета вещей категории бесплатный.You can only have one free tier hub in a subscription.
    Единицы Центра Интернета вещейIoT Hub units 11

    Параметры Центра 2

  4. Нажмите кнопку Создать.Click Create. Создание Центра может занять несколько минут.It can take several minutes for the hub to be created.

    Параметры Центра 3

  5. Запишите выбранное имя Центра Интернета вещей.Make a note of the IoT hub name you chose. Это значение используется далее в руководстве.You use this value later in the tutorial.

Проверка аутентификации устройствCheck device authentication

Прежде чем обмениваться данными с Центром Интернета вещей, устройство должно пройти на нем аутентификацию.A device must authenticate with your hub before it can exchange any data with the hub. Вы можете применить инструмент Устройства Интернета вещей из раздела Управление устройствами на портале управления, чтобы изменить параметры устройств и (или) проверить их ключи аутентификации.You can use the IoT Devices tool in the Device Management section of the portal to manage your devices and check the authentication keys they're using. В этом разделе руководства описано, как добавить тестовое устройство, получить его ключ и проверить возможность его подключения к концентратору.In this section of the tutorial, you add a new test device, retrieve its key, and check that the test device can connect to the hub. Позже вы сбросите ключ аутентификации и узнаете, что происходит при попытке устройства подключиться с устаревшим ключом.Later you reset the authentication key to observe what happens when a device tries to use an outdated key. В этом разделе руководства применяется портал Azure для создания, администрирования и мониторинга устройства, а также используется пример имитации устройства Node.js.This section of the tutorial uses the Azure portal to create, manage, and monitor a device, and the sample Node.js device simulator.

Войдите на портал и перейдите к своему Центру Интернета вещей.Sign in to the portal and navigate to your IoT hub. Затем откройте средство Устройства Интернета вещей:Then navigate to the IoT Devices tool:

Средство "Устройства Интернета вещей"

Чтобы зарегистрировать новое устройство, щелкните +Добавить, введите в поле Идентификатор устройства значение MyTestDevice и щелкните Сохранить:To register a new device, click + Add, set Device ID to MyTestDevice, and click Save:

Добавление нового устройства

Чтобы получить строку подключения для MyTestDevice, щелкните это устройство в списке устройств и скопируйте значение Строка подключения — первичный ключ.To retrieve the connection string for MyTestDevice, click on it in the list of devices and then copy the Connection string-primary key value. Строка подключения содержит общий ключ доступа для устройства.The connection string includes the shared access key for the device.

Получение строки подключения для устройства

Чтобы имитировать отправку телеметрии от MyTestDevice в Центр Интернета вещей, запустите приложение Node.js для имитации устройства, которое вы скачали ранее.To simulate MyTestDevice sending telemetry to your IoT hub, run the Node.js simulated device application you downloaded previously.

На компьютере разработки в окне терминала перейдите в корневую папку скачанного тестового проекта Node.js.In a terminal window on your development machine, navigate to the root folder of the sample Node.js project you downloaded. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.Then navigate to the iot-hub\Tutorials\ConnectivityTests folder.

Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:In the terminal window, run the following commands to install the required libraries and run the simulated device application. Используйте строку подключения для устройства, которую вы записали при добавлении устройства на портале.Use the device connection string you made a note of when you added the device in the portal.

npm install
node SimulatedDevice-1.js "{your device connection string}"

В окне терминала отображаются сведения о попытке подключиться к Центру Интернета вещей:The terminal window displays information as it tries to connect to your hub:

Подключение имитированного устройства

Итак, вы успешно прошли аутентификацию при подключении устройства с помощью ключа устройства, созданного Центром Интернета вещей.You've now successfully authenticated from a device using a device key generated by your IoT hub.

Сброс ключейReset keys

В этом разделе описано, как сбросить ключ устройства и узнать, какая ошибка выдается при попытке подключить имитированное устройство.In this section, you reset the device key and observe the error when the simulated device tries to connect.

Чтобы сбросить первичный ключ устройства для MyTestDevice, выполните следующие команды:To reset the primary device key for MyTestDevice, run the following commands:

# Generate a new Base64 encoded key using the current date
read key < <(date +%s | sha256sum | base64 | head -c 32)

# Requires the IoT Extension for Azure CLI
# az extension add --name azure-cli-iot-ext

# Reset the primary device key for MyTestDevice
az iot hub device-identity update --device-id MyTestDevice --set authentication.symmetricKey.primaryKey=$key --hub-name {YourIoTHubName}

В окне терминала на компьютере разработки снова запустите приложение имитированного устройства:In the terminal window on your development machine, run the simulated device application again:

npm install
node SimulatedDevice-1.js "{your device connection string}"

Теперь при попытке подключения вы увидите следующую ошибку аутентификации:This time you see an authentication error when the application tries to connect:

Ошибка подключения

Создание маркера подписанного URL-адреса (SAS)Generate shared access signature (SAS) token

Если устройство использует один из пакетов SDK для устройств Центра Интернета вещей, код библиотеки из этого пакета SDK создает маркер SAS для аутентификации в Центре Интернета вещей.If your device uses one of the IoT Hub device SDKs, the SDK library code generates the SAS token used to authenticate with the hub. Маркер SAS создается на основе имени Центра Интернета вещей, имени устройства и ключа устройства.A SAS token is generated from the name of your hub, the name of your device, and the device key.

В некоторых сценариях, например при использовании облачного шлюза протоколов или пользовательских систем аутентификации, вам придется самостоятельно создавать маркер SAS.In some scenarios, such as in a cloud protocol gateway or as part of a custom authentication scheme, you may need to generate the SAS token yourself. Для устранения ошибок, возникающих в коде создания SAS, желательно создать правильный тестовый маркер SAS.To troubleshoot issues with your SAS generation code, it's useful to generate a known-good SAS token to use during testing.

Примечание

Пример SimulatedDevice 2.js включает инструкции по созданию маркера SAS с помощью пакета SDK и без него.The SimulatedDevice-2.js sample includes examples of generating a SAS token both with and without the SDK.

Чтобы создать правильный тестовый маркер SAS через интерфейс командной строки, выполните следующую команду:To generate a known-good SAS token using the CLI, run the following command:

az iot hub generate-sas-token --device-id MyTestDevice --hub-name {YourIoTHubName}

Запишите полный текст созданного маркера SAS.Make a note of the full text of the generated SAS token. Этот маркер SAS выглядит примерно так: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FMyTestDevice&sig=....&se=1524155307A SAS token looks like the following: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FMyTestDevice&sig=....&se=1524155307

На компьютере разработки в окне терминала перейдите в корневую папку скачанного тестового проекта Node.js.In a terminal window on your development machine, navigate to the root folder of the sample Node.js project you downloaded. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.Then navigate to the iot-hub\Tutorials\ConnectivityTests folder.

Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:In the terminal window, run the following commands to install the required libraries and run the simulated device application:

npm install
node SimulatedDevice-2.js "{Your SAS token}"

В окне терминала отображаются сведения о попытке подключиться к Центру Интернета вещей с использованием маркера SAS.The terminal window displays information as it tries to connect to your hub using the SAS token:

Подключение имитированного устройства с помощью маркера

Итак, вы успешно прошли аутентификацию при подключении устройства с помощью маркера SAS, созданного командой интерфейса командной строки.You've now successfully authenticated from a device using a test SAS token generated by a CLI command. Файл SimulatedDevice 2.js содержит пример кода, создающего маркер SAS.The SimulatedDevice-2.js file includes sample code that shows you how to generate a SAS token in code.

ПротоколыProtocols

Для подключения к Центру Интернета вещей устройство можно использовать любой из следующих протоколов:A device can use any of the following protocols to connect to your IoT hub:

ПротоколProtocol Исходящий портOutbound port
MQTTMQTT 88838883
MQTT через WebSocketMQTT over WebSockets 443443
AMQPAMQP 56715671
AMQP через WebSocketAMQP over WebSockets 443443
HTTPSHTTPS 443443

Если исходящий порт заблокирован брандмауэром, устройство не сможет подключиться:If the outbound port is blocked by a firewall, the device can't connect:

Порт заблокирован

Проверка подключения с устройства в облакоCheck device-to-cloud connectivity

После подключения устройство обычно пытается отправить данные телеметрии в Центр Интернета вещей.After a device connects, it typically tries to send telemetry to your IoT hub. В этом разделе описано, как проверить получение данных телеметрии, отправленных устройством.This section shows you how you can verify that the telemetry sent by the device reaches your hub.

Для начала получите используемую строку подключения для имитированного устройства, выполнив следующую команду:First, retrieve the current connection string for your simulated device using the following command:

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

Чтобы запустить имитированное устройство для отправки сообщений, перейдите в папку iot-hub\Tutorials\ConnectivityTests в скачанном коде.To run a simulated device that sends messages, navigate to the iot-hub\Tutorials\ConnectivityTests folder in the code you downloaded.

Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:In the terminal window, run the following commands to install the required libraries and run the simulated device application:

npm install
node SimulatedDevice-3.js "{your device connection string}"

В окне терминала отображаются сведения о попытке отправить телеметрию в Центр Интернета вещей.The terminal window displays information as it sends telemetry to your hub:

Отправка сообщений от имитированного устройства

С помощью раздела Метрики на портале вы можете убедиться, что сообщения телеметрии успешно поступают в центр Интернета вещей.You can use Metrics in the portal to verify that the telemetry messages are reaching your IoT hub. Выберите используемый Центр Интернета вещей в раскрывающемся списке Ресурс, выберите метрику Число отправленных сообщений телеметрии и задайте период За последний час.Select your IoT hub in the Resource drop-down, select Telemetry messages sent as the metric, and set the time range to Past hour. Откроется диаграмма, отображающая совокупное число сообщений, отправленных имитированным устройством:The chart shows the aggregate count of messages sent by the simulated device:

Отображение метрик Центра Интернета вещей

После запуска имитированного устройства потребуется несколько минут, прежде чем метрики станут доступны.It takes a few minutes for the metrics to become available after you start the simulated device.

Проверка подключения из облака на устройствоCheck cloud-to-device connectivity

В этом разделе показано, как выполнить на устройстве тестовый вызов прямого метода, чтобы проверить возможность подключения из облака на устройство.This section shows how you can make a test direct method call to a device to check cloud-to-device connectivity. Запустите имитированное устройство на компьютере разработки в режиме прослушивания прямых вызовов от Центра Интернета вещей.You run a simulated device on your development machine to listen for direct method calls from your hub.

В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:In a terminal window, use the following command to run the simulated device application:

node SimulatedDevice-3.js "{your device connection string}"

С помощью команды интерфейса командной строки вызовите прямой метод на устройстве:Use a CLI command to call a direct method on the device:

az iot hub invoke-device-method --device-id MyTestDevice --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {YourIoTHubName}

Имитированное устройство выводит в консоль следующее сообщение, когда получает вызов прямого метода:The simulated device prints a message to the console when it receives a direct method call:

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

Когда имитированное устройство успешно принимает вызов прямого метода, оно возвращает подтверждение в Центр Интернета вещей:When the simulated device successfully receives the direct method call, it sends an acknowledgement back to the hub:

Подтверждение получения прямого метода

Проверка синхронизации двойниковCheck twin synchronization

Двойники устройств применяются для синхронизации состояний между устройством и Центром Интернета вещей.Devices use twins to synchronize state between the device and the hub. В этом разделе описано, как применить команды CLI для отправки требуемых свойств на устройство и считывания сообщаемых свойств, передаваемых устройством.In this section, you use CLI commands to send desired properties to a device and read the reported properties sent by the device.

Имитированное устройство, которое вы используете в этом разделе, при каждом запуске отправляет сообщаемые свойства в Центр Интернета вещей, а при получении требуемых свойств выводит их значения в консоль.The simulated device you use in this section sends reported properties to the hub whenever it starts up, and prints desired properties to the console whenever it receives them.

В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:In a terminal window, use the following command to run the simulated device application:

node SimulatedDevice-3.js "{your device connection string}"

Чтобы убедиться, что Центр Интернета вещей получил сообщаемые свойства от устройства, используйте следующую команду CLI:To verify that the hub received the reported properties from the device, use the following CLI command:

az iot hub device-twin show --device-id MyTestDevice --hub-name {YourIoTHubName}

В выходных данных команды вы увидите свойство devicelaststarted в разделе сообщаемых свойств.In the output from the command, you can see the devicelaststarted property in the reported properties section. Это свойство содержит дату и время последнего запуска имитированного устройства.This property shows the date and time you last started the simulated device.

Просмотр сообщаемых свойств

Чтобы убедиться, что Центр Интернета вещей может отправлять на устройство требуемые свойства, используйте следующую команду CLI:To verify that the hub can send desired property values to the device, use the following CLI command:

az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id MyTestDevice --hub-name {YourIoTHubName}

Имитированное устройство выводит следующее сообщение, когда получает обновленное значение требуемого свойства от Центра Интернета вещей:The simulated device prints a message when it receives a desired property update from the hub:

Получение требуемых свойств

Помимо получения внесенных изменений в значения требуемых свойств, имитированное устройство автоматически проверяет значения требуемых свойств при каждом запуске.In addition to receiving desired property changes as they're made, the simulated device automatically checks for desired properties when it starts up.

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

Если вам больше не требуется Центр Интернета вещей, удалите его и группу ресурсов на портале.If you don't need the IoT hub any longer, delete it and the resource group in the portal. Для этого выберите группу ресурсов tutorials-iot-hub-rg, содержащую Центр Интернета вещей, и щелкните Удалить.To do so, select the tutorials-iot-hub-rg resource group that contains your IoT hub and click Delete.

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

В этом руководстве описано, как можно проверить ключи устройства, подключение с устройства в облако, подключение из облака на устройство и синхронизацию двойников устройств.In this tutorial, you've seen how to check your device keys, check device-to-cloud connectivity, check cloud-to-device connectivity, and check device twin synchronization. Дополнительные сведения о мониторинге для Центра Интернета вещей вы можете найти в статье с практическими примерами.To learn more about how to monitor your IoT hub, visit the how-to article for IoT Hub monitoring.