Что представляют собой шаблоны устройств?

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

ПО для сборки решений добавляет шаблоны устройств в приложение IoT Central. Разработчик устройства пишет код для устройства, который реализует поведение, определенное в шаблоне устройства. Дополнительные сведения о том, как устройство обменивается данными с IoT Central, см. в статье Телеметрия, свойства и полезные данные команд.

В этом шаблоне представлены следующие разделы.

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

Назначение устройства шаблону устройства

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

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

Автоматическое назначение

IoT Central может автоматически назначать устройство шаблону устройства при подключении устройства. Устройство должно отправлять идентификатор модели при подключении. IoT Central использует идентификатор модели для идентификации или создания шаблона устройства для этой конкретной модели устройства. Процесс обнаружения работает следующим образом.

  1. Если шаблон устройства уже опубликован в приложении IoT Central, устройство назначается шаблону устройства.

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

  3. Если IoT Central не находит модель в общедоступном репозитории моделей, устройство помечается как unassigned. Оператор может:

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

На следующем снимке экрана показано, как просмотреть идентификатор модели для шаблона устройства в IoT Central. В шаблоне устройства выберите компонент, а затем щелкните Изменить удостоверение:

Снимок экрана, показывающий идентификатор модели в шаблоне устройства термостата.

Модель термостата можно просмотреть в общедоступном репозитории моделей. Определение идентификатора модели выглядит следующим образом:

"@id": "dtmi:com:example:Thermostat;1"

Используйте следующие полезные данные DPS, чтобы назначить устройство шаблону устройства:

{
  "modelId":"dtmi:com:example:TemperatureController;2"
}

Дополнительные сведения о полезных данных DPS см. в примере кода, используемого в руководстве. Создание и подключение клиентского приложения к приложению Azure IoT Central.

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

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

  • Импортируйте JSON-файл, определяющий полную модель устройства или отдельный интерфейс в шаблон устройства.
  • Используйте веб-интерфейс в IoT Central для создания или изменения модели устройства.

Примечание.

IoT Central принимает любые допустимые полезные данные JSON с устройства, но он может использовать только данные для визуализаций, если он соответствует определению в модели устройства. Вы можете экспортировать данные, которые не соответствуют определению, см. раздел "Экспорт данных Интернета вещей в облачные назначения" с помощью служба хранилища BLOB-объектов.

Дополнительные сведения об изменении модели устройства см. в разделе Изменение существующего шаблона устройства.

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

JSON-файл, определяющий модель устройства, использует язык определения цифровых двойника (DTDL) версии 2. Для IoT Central требуется, чтобы интерфейсы для модели устройства размещались в одном JSON-файле, а не в нескольких. Модели, созданные в IoT Central, определяют контекст dtmi:iotcentral:context;2 , указывающий, что модель была создана в IoT Central:

"@context": [
  "dtmi:iotcentral:context;2",
  "dtmi:dtdl:context;2"
]

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

Примечание.

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

Свойства

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

Свойство в интерфейсе можно также пометить как доступное для записи. Устройство может получать обновление для записи свойства из приложения IoT Central и обновления значений свойств отчета для приложения.

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

Не используйте свойства для отправки данных телеметрии с устройства. Например, свойство, доступное только для чтения, такое, как temperatureSetting=80 должно означать, что для температуры устройства установлено значение 80, в то время, как устройство пытается функционировать при этой температуре.

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

Облачные свойства

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

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

В следующем фрагменте кода DTDL показан пример определения облачного свойства:

{
    "@id": "dtmi:azureiot:Thermostat:CustomerName",
    "@type": [
        "Property",
        "Cloud",
        "StringValue"
    ],
    "displayName": {
        "en": "Customer Name"
    },
    "name": "CustomerName",
    "schema": "string"
}

Телеметрия

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

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

Команды

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

Команды могут иметь параметры запроса и возвращать ответ.

Автономные команды

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

Это односторонние уведомления для устройства, поступающие из вашего решения. Автономные команды могут иметь параметры запроса, но не возвращать ответ.

Примечание.

Автономные команды помечаются как durable если вы экспортируете модель как DTDL.

Автономные команды используют сообщения формата облако-устройство центра IoT для отправки команд и полезных данных на устройство.

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

Схема запроса IoT Central Пример полезных данных, получаемых устройством
Нет параметра запроса @
Двойной 1.23
Строка sample string
Object {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

В следующем фрагменте кода из модели устройства показано определение команды. Команда имеет параметр объекта с полем даты и времени и перечислением:

{
  "@type": "Command",
  "displayName": {
    "en": "Generate Diagnostics"
  },
  "name": "GenerateDiagnostics",
  "request": {
    "@type": "CommandPayload",
    "displayName": {
      "en": "Payload"
    },
    "name": "Payload",
    "schema": {
      "@type": "Object",
      "displayName": {
        "en": "Object"
      },
      "fields": [
        {
          "displayName": {
            "en": "StartTime"
          },
          "name": "StartTime",
          "schema": "dateTime"
        },
        {
          "displayName": {
            "en": "Bank"
          },
          "name": "Bank",
          "schema": {
            "@type": "Enum",
            "displayName": {
              "en": "Enum"
            },
            "enumValues": [
              {
                "displayName": {
                  "en": "Bank 1"
                },
                "enumValue": 1,
                "name": "Bank1"
              },
              {
                "displayName": {
                  "en": "Bank2"
                },
                "enumValue": 2,
                "name": "Bank2"
              },
              {
                "displayName": {
                  "en": "Bank3"
                },
                "enumValue": 3,
                "name": "Bank3"
              }
            ],
            "valueSchema": "integer"
          }
        }
      ]
    }
  }
}

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

Имя свойства Пример значения
custom_properties {'method-name': 'GenerateDiagnostics'}
data {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Представления

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

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

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

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