Поделиться через


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

В этом руководстве описано, как применять инструменты на портале Центра Интернета вещей Azure и команды Azure CLI для проверки возможности подключения устройств. В этом руководстве используется простая имитация устройства, выполняемая на обычном компьютере.

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

В этом руководстве описано следующее:

  • проверка аутентификации устройств;
  • Проверка подключения с устройства в облако
  • Проверка подключения из облака на устройство
  • Проверка синхронизации двойников устройств.

Предварительные условия

  • В этом руководстве используется Azure CLI для создания облачных ресурсов. Существует два способа выполнения команд CLI:

    Примечание.

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

Чтобы создать центр Интернета вещей и группу ресурсов, выполните следующие действия:

  1. Запустите приложение CLI. Чтобы выполнить команды CLI в остальной части этой статьи, скопируйте синтаксис команды, вставьте его в приложение CLI, измените значения переменных и нажмите клавишу Enter.

    • При использовании Cloud Shell нажмите кнопку Попробовать в командах интерфейса командной строки, чтобы запустить Cloud Shell в разделенном окне браузера. Или можно открыть Cloud Shell в отдельной вкладке браузера.
    • Если вы используете Azure CLI локально, запустите консольное приложение CLI и войдите в Azure CLI.
  2. Запустите az extension add, чтобы установить или обновить расширение azure-iot до текущей версии.

    az extension add --upgrade --name azure-iot
    
  3. В приложении CLI выполните команду az group create, чтобы создать группу ресурсов. В следующей команде создается группа ресурсов с именем MyResourceGroup в расположении eastus.

    Примечание.

    При необходимости можно задать другое расположение. Чтобы отобразить доступные расположения, выполните команду az account list-locations. В этом кратком руководстве используется eastus, как показано в командном примере.

    az group create --name MyResourceGroup --location eastus
    
  4. Создайте Центр Интернета вещей с помощью команды az iot hub create. Создание Центра Интернета вещей может занять несколько минут.

    YourIoTHubName. В указанной ниже команде замените этот заполнитель и окружающие фигурные скобки именем вашего IoT-центра. Имя центра Интернета вещей должно быть уникальным по всему Azure. Используйте имя вашего IoT-центра в дальнейшей части этого краткого руководства, где указано место для этого.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

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

Перед тем как устройство сможет обмениваться данными с вашим хабом, оно должно пройти на нем аутентификацию. Вы можете применить инструмент Устройства Интернета вещей из раздела Управление устройствами на портале управления, чтобы изменить параметры устройств и (или) проверить их ключи аутентификации. В этом разделе руководства описано, как добавить тестовое устройство, получить его ключ и проверить возможность его подключения к концентратору. Позже вы сбросите ключ аутентификации и узнаете, что происходит при попытке устройства подключиться с устаревшим ключом.

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

Устройство должно быть зарегистрировано в центре Интернета вещей, прежде чем оно сможет подключиться. В этом разделе вы используете Azure CLI для создания удостоверения устройства.

Если устройство уже зарегистрировано в центре Интернета вещей, этот раздел можно пропустить.

Чтобы создать удостоверение устройства:

  1. В оболочке CLI выполните команду az iot hub device-identity create. Эта команда создает идентификацию устройства.

    YourIoTHubName. В указанной ниже команде замените этот заполнитель и окружающие фигурные скобки именем вашего IoT-центра. Имя центра Интернета вещей должно быть уникальным по всему Azure.

    myDevice. Это имя можно использовать для идентификатора устройства в этой статье или указать другое имя устройства.

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}
    
  2. Выполните команду az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}
    

    Выходные данные строки подключения имеют следующий формат:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Сохраните строку подключения в безопасном расположении.

Примечание.

Оставьте приложение CLI открытым. Вы используете это в последующих шагах.

Имитация тестового устройства

Чтобы имитировать устройство, отправляющее данные телеметрии в Центр Интернета вещей, запустите скачаемое ранее приложение Node.js имитированного устройства.

  1. В окне терминала на компьютере разработки перейдите в корневую папку примера Node.js проекта, который вы скачали. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.

  2. Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды: Используйте строку подключения, которую вы записали при регистрации устройства.

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    В окне терминала отображается сообщение об успешном подключении к центру:

    Снимок экрана: подключение имитированного устройства.

Итак, вы успешно прошли аутентификацию при подключении устройства с помощью ключа устройства, созданного Центром Интернета вещей.

Сброс ключей

В этом разделе вы перезапускаете ключ устройства и наблюдаете ошибку, когда имитированное устройство пытается подключиться.

  1. Чтобы сбросить первичный ключ устройства, запустите команду 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}
    
  2. В окне терминала на компьютере разработки снова запустите приложение имитированного устройства:

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Теперь при попытке подключения вы увидите следующую ошибку аутентификации:

    Снимок экрана: сбой подключения после сброса ключа.

Генерация токена общего доступа (SAS)

Если устройство использует один из пакетов SDK для устройств Центра Интернета вещей, код библиотеки из этого пакета SDK создает маркер SAS для аутентификации в Центре Интернета вещей. Маркер SAS создается на основе названия вашего Центра IoT, имени устройства и ключа устройства.

В некоторых сценариях, например при использовании облачного шлюза протоколов или пользовательских систем аутентификации, вам придется самостоятельно создавать маркер SAS. Для устранения ошибок, возникающих в коде генерации SAS, желательно создать заранее известный корректный токен SAS для использования во время тестирования.

Примечание.

Пример SimulatedDevice 2.js включает инструкции по созданию маркера SAS с помощью пакета SDK и без него.

  1. Запустите команду az iot hub generate-sas-token, чтобы создать известный SAS токен с помощью командной строки.

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Скопируйте полный текст созданного маркера SAS. Маркер SAS выглядит следующим образом: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. На компьютере разработки в окне терминала перейдите в корневую папку скачанного тестового проекта Node.js. Затем перейдите к папке iot-hub\Tutorials\ConnectivityTests.

  4. Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:

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

    В окне терминала отображается сообщение об успешном подключении к центру с помощью маркера SAS:

    Снимок экрана: успешное подключение с помощью маркера SAS.

Таким образом, вы успешно прошли аутентификацию с устройства, используя тестовый токен SAS, созданный командой интерфейса командной строки. Файл SimulatedDevice 2.js содержит пример кода, создающего маркер SAS.

Протоколы

Для подключения к Центру Интернета вещей устройство можно использовать любой из следующих протоколов:

Протокол Исходящий порт
MQTT 8883
MQTT через WebSocket. 443
AMQP 5671
AMQP через WebSocket; 443
HTTPS 443

Если исходящий порт заблокирован брандмауэром, устройство не сможет подключиться:

Снимок экрана: ошибка подключения при блокировке исходящего порта.

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

После подключения устройства он может начать отправку телеметрии в центр Интернета вещей. Этот раздел показывает, как вы можете убедиться, что телеметрия, отправленная устройством, достигает вашего хаба.

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

  1. Поскольку мы сбросили строку подключения для вашего устройства в предыдущем разделе, используйте команду 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}
    
  2. Чтобы запустить имитированное устройство для отправки сообщений, перейдите в папку iot-hub\Tutorials\ConnectivityTests в скачанном коде.

  3. Установите необходимые библиотеки и запустите приложение имитированного устройства, выполнив в окне терминала следующие команды:

    npm install
    node SimulatedDevice-3.js "{your_device_connection_string}"
    

    В окне терминала отображается информация, отправляемая в ваш узел телеметрии.

    Снимок экрана: имитированное устройство, отправляющее сообщения.

Мониторинг входящих сообщений

С помощью раздела Метрики на портале вы можете убедиться, что сообщения телеметрии успешно поступают в центр Интернета вещей.

  1. В портале Azure выберите ваш центр IoT в раскрывающемся списке Ресурс.

  2. Выберите метрики из раздела "Мониторинг " в меню навигации.

  3. Выберите отправленные сообщения телеметрии в качестве метрики и задайте временной диапазон за последний час. Откроется диаграмма, отображающая совокупное число сообщений, отправленных имитированным устройством:

    Снимок экрана, на котором показаны метрики на панели слева.

После запуска имитированного устройства потребуется несколько минут, прежде чем метрики станут доступны.

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

В этом разделе показано, как выполнить на устройстве тестовый вызов прямого метода, чтобы проверить возможность подключения из облака на устройство. Запустите имитируемое устройство на вашем компьютере для разработки, чтобы оно прослушивало прямые вызовы методов из вашего хаба.

  1. В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. В отдельном окне используйте команду 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 для отправки требуемых свойств на устройство и считывания сообщаемых свойств, передаваемых устройством.

Имитированное устройство, которое вы используете в этом разделе, при каждом запуске отправляет сообщаемые свойства в Центр Интернета вещей, а при получении требуемых свойств выводит их значения в консоль.

  1. В окне терминала запустите приложение имитированного устройства, выполнив следующую команду:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. В отдельном окне выполните команду az iot hub device-twin show чтобы убедиться, что концентратор получил от устройства сообщенные свойства.

    az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    В выходных данных команды вы увидите свойство devicelaststarted в разделе сообщаемых свойств. Это свойство содержит дату и время последнего запуска имитированного устройства.

    Снимок экрана: сообщаемые свойства устройства.

  3. Чтобы убедиться, что концентратор может отправлять нужные значения свойств на устройство, используйте команду 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}
    

    Имитированное устройство выводит следующее сообщение, когда получает обновленное значение требуемого свойства от Центра Интернета вещей:

    Снимок экрана: устройство с подтверждением получения требуемого обновления свойств.

Помимо получения внесенных изменений в значения требуемых свойств, имитированное устройство автоматически проверяет значения требуемых свойств при каждом запуске.

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

Если вам больше не требуется Центр Интернета вещей, удалите его и группу ресурсов на портале. Для этого выберите группу ресурсов, содержащую центр Интернета вещей, и нажмите кнопку "Удалить".

Следующие шаги

В этом руководстве вы узнали, как проверить ключи устройства, подключение устройства к облаку, подключение облака к устройству и синхронизацию близнецов устройств. Дополнительные сведения о мониторинге для Центра Интернета вещей вы можете найти в статье с практическими примерами.