Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся сведения о том, как реализовать устройства, подключающиеся к приложению 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 Plug and Play определяет набор соглашений, которых устройство должно придерживаться при реализации модели языка определения цифровых двойников (DTDL).
Пакеты SDK для устройств Azure IoT поддерживают соглашения Plug and Play IoT.
Модель устройства
Для IoT Central модель устройства определяется с помощью языка моделирования DTDL версии 2 . Этот язык позволяет определить следующее.
- данные телеметрии, отправляемые устройством; Определение включает в себя имя и тип данных телеметрии. Например, устройство отправляет данные телеметрии температуры в формате double.
- Свойства, которые устройство сообщает в IoT Central. Определение свойства включает в себя его имя и тип данных. Например, устройство сообщает о состоянии вентиля как логическом значении.
- Свойства, которые устройство может получить из IoT Central. При необходимости можно пометить свойство как доступное для записи. Например, IoT Central отправляет целевую температуру в виде значения типа double на устройство.
- Команды, на которые отвечает устройство. Определение включает в себя имя команды, а также имена и типы данных любых параметров. Например, устройство реагирует на команду перезагрузки, которая задает количество секунд ожидания перед перезагрузкой.
Примечание.
IoT Central определяет некоторые расширения на языке DTDL версии 2. Дополнительные сведения см. в расширении IoT Central.
Модель DTDL может быть безкомпонентной или многокомпонентной.
- Модель без компонентов: простая модель не использует внедренные или каскадные компоненты. Все данные телеметрии, свойства и команды определяются как один корневой компонент. Пример можно увидеть в модели термостата.
- Многокомпонентная модель. Более сложная модель, содержащая два или более компонентов. Эти компоненты включают один корневой компонент и один или несколько вложенных компонентов. Пример см. в модели контроллера температуры.
Совет
Вы можете импортировать и экспортировать полную модель устройства или отдельный интерфейс из шаблона устройства IoT Central в виде файла DTDL версии 2.
Дополнительные сведения о моделях устройств см. в руководстве по моделированию IoT Plug and Play
Соглашения
Устройство должно следовать соглашениям 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. Действия, которые следует реализовать в коде, включают:
- Регистрировать устройство в 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, оно должно быть зарегистрировано и подготовлено в базовых службах. При добавлении устройства в приложение IoT Central, последняя добавляет запись в группу регистрации в DPS. Сведения из группы регистрации, такие как область идентификатора, идентификатор устройства и ключи, отображаются в пользовательском интерфейсе IoT Central.
Когда устройство сначала подключается к приложению IoT Central, DPS подготавливает устройство в одном из связанных центров Интернета вещей группы регистрации. Затем устройство связано с этим центром Интернета вещей. DPS использует политику выделения для балансировки нагрузки подготовки в центрах Интернета вещей в приложении. Этот процесс гарантирует, что каждый центр Интернета вещей имеет аналогичное количество подготовленных устройств.
Для получения дополнительной информации о регистрации и подготовке в IoT Central см. руководство по подключению устройств IoT Central.
Обработка неудачных подключений
Когда IoT Central автоматически масштабируется или обрабатывает сценарий аварийного восстановления, он может обновить базовые центры Интернета вещей. Чтобы обеспечить подключение, код вашего устройства должен обрабатывать определенные ошибки подключения, установив соединение с новой конечной точкой IoT-хаба.
Если устройство при подключении получает одну из перечисленных ошибок, его необходимо переподготовить с помощью DPS, чтобы получить новую строку подключения. Эти ошибки означают, что строка подключения больше не является допустимой.
- Unreachable IoT Hub endpoint (Недоступная конечная точка центра Интернета вещей).
- Истек срок действия маркера безопасности.
- Device disabled in IoT Hub (Устройство отключено в центре Интернета вещей).
Если при подключении устройства возникают любые из следующих ошибок, следует использовать стратегию постепенного отступления для повторного подключения. Эти ошибки означают, что строка подключения по-прежнему действительна, но временные условия останавливают подключение устройства:
- Operator blocked device (Устройство заблокировано оператором).
- Internal error 500 from the service (В службе произошла внутренняя ошибка 500).
Дополнительные сведения о кодах ошибок устройств см. в разделе Устранение неполадок подключения устройств.
Дополнительные сведения о реализации автоматического повторного подключения см. в статье "Управление подключением устройств" для создания устойчивых приложений.
В настоящее время устройства IoT Edge не могут перемещаться между центрами Интернета вещей.
Тестирование возможностей аварийного переключения
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.
Следующие шаги
Ниже приведены некоторые из возможных дальнейших действий.