Экспорт данных IoT в облачные назначения с помощью экспорта данных

Примечание

В этой статье описываются функции экспорта данных в IoT Central. Дополнительные сведения о функциях экспорта данных прежних версий см. в статье Экспорт данных Интернета вещей в облачные назначения с помощью экспорта данных (прежние версии).

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

Например, вы можете:

  • Непрерывно экспортируйте данные телеметрии и изменения свойств в формате JSON практически в реальном времени.
  • Фильтрация потоков данных для экспорта данных, соответствующих пользовательским условиям.
  • Расширить потоки данных с помощью пользовательских значений и значений свойств с устройства.
  • Отправьте данные в назначения, такие как концентраторы событий Azure, служебная шина Azure, хранилище BLOB-объектов Azure и конечные точки веб-перехватчика.

Совет

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

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

Чтобы использовать функции экспорта данных, необходимо иметь приложение v3и иметь разрешение на Экспорт данных .

Если у вас есть приложение v2, см. статью миграция приложения IOT Central v2 в версии 3.

Настройка места назначения экспорта

Назначение экспорта должно существовать до настройки экспорта данных. В настоящее время доступны следующие типы назначения:

  • Центры событий Azure
  • Очередь служебной шины Azure
  • Раздел служебной шины Azure
  • хранилище BLOB-объектов Azure
  • webhook

Создание назначения концентраторов событий

Если у вас нет пространства имен концентраторов событий для экспорта, выполните следующие действия.

  1. Создайте пространство имен Центров событий на портале Azure. Дополнительные сведения см. в документации по Центрам событий Azure.

  2. Создайте концентратор событий в пространстве имен в Центрах событий. Перейдите к пространству имен и выберите + Концентратор событий в верхней части, чтобы создать экземпляр концентратора событий.

  3. Создайте ключ, который будет использоваться при настройке экспорта данных в IoT Central.

    • Выберите созданный экземпляр концентратора событий.
    • Выберите параметры > политики общего доступа.
    • Создайте новый ключ или выберите существующий ключ с разрешениями на отправку .
    • Скопируйте основную или дополнительную строку подключения. Эта строка подключения используется для настройки нового назначения в IoT Central.
    • Кроме того, можно создать строку подключения для всего пространства имен концентраторов событий:
      1. Перейдите к пространству имен концентраторов событий в портал Azure.
      2. В разделе Параметры выберите политики общего доступа .
      3. Создайте новый ключ или выберите существующий ключ с разрешениями на отправку .
      4. Скопируйте основную или дополнительную строку подключения.

Создание очереди или назначения раздела служебной шины

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

  1. Создайте новое пространство имен служебной шины в портал Azure. Дополнительные сведения см. в документации по Служебной шине Azure.

  2. Чтобы создать очередь или раздел для экспорта, перейдите к пространству имен служебной шины и выберите + очередь или + раздел.

  3. Создайте ключ, который будет использоваться при настройке экспорта данных в IoT Central.

    • Выберите созданную очередь или раздел.
    • Выберите Параметры/политики общего доступа.
    • Создайте новый ключ или выберите существующий ключ с разрешениями на отправку .
    • Скопируйте основную или дополнительную строку подключения. Эта строка подключения используется для настройки нового назначения в IoT Central.
    • Кроме того, можно создать строку подключения для всего пространства имен служебной шины:
      1. Перейдите к пространству имен служебной шины в портал Azure.
      2. В разделе Параметры выберите политики общего доступа .
      3. Создайте новый ключ или выберите существующий ключ с разрешениями на отправку .
      4. Скопируйте основную или дополнительную строку подключения.

Создание места назначения хранилища BLOB-объектов Azure

Если у вас нет существующей учетной записи хранения Azure для экспорта, выполните следующие действия.

  1. Создайте учетную запись хранения на портале Azure. Вы можете узнать больше о создании новых учетных записей хранения BLOB-объектов Azure или учетных записей хранения Azure Data Lake Storage v2. Экспорт данных может записывать данные только в учетные записи хранения, поддерживающие блочные BLOB-объекты. В следующем списке приведены известные совместимые типы учетных записей хранения.

    Уровень производительности Тип учетной записи
    Стандартный общего назначения v2
    Стандартный общего назначения v1
    Стандартный Хранилище BLOB-объектов
    Premium Блочное хранилище BLOB-объектов
  2. Чтобы создать контейнер в учетной записи хранения, перейдите к своей учетной записи хранения. Выберите Обзор BLOB-объектов в разделе Служба BLOB-объектов. Выберите + Контейнер в верхней части экрана, чтобы создать контейнер.

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

Создание конечной точки веб-перехватчика

Вы можете экспортировать данные в общедоступную конечную точку веб-перехватчика HTTP. Вы можете создать тестовую конечную точку веб-перехватчика с помощью RequestBin. RequestBin регулирование запроса при достижении предельного числа запросов:

  1. Откройте RequestBin.
  2. Создайте новый RequestBin и скопируйте Bin URL (URL-адрес Bin). Этот URL-адрес используется при проверке экспорта данных.

Настройка экспорта данных

Теперь, когда у вас есть место для экспорта данных, настройте экспорт данных в приложении IoT Central:

  1. Войдите в приложение IoT Central.

  2. На левой панели выберите Экспорт данных.

    Совет

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

  3. Выберите + Новый экспорт.

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

  5. Выберите тип данных для экспорта. В следующей таблице перечислены поддерживаемые типы экспорта данных.

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

  1. При необходимости добавьте фильтры, чтобы уменьшить объем экспортируемых данных. Существует несколько типов фильтров, доступных для каждого типа экспорта данных:

    Для фильтрации телеметрических данных можно:

    • Отфильтруйте экспортированный поток, чтобы он содержал только данные телеметрии с устройств, которые соответствуют имени устройства, идентификатору устройства и условию фильтра шаблона устройства.
    • Фильтрация по возможностям. при выборе элемента телеметрии в раскрывающемся списке имя экспортированный поток содержит только данные телеметрии, соответствующие условию фильтра. При выборе элемента свойств устройства или облака в раскрывающемся списке имя экспортированный поток содержит только данные телеметрии с устройств со свойствами, соответствующими условию фильтра.
    • Фильтр свойств сообщения. устройства, использующие пакеты SDK для устройств, могут передавать Свойства сообщений или свойства приложения в каждое сообщение телеметрии. Свойства представляют собой набор пар "ключ-значение", которые отмечают сообщение пользовательскими идентификаторами. Чтобы создать фильтр свойств сообщения, введите искомый ключ свойства сообщения и укажите условие. Экспортируются только сообщения телеметрии со свойствами, соответствующими заданному условию фильтра. Поддерживаются следующие операторы сравнения строк: Equals, не равно, Contains, не содержит, не существует. Дополнительные сведения о свойствах приложений из документации центра Интернета вещей.

    Чтобы отфильтровать изменения свойств, используйте Фильтр возможностей. Выберите элемент свойства в раскрывающемся списке. Экспортированный поток содержит только изменения выбранного свойства, соответствующие условию фильтра.

  1. При необходимости дополняет экспортированные сообщения дополнительными метаданными пары "ключ-значение". Для типов экспорта данных телеметрии и свойств доступны следующие дополнения:

    • Пользовательская строка: добавляет пользовательскую статическую строку к каждому сообщению. Введите любой ключ и введите строковое значение.
    • Свойство: добавляет текущее свойство сообщаемого устройства или значение облачного свойства в каждое сообщение. Введите любой ключ и выберите свойство устройства или облака. Если экспортированное сообщение относится к устройству, которое не имеет указанного свойства, экспортируемое сообщение не получается.
  2. Добавьте новое место назначения или добавьте уже созданное назначение. Выберите ссылку создать новую и добавьте следующую информацию:

    • Имя назначения: отображаемое имя назначения в IOT Central.
    • Тип назначения: выберите тип назначения. Если вы еще не настроили Назначение, см. раздел Настройка назначения экспорта.
    • Для концентраторов событий Azure, очереди или раздела служебной шины Azure вставьте строку подключения для ресурса и при необходимости введите сведения о концентраторе событий, очереди или имени раздела с учетом регистра.
    • Для хранилища BLOB-объектов Azure вставьте строку подключения для ресурса и при необходимости введите имя контейнера с учетом регистра.
    • Для веб-перехватчика вставьте URL обратного вызова для конечной точки веб-перехватчика. При необходимости можно настроить авторизацию веб-перехватчика (OAuth 2,0 и токен авторизации) и добавить пользовательские заголовки.
      • Для OAuth 2,0 поддерживается только поток учетных данных клиента. После сохранения места назначения IoT Central будет взаимодействовать с поставщиком OAuth для получения маркера авторизации. Этот маркер будет присоединен к заголовку "Authorization" для каждого сообщения, отправленного в это место назначения.
      • Для маркера авторизации можно указать значение маркера, которое будет напрямую присоединен к заголовку Authorization для каждого сообщения, отправляемого в это место назначения.
    • Нажмите кнопку создания.
  3. Выберите + назначение и выберите назначение из раскрывающегося списка. В один экспорт можно добавить до пяти назначений.

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

Мониторинг экспорта

В дополнение к просмотру состояния экспортов в IoT Central можно использовать Azure Monitor для просмотра объема экспортируемых данных и ошибок экспорта. Вы можете получить доступ к экспорту и метрикам работоспособности устройств на диаграммах в портал Azure, с помощью REST API или запросов в PowerShell или Azure CLI. Сейчас вы можете отслеживать следующие метрики экспорта данных в Azure Monitor:

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

Дополнительные сведения см. в разделе наблюдение за общей работоспособностью приложения IOT Central.

Места назначения

Назначение хранилища BLOB-объектов Azure

Данные экспортируются один раз в минуту, при этом каждый файл содержит пакет изменений с момента предыдущего экспорта. Экспортированные данные сохраняются в формате JSON. К экспортированным данным в вашей учетной записи хранения применяются следующие пути по умолчанию:

  • Данные телеметрии: {Container}/{апп-ид}/{partition_id}/{ИИИИ}/{мм}/{дд}/{ХХ}/{мм}/{филенаме}
  • Изменения свойств: {Container}/{апп-ид}/{partition_id}/{ИИИИ}/{мм}/{дд}/{ХХ}/{мм}/{филенаме}

Чтобы просмотреть экспортированные файлы в портал Azure, перейдите к файлу и выберите изменить BLOB-объект.

Концентраторы событий Azure и назначения служебной шины Azure

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

Контейнер заметок или системных свойств сообщения содержит iotcentral-device-id iotcentral-application-id поля,, iotcentral-message-source и iotcentral-message-type , имеющие те же значения, что и соответствующие поля в тексте сообщения.

Назначение веб-перехватчика

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

Формат телеметрии

Каждое экспортированное сообщение содержит нормализованную форму полного сообщения, отправленного устройством в тексте сообщения. Сообщение представлено в формате JSON и кодируется как UTF-8. В каждом сообщении содержатся следующие сведения:

  • applicationId— Идентификатор приложения IoT Central.
  • messageSource: Источник сообщения — telemetry .
  • deviceId— ИДЕНТИФИКАТОР устройства, отправившего сообщение телеметрии.
  • schema: Имя и версия схемы полезных данных.
  • templateId— Идентификатор шаблона устройства, связанного с устройством.
  • enrichments: Все дополнения, настроенные для экспорта.
  • messageProperties: Дополнительные свойства, отправляемые устройством с сообщением. Эти свойства иногда называют свойствами приложения. Дополнительные сведения см. в документах центра Интернета вещей.

Для концентраторов событий и служебной шины IoT Central быстро экспортирует новое сообщение после получения сообщения с устройства. В свойствах пользователя (также называемых свойствами приложения) каждого сообщения,, iotcentral-device-id iotcentral-application-id и iotcentral-message-source включаются автоматически.

Для хранилища BLOB-объектов сообщения помещаются в пакет и экспортируются один раз в минуту.

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


{
    "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
    "messageSource": "telemetry",
    "deviceId": "1vzb5ghlsg1",
    "schema": "default@v1",
    "templateId": "urn:qugj6vbw5:___qbj_27r",
    "enqueuedTime": "2020-08-05T22:26:55.455Z",
    "telemetry": {
        "Activity": "running",
        "BloodPressure": {
            "Diastolic": 7,
            "Systolic": 71
        },
        "BodyTemperature": 98.73447010562934,
        "HeartRate": 88,
        "HeartRateVariability": 17,
        "RespiratoryRate": 13
    },
    "enrichments": {
      "userSpecifiedKey": "sampleValue"
    },
    "messageProperties": {
      "messageProp": "value"
    }
}

Свойства сообщений

Сообщения телеметрии имеют свойства метаданных в дополнение к полезным данным телеметрии. В предыдущем фрагменте показаны примеры системных сообщений, таких как deviceId и enqueuedTime . Дополнительные сведения о свойствах системных сообщений см. в разделе Свойства системы сообщений центра Интернета вещей D2C.

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

В следующем фрагменте кода показано, как добавить iothub-creation-time-utc свойство в сообщение при его создании на устройстве:

async function sendTelemetry(deviceClient, index) {
  console.log('Sending telemetry message %d...', index);
  const msg = new Message(
    JSON.stringify(
      deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
    )
  );
  msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
  msg.contentType = 'application/json';
  msg.contentEncoding = 'utf-8';
  await deviceClient.sendEvent(msg);
}

В следующем фрагменте кода показано это свойство в сообщении, экспортированном в хранилище BLOB-объектов:

{
  "applicationId":"5782ed70-b703-4f13-bda3-1f5f0f5c678e",
  "messageSource":"telemetry",
  "deviceId":"sample-device-01",
  "schema":"default@v1",
  "templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
  "enqueuedTime":"2021-01-29T16:45:39.143Z",
  "telemetry":{
    "temperature":8.341033560421833
  },
  "messageProperties":{
    "iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
  },
  "enrichments":{}
}

Формат изменения свойства

Каждое сообщение или запись представляет одно изменение в свойстве устройства или облака. Для свойств устройства только изменения в сообщаемом значении экспортируются как отдельное сообщение. В экспортированном сообщении содержатся следующие сведения:

  • applicationId— Идентификатор приложения IoT Central.
  • messageSource: Источник сообщения — properties .
  • messageType: cloudPropertyChange , devicePropertyDesiredChange Или devicePropertyReportedChange .
  • deviceId— ИДЕНТИФИКАТОР устройства, отправившего сообщение телеметрии.
  • schema: Имя и версия схемы полезных данных.
  • templateId— Идентификатор шаблона устройства, связанного с устройством.
  • enrichments: Все дополнения, настроенные для экспорта.

Для концентраторов событий и служебной шины IoT Central экспортирует данные новых сообщений в концентратор событий или в очередь или раздел служебной шины практически в реальном времени. В свойствах пользователя (также называемых свойствами приложения) каждого сообщения,,, iotcentral-device-id iotcentral-application-id iotcentral-message-source и iotcentral-message-type включаются автоматически.

Для хранилища BLOB-объектов сообщения помещаются в пакет и экспортируются один раз в минуту.

В следующем примере показано сообщение об изменении экспортированного свойства, полученное в хранилище BLOB-объектов Azure.

{
    "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
    "messageSource": "properties",
    "messageType": "cloudPropertyChange",
    "deviceId": "18a985g1fta",
    "schema": "default@v1",
    "templateId": "urn:qugj6vbw5:___qbj_27r",
    "enqueuedTime": "2020-08-05T22:37:32.942Z",
    "properties": [{
        "name": "MachineSerialNumber",
        "value": "abc"
    }],
    "enrichments": {
        "userSpecifiedKey" : "sampleValue"
    }
}

Сравнение экспорта устаревших данных и экспорта данных

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

Возможности Экспорт устаревших данных Новый экспорт данных
Доступные типы данных Данные телеметрии, устройства, шаблоны устройств Данные телеметрии, изменения свойств
Фильтрация Нет Зависит от типа экспортируемых данных. Для телеметрии, фильтрации по телеметрии, свойствам сообщений, значениям свойств
Усовершенствования Нет Улучшение с помощью пользовательской строки или значения свойства на устройстве
Места назначения Концентраторы событий Azure, очереди и разделы служебной шины Azure, хранилище BLOB-объектов Azure То же, что и для экспорта устаревших данных и веб-перехватчиков
Версии поддерживаемых приложений V2, V3 Только версия 3
Важные ограничения 5 экспортов на приложение, 1 назначение на экспорт 10 экспортов — подключений назначения на приложение

Дальнейшие действия

Теперь, когда вы умеете использовать новый экспорт данных, предлагаем следующий шаг: Узнайте, как использовать аналитику в IOT Central