Как использовать REST API в IoT Central для управления экспортом данных
REST API IoT Central позволяет разрабатывать клиентские приложения, которые интегрируются с приложениями IoT Central. С помощью REST API можно создавать экспорты данных и управлять ими в приложении IoT Central.
Каждому вызову REST API IoT Central требуется заголовок авторизации. Дополнительные сведения см. в разделе Аутентификация и авторизация вызовов REST API IoT Central.
Справочную документацию по REST API IoT Central см. в справочнике по REST API Azure IoT Central.
Совет
Вы можете использовать Postman , чтобы опробовать вызовы REST API, описанные в этой статье. Скачайте коллекцию Postman IoT Central и импортируйте ее в Postman. В коллекции необходимо задать такие переменные, как поддомен приложения и маркер администратора.
Сведения об управлении экспортом данных с помощью пользовательского интерфейса IoT Central см. в статье Экспорт данных Интернета вещей в хранилище BLOB-объектов.
Экспорт данных
Функцию экспорта данных IoT Central можно использовать для потоковой передачи данных телеметрии, изменений свойств, событий подключения устройств, событий жизненного цикла устройства и событий жизненного цикла шаблона устройства в назначения, такие как Центры событий Azure, Служебная шина Azure, Хранилище BLOB-объектов Azure и конечные точки веб-перехватчика.
Каждое определение экспорта данных может отправлять данные в одно или несколько назначений. Создайте определения назначения перед созданием определения экспорта.
Создание или обновление назначения
Используйте следующий запрос, чтобы создать или обновить определение назначения:
PUT https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
destinationId
— это уникальный идентификатор назначения.
В следующем примере показан текст запроса, который создает назначение хранилища BLOB-объектов:
{
"displayName": "Blob Storage Destination",
"type": "blobstorage@v1",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net",
"containerName": "central-data"
}
Текст запроса содержит некоторые обязательные поля:
-
displayName
: отображаемое имя назначения. -
type
: тип целевого объекта. Один из:blobstorage@v1
,dataexplorer@v1
,eventhubs@v1
,servicebusqueue@v1
,servicebustopic@v1
, .webhook@v1
-
connectionString
: строка подключения для доступа к целевому ресурсу. -
containerName
: для назначения хранилища BLOB-объектов — имя контейнера, в который должны записываться данные.
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "connectionString",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;EndpointSuffix=core.windows.net",
"containerName": "central-data"
},
"status": "waiting"
}
Получение назначения по идентификатору
Используйте следующий запрос, чтобы получить сведения о назначении из приложения:
GET https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "connectionString",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;EndpointSuffix=core.windows.net",
"containerName": "central-data"
},
"status": "waiting"
}
Перечисление назначений
Используйте следующий запрос, чтобы получить список назначений из приложения:
GET https://{your app subdomain}/api/dataExport/destinations?api-version=2022-10-31-preview
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"value": [
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage Destination",
"type": "blobstorage@v1",
"authorization": {
"type": "connectionString",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net",
"containerName": "central-data"
},
"status": "waiting"
},
{
"id": "9742a8d9-c3ca-4d8d-8bc7-357bdc7f39d9",
"displayName": "Webhook destination",
"type": "webhook@v1",
"url": "https://eofnjsh68jdytan.m.pipedream.net",
"headerCustomizations": {},
"status": "error"
}
]
}
Исправление назначения
PATCH https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Этот вызов можно использовать для выполнения добавочного обновления экспорта. Пример текста запроса выглядит так, как в следующем примере, который обновляет connectionString
объект назначения:
{
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net"
}
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "connectionString",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;EndpointSuffix=core.windows.net",
"containerName": "central-data"
},
"status": "waiting"
}
Удаление назначения
Используйте следующий запрос, чтобы удалить назначение:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Создание или обновление определения экспорта
Используйте следующий запрос, чтобы создать или обновить определение экспорта данных:
PUT https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
В следующем примере показан текст запроса, который создает определение экспорта для телеметрии устройства:
{
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150"
}
]
}
Текст запроса содержит некоторые обязательные поля:
-
displayName
: отображаемое имя экспорта. -
enabled
: переключение для запуска и остановки экспорта от отправки данных. -
source
: тип экспортируемых данных. -
destinations
: список назначений, в которые экспорт должен отправлять данные. Идентификаторы назначения должны уже существовать в приложении.
Существуют некоторые необязательные поля, которые можно использовать для добавления дополнительных сведений в экспорт.
-
enrichments
: дополнительные фрагменты информации, включаемые в каждое отправленное сообщение. Данные представляются в виде набора пар "ключ-значение", где ключ — это имя обогащения, которое будет отображаться в выходном сообщении, а значение определяет данные для отправки. -
filter
: запрос, определяющий, какие события из источника следует экспортировать.
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "6e93df53-1ce5-45e4-ad61-3eb0d684b3a5",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "9742a8d9-c3ca-4d8d-8bc7-357bdc7f39d9"
}
],
"status": "starting"
}
Обогащения
Существует три типа обогащения, которые можно добавить в экспорт: пользовательские строки, системные свойства и пользовательские свойства:
В следующем примере показано, как использовать enrichments
узел для добавления настраиваемой строки в исходящее сообщение:
"enrichments": {
"My custom string": {
"value": "My value"
},
//...
}
В следующем примере показано, как использовать enrichments
узел для добавления системного свойства в исходящее сообщение:
"enrichments": {
"Device template": {
"path": "$templateDisplayName"
},
//...
}
Можно добавить следующие системные свойства:
Свойство | Описание |
---|---|
$enabled |
Включено ли устройство? |
$displayName |
Имя устройства. |
$templateDisplayName |
Имя шаблона устройства. |
$organizations |
Организации, к которой принадлежит устройство. |
$provisioned |
Подготовлено ли устройство? |
$simulated |
Имитируется ли устройство? |
В следующем примере показано, как использовать enrichments
узел для добавления пользовательского свойства в исходящее сообщение. Пользовательские свойства — это свойства, определенные в шаблоне устройства, с которым связано устройство:
"enrichments": {
"Device model": {
"target": "dtmi:azure:DeviceManagement:DeviceInformation;1",
"path": "model"
},
//...
}
Фильтры
Вы можете фильтровать экспортированные сообщения на основе данных телеметрии или значений свойств.
В следующем примере показано, как использовать filter
поле для экспорта только сообщений, в которых значение телеметрии акселерометра-X больше 0:
{
"id": "export-001",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"filter": "SELECT * FROM dtmi:eclipsethreadx:devkit:gsgmxchip;1 WHERE accelerometerX > 0",
"destinations": [
{
"id": "dest-001"
}
],
"status": "healthy"
}
В следующем примере показано, как использовать filter
поле для экспорта только сообщений, temperature
значение телеметрии которых больше targetTemperature
свойства :
{
"id": "export-001",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"filter": "SELECT * FROM dtmi:eclipsethreadx:devkit:gsgmxchip;1 AS A, dtmi:contoso:Thermostat;1 WHERE A.temperature > targetTemperature",
"destinations": [
{
"id": "dest-001"
}
],
"status": "healthy"
}
Получение экспорта по идентификатору
Используйте следующий запрос, чтобы получить сведения об определении экспорта из приложения:
GET https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage Destination",
"type": "blobstorage@v1",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net",
"containerName": "central-data",
"status": "waiting"
}
Вывод списка определений экспорта
Используйте следующий запрос, чтобы получить список определений экспорта из приложения:
GET https://{your app subdomain}/api/dataExport/exports?api-version=2022-10-31-preview
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"value": [
{
"id": "6e93df53-1ce5-45e4-ad61-3eb0d684b3a5",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "9742a8d9-c3ca-4d8d-8bc7-357bdc7f39d9"
}
],
"status": "starting"
},
{
"id": "802894c4-33bc-4f1e-ad64-e886f315cece",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "9742a8d9-c3ca-4d8d-8bc7-357bdc7f39d9"
}
],
"status": "healthy"
}
]
}
Исправление определения экспорта
PATCH https://{your app subdomain}/dataExport/exports/{exportId}?api-version=2022-10-31-preview
Этот вызов можно использовать для выполнения добавочного обновления экспорта. Пример текста запроса выглядит так, как в следующем примере, который обновляет до enrichments
экспорта:
{
"enrichments": {
"Custom data": {
"value": "My value 2"
}
}
}
Ответ на этот запрос выглядит, как показано в примере ниже.
{
"id": "6e93df53-1ce5-45e4-ad61-3eb0d684b3a5",
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value 2"
}
},
"destinations": [
{
"id": "9742a8d9-c3ca-4d8d-8bc7-357bdc7f39d9"
}
],
"status": "healthy"
}
Удаление определения экспорта
Используйте следующий запрос, чтобы удалить определение экспорта:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Дальнейшие действия
Теперь, когда вы узнали, как управлять экспортом данных с помощью REST API, рекомендуем перейти к следующему шагу: Использование REST API IoT Central для управления шаблонами устройств.
Кері байланыс
https://aka.ms/ContentUserFeedback.
Жақында қолжетімді болады: 2024 жыл бойы біз GitHub Issues жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру