Реализация устройств и рекомендации по работе с IoT Central

В этой статье содержатся сведения о том, как реализовать устройства, подключающиеся к приложению IoT Central. Он также включает некоторые рекомендации. Дополнительные сведения о общем процессе подключения см. в Подключение устройстве.

Пример кода реализации устройства см. в руководстве по созданию и подключению клиентского приложения к приложению Azure IoT Central.

Реализация поведения устройства

Устройства, подключающиеся к IoT Central, должны соответствовать соглашениям IoT Plug and Play. Одно из этих соглашений заключается в том, что устройство должно отправить идентификатор модели устройства, которую он реализует при подключении. Идентификатор модели позволяет приложению IoT Central назначить устройство правильному шаблону устройства.

Шаблон устройства IoT Central включает в себя модели, которая определяет поведение, которое должно быть реализовано устройством этого типа. К поведению относятся данные телеметрии, свойства и команды.

Каждая модель имеет уникальный идентификатор модели цифрового двойника (DTMI), например dtmi:com:example:Thermostat;1. Когда устройство подключается к IoT Central, оно отправляет DTMI реализуемой модели. Затем IoT Central может назначить правильный шаблон устройства устройств устройств.

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

Пакеты SDK для устройств Azure IoT поддерживают соглашения Plug and Play IoT.

Модель устройства

Модель устройства определяется с помощью языка моделирования DTDL версии 2 . Этот язык позволяет определить следующее.

  • данные телеметрии, отправляемые устройством; Определение включает в себя имя и тип данных телеметрии. Например, устройство отправляет данные телеметрии температуры как тип double.
  • Сведения о свойствах, которые устройство передает в IoT Central. Определение свойства включает в себя его имя и тип данных. Например, устройство сообщает о состоянии вентиля как логическом значении.
  • Свойства, которые устройство может получить из IoT Central. При необходимости можно пометить свойство как доступное для записи. Например, IoT Central отправляет целевую температуру в виде значения типа double на устройство.
  • Команды, на которые отвечает устройство. Определение включает в себя имя команды, а также имена и типы данных любых параметров. Например, устройство реагирует на команду перезагрузки, которая задает количество секунд ожидания перед перезагрузкой.

Примечание.

IoT Central определяет некоторые расширения на языке DTDL версии 2. Дополнительные сведения см . в расширении IoT Central.

Модель DTDL может быть безкомпонентной или многокомпонентной.

  • Модель без компонентов: простая модель не использует внедренные или каскадные компоненты. Все данные телеметрии, свойства и команды определяются по одному корневому компоненту. Пример см. в модели термостата.
  • Многокомпонентная модель. Более сложная модель, содержащая два или более компонентов. Эти компоненты включают один корневой компонент и один или несколько вложенных компонентов. Пример см. в модели контроллера температуры.

Совет

Вы можете импортировать и экспортировать полную модель устройства или отдельный интерфейс из шаблона устройства IoT Central в виде файла DTDL версии 2.

Дополнительные сведения о моделях устройств см. в руководстве по моделированию Интернета вещей самонастраивающийся

Соглашения

Устройство должно следовать соглашениям Plug and Play IoT при обмене данными с IoT Central. Эти соглашения включают в себя:

  • отправку DTMI при подключении к IoT Central;
  • отправку правильно отформатированных полезных данных JSON и метаданных в IoT Central;
  • правильные ответы на перезаписываемые свойства и команды из IoT Central;
  • следование соглашениям об именовании для команд компонентов.

Примечание.

В настоящее время IoT Central не полностью поддерживает типы данных Массив и Геопространственный DTDL.

Дополнительные сведения о соглашениях Plug and Play IoT см. в разделе Соглашения IoT Plug and Play.

Дополнительные сведения о формате сообщений JSON для устройства с IoT Central см. в разделе Полезные данные телеметрии, свойств и команд.

Пакеты SDK для устройств

Чтобы реализовать поведение устройства, используйте один из пакетов SDK для устройств Azure IoT. Код должен выполнять перечисленные ниже действия.

  • Регистрировать устройство в DPS и использовать сведения из DPS для подключения к внутреннему центру Интернета вещей в приложении IoT Central.
  • Объявлять DTMI модели, которую реализует устройство.
  • Отправлять данные телеметрии в формате, указанном моделью устройства. IoT Central использует модель в шаблоне устройства, чтобы определить, как применять данные телеметрии для визуализации и анализа.
  • Синхронизировать значения свойств на устройстве и в IoT Central. В модели указываются имена и типы данных свойств, чтобы решение IoT Central могло отображать сведения.
  • Реализовать обработчики команд для команд, указанных в модели. В модели указываются имена и параметры команд, которые должно использовать устройство.

Дополнительные сведения о роли шаблонов устройств см. в разделе Что такое шаблоны устройств?.

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

Azure IoT Central Центр Интернета вещей Azure
Телеметрия передача сообщений с устройства в облако;
Автономные команды Передача сообщений из облака на устройство
Свойство Сообщаемые свойства двойника устройства
Свойство (доступно для записи) Требуемые и сообщаемые свойства двойника устройства
Команда Прямые методы

Протоколы связи

Для подключения к IoT Central устройство может использовать протоколы связи MQTT, AMQP и HTTPS. На внутреннем уровне для обеспечения возможности подключения устройств IoT Central использует центр Интернета вещей. Дополнительные сведения о поддерживаемых Центром Интернета вещей протоколах связи для подключения устройств, см. в справочнике по выбору протокола связи.

Если ваше устройство не может использовать ни один из поддерживаемых протоколов, вы можете использовать Azure IoT Edge для преобразования протокола. IoT Edge поддерживает другие сценарии интеллектуальной обработки, позволяющие снизить нагрузку обработки на приложение Azure IoT Central.

Метки времени телеметрии

По умолчанию IoT Central использует заквеченное время сообщения при отображении телеметрии на панелях мониторинга и диаграммах. Время, затраченное на сообщение, задается внутренне, когда IoT Central получает сообщение от устройства.

Устройство может задать iothub-creation-time-utc свойство при создании сообщения для отправки в IoT Central. Если это свойство присутствует, IoT Central использует его при отображении телеметрии на панелях мониторинга и диаграммах.

Вы можете экспортировать как заквеченное время, так и iothub-creation-time-utc свойство при экспорте телеметрии из приложения IoT Central.

Дополнительные сведения о свойствах сообщений см. в разделе "Системные свойства" сообщений Центр Интернета вещей устройства в облако.

Рекомендации

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

Обработка неудачных подключений

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

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

  • Unreachable IoT Hub endpoint (Недоступная конечная точка центра Интернета вещей).
  • Истек срок действия маркера безопасности.
  • Device disabled in IoT Hub (Устройство отключено в центре Интернета вещей).

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

  • Operator blocked device (Устройство заблокировано оператором).
  • Internal error 500 from the service (В службе произошла внутренняя ошибка 500).

Дополнительные сведения о кодах ошибок устройств см. в разделе Устранение неполадок подключения устройств.

Дополнительные сведения о реализации автоматического повторного подключения см. в статье "Управление подключением устройств" для создания устойчивых приложений.

Возможности тестовой отработки отказа

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

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

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

Совет

Чтобы найти идентификатор приложения, перейдите к управлению приложениями > в приложении IoT Central.

Если команда выполнена успешно, вы увидите выходные данные, которые выглядят следующим образом:

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

Дополнительные сведения о команде CLI см. в разделе az iot central device manual-failover.

Теперь вы можете проверка, что данные телеметрии с устройства по-прежнему достигают приложения IoT Central.

Совет

Чтобы просмотреть пример кода устройства, обрабатывающего отработку отказа на различных языках программирования, см. сведения о клиентах с высоким уровнем доступности IoT Central.

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

Ниже приведены некоторые из возможных дальнейших действий.