Руководство. Проверка подключения к центру Интернета вещей с помощью имитированного устройства
В этом руководстве описано, как применять инструменты на портале Центра Интернета вещей Azure и команды Azure CLI для проверки возможности подключения устройств. В этом руководстве используется простая имитация устройства, выполняемая на обычном компьютере.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
В этом руководстве описано следующее:
- проверка аутентификации устройств;
- Проверка подключения с устройства в облако
- Проверка подключения из облака на устройство
- проверка синхронизации двойников устройств.
Необходимые компоненты
В этом руководстве используется Azure CLI для создания облачных ресурсов. Существует два способа выполнения команд CLI:
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье Краткое руководство. Azure Cloud Shell — Bash.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
- Выполните вход в Azure CLI с помощью команды az login.
- Если появится запрос, установите расширения Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
- Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Примечание.
В этой статье используется последняя версия расширения Azure IoT под названием
azure-iot
. Прежняя версия называетсяazure-cli-iot-ext
. В каждый момент времени должна быть установлена только одна версия. Проверить установленные расширения можно с помощью командыaz extension list
.Используйте
az extension remove --name azure-cli-iot-ext
, чтобы удалить устаревшую версию расширения.Используйте
az extension add --name azure-iot
, чтобы добавить новую версию расширения.Чтобы узнать, какие расширения установлены, используйте
az extension list
.Пример приложения, выполняемого в этом руководстве, использует Node.js. Вам потребуется установить Node.js 10 x.x или более поздней версии на компьютере для разработки.
Node.js, предназначенный для нескольких платформ, можно скачать здесь: nodejs.org.
Текущую версию Node.js на компьютере, на котором ведется разработка, можно проверить, используя следующую команду:
node --version
Клонируйте или скачайте пример проекта Node.js из примеров Интернета вещей Azure для Node.js.
Убедитесь, что в брандмауэре открыт порт 8883. Пример устройства в этом руководстве использует протокол MQTT, который передает данные через порт 8883. В некоторых корпоративных и академических сетях этот порт может быть заблокирован. Дополнительные сведения и способы устранения этой проблемы см. в разделе о подключении к Центру Интернета вещей по протоколу MQTT.
Создание Центра Интернета вещей
В этом разделе описано, как использовать Azure CLI для создания центра Интернета вещей и группы ресурсов. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. Центр Интернета вещей действует в качестве центра сообщений для двусторонней связи между приложением Интернета вещей и устройствами.
Если у вас уже есть центр Интернета вещей в подписке Azure, этот раздел можно пропустить.
Чтобы создать центр Интернета вещей и группу ресурсов, выполните следующие действия:
Запустите приложение CLI. Чтобы выполнить команды CLI в остальной части этой статьи, скопируйте синтаксис команды, вставьте его в приложение CLI, измените значения переменных и нажмите клавишу
Enter
.- При использовании Cloud Shell нажмите кнопку Попробовать в командах интерфейса командной строки, чтобы запустить Cloud Shell в разделенном окне браузера. Или можно открыть Cloud Shell в отдельной вкладке браузера.
- Если вы используете Azure CLI локально, запустите консольное приложение CLI и войдите в Azure CLI.
Запустите az extension add, чтобы установить или обновить расширение azure-iot до текущей версии.
az extension add --upgrade --name azure-iot
В приложении CLI выполните команду az group create, чтобы создать группу ресурсов. В следующей команде создается группа ресурсов с именем MyResourceGroup в расположении eastus.
Примечание.
При необходимости можно задать другое расположение. Чтобы отобразить доступные расположения, выполните команду
az account list-locations
. В рамках работы с этим кратким руководством используется eastus, как показано в примере команды.az group create --name MyResourceGroup --location eastus
Создайте Центр Интернета вещей с помощью команды az iot hub create. Создание Центра Интернета вещей может занять несколько минут.
YourIotHubName Замените этот заполнитель и окружающие фигурные скобки в указанной ниже команде именем своего центра Интернета вещей. Имя центра Интернета вещей должно быть уникальным по всему Azure. Используйте имя центра Интернета вещей при работе с оставшейся частью этого краткого руководства везде вместо заполнителя.
az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
Проверка аутентификации устройств
Прежде чем обмениваться данными с Центром Интернета вещей, устройство должно пройти на нем аутентификацию. Вы можете применить инструмент Устройства Интернета вещей из раздела Управление устройствами на портале управления, чтобы изменить параметры устройств и (или) проверить их ключи аутентификации. В этом разделе руководства описано, как добавить тестовое устройство, получить его ключ и проверить возможность его подключения к концентратору. Позже вы сбросите ключ аутентификации и узнаете, что происходит при попытке устройства подключиться с устаревшим ключом.
Регистрация устройства
Устройство должно быть зарегистрировано в центре Интернета вещей, прежде чем оно сможет подключиться. В этом разделе рассматривается создание удостоверения устройства с помощью Azure CLI.
Если устройство уже зарегистрировано в центре Интернета вещей, этот раздел можно пропустить.
Создание удостоверения устройства:
В оболочке CLI выполните команду az iot hub device-identity create. Эта команда создает удостоверение устройства.
your_iot_hub_name. Замените этот заполнитель именем вашего центра Интернета вещей.
myDevice. Это имя можно использовать для идентификатора устройства в этой статье или указать другое имя устройства.
az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
Выполните команду az iot hub device-identity connection-string show.
az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
Выходные данные строки подключения имеют следующий формат:
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
Сохраните строку подключения в безопасном расположении.
Примечание.
Оставьте приложения CLI открытым. Оно понадобится вам на последующих шагах.
Имитация тестового устройства
Чтобы имитировать устройство, отправляющее данные телеметрии в Центр Интернета вещей, запустите скачаемое ранее приложение Node.js имитированного устройства.
В окне терминала на компьютере разработки перейдите в корневую папку примера Node.js проекта, который вы скачали. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.
Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды: Используйте устройство, строка подключения, которое вы записали при регистрации устройства.
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
В окне терминала отображается сообщение об успешном подключении к центру:
Итак, вы успешно прошли аутентификацию при подключении устройства с помощью ключа устройства, созданного Центром Интернета вещей.
Сброс ключей
В этом разделе описано, как сбросить ключ устройства и узнать, какая ошибка выдается при попытке подключить имитированное устройство.
Чтобы сбросить первичный ключ устройства для устройства, выполните команду az iot hub device-identity update :
# Generate a new Base64 encoded key using the current date read key < <(date +%s | sha256sum | base64 | head -c 32) # Reset the primary device key for test device az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
В окне терминала на компьютере разработки снова запустите приложение имитированного устройства:
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
Теперь при попытке подключения вы увидите следующую ошибку аутентификации:
Создание маркера подписанного URL-адреса (SAS)
Если устройство использует один из пакетов SDK для устройств Центра Интернета вещей, код библиотеки из этого пакета SDK создает маркер SAS для аутентификации в Центре Интернета вещей. Маркер SAS создается на основе имени Центра Интернета вещей, имени устройства и ключа устройства.
В некоторых сценариях, например при использовании облачного шлюза протоколов или пользовательских систем аутентификации, вам придется самостоятельно создавать маркер SAS. Для устранения ошибок, возникающих в коде создания SAS, желательно создать правильный тестовый маркер SAS.
Примечание.
Пример SimulatedDevice 2.js включает инструкции по созданию маркера SAS с помощью пакета SDK и без него.
Выполните команду az iot hub genereate-sas-token, чтобы создать известный маркер SAS с помощью CLI:
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
Скопируйте полный текст созданного маркера SAS. Маркер SAS выглядит следующим образом:
SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
На компьютере разработки в окне терминала перейдите в корневую папку скачанного тестового проекта Node.js. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.
Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:
npm install node SimulatedDevice-2.js "{Your SAS token}"
В окне терминала отображается сообщение об успешном подключении к центру с помощью маркера SAS:
Итак, вы успешно прошли аутентификацию при подключении устройства с помощью маркера SAS, созданного командой интерфейса командной строки. Файл SimulatedDevice 2.js содержит пример кода, создающего маркер SAS.
Протоколы
Для подключения к Центру Интернета вещей устройство можно использовать любой из следующих протоколов:
Протокол | Исходящий порт |
---|---|
MQTT | 8883 |
MQTT через WebSocket. | 443 |
AMQP | 5671 |
AMQP через WebSocket; | 443 |
HTTPS | 443 |
Если исходящий порт заблокирован брандмауэром, устройство не сможет подключиться:
Проверка подключения с устройства в облако
После подключения устройства он может начать отправку телеметрии в центр Интернета вещей. В этом разделе описано, как проверить получение данных телеметрии, отправленных устройством.
Отправка сообщений устройства в облако
Так как мы сбросим строка подключения для устройства в предыдущем разделе, используйте команду az iot hub device-identity connection-string show, чтобы получить обновленный строка подключения:
az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
Чтобы запустить имитированное устройство для отправки сообщений, перейдите в папку iot-hub\Tutorials\ConnectivityTests в скачанном коде.
Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:
npm install node SimulatedDevice-3.js "{your_device_connection_string}"
В окне терминала отображаются сведения о попытке отправить телеметрию в Центр Интернета вещей.
Мониторинг входящих сообщений
С помощью раздела Метрики на портале вы можете убедиться, что сообщения телеметрии успешно поступают в центр Интернета вещей.
В портал Azure выберите центр Интернета вещей в раскрывающемся списке "Ресурс".
Выберите метрики из раздела "Мониторинг " в меню навигации.
Выберите сообщения телеметрии, отправленные в качестве метрики, и задайте диапазон времени прошлым часом. Откроется диаграмма, отображающая совокупное число сообщений, отправленных имитированным устройством:
После запуска имитированного устройства потребуется несколько минут, прежде чем метрики станут доступны.
Проверка подключения из облака на устройство
В этом разделе показано, как выполнить на устройстве тестовый вызов прямого метода, чтобы проверить возможность подключения из облака на устройство. Запустите имитированное устройство на компьютере разработки в режиме прослушивания прямых вызовов от Центра Интернета вещей.
В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:
node SimulatedDevice-3.js "{your_device_connection_string}"
В отдельном окне используйте команду az iot hub invoke-device-method для вызова прямого метода на устройстве:
az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
Имитированное устройство выводит в консоль следующее сообщение, когда получает вызов прямого метода:
Когда имитированное устройство успешно принимает вызов прямого метода, оно возвращает подтверждение в центр:
Проверка синхронизации двойников
Двойники устройств применяются для синхронизации состояний между устройством и Центром Интернета вещей. В этом разделе описано, как применить команды CLI для отправки требуемых свойств на устройство и считывания сообщаемых свойств, передаваемых устройством.
Имитированное устройство, которое вы используете в этом разделе, при каждом запуске отправляет сообщаемые свойства в Центр Интернета вещей, а при получении требуемых свойств выводит их значения в консоль.
В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:
node SimulatedDevice-3.js "{your_device_connection_string}"
В отдельном окне выполните команду az iot hub device-twin show , чтобы убедиться, что концентратор получил от устройства сообщаемые свойства:
az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
В выходных данных команды вы увидите свойство devicelaststarted в разделе сообщаемых свойств. Это свойство содержит дату и время последнего запуска имитированного устройства.
Чтобы убедиться, что концентратор может отправлять нужные значения свойств на устройство, используйте команду az iot hub device-twin update :
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
Имитированное устройство выводит следующее сообщение, когда получает обновленное значение требуемого свойства от Центра Интернета вещей:
Помимо получения внесенных изменений в значения требуемых свойств, имитированное устройство автоматически проверяет значения требуемых свойств при каждом запуске.
Очистка ресурсов
Если вам больше не требуется Центр Интернета вещей, удалите его и группу ресурсов на портале. Для этого выберите группу ресурсов, содержащую центр Интернета вещей, и нажмите кнопку "Удалить".
Следующие шаги
В этом руководстве описано, как можно проверить ключи устройства, подключение с устройства в облако, подключение из облака на устройство и синхронизацию двойников устройств. Дополнительные сведения о мониторинге для Центра Интернета вещей вы можете найти в статье с практическими примерами.