Jak zarządzać eksportem danych za pomocą interfejsu API REST usługi IoT Central
Interfejs API REST usługi IoT Central umożliwia tworzenie aplikacji klienckich, które integrują się z aplikacjami usługi IoT Central. Interfejs API REST umożliwia tworzenie eksportów danych i zarządzanie nimi w aplikacji usługi IoT Central.
Każde wywołanie interfejsu API REST usługi IoT Central wymaga nagłówka autoryzacji. Aby dowiedzieć się więcej, zobacz Jak uwierzytelniać i autoryzować wywołania interfejsu API REST usługi IoT Central.
Aby uzyskać dokumentację referencyjną interfejsu API REST usługi IoT Central, zobacz Dokumentacja interfejsu API REST usługi Azure IoT Central.
Aby dowiedzieć się, jak zarządzać eksportem danych przy użyciu interfejsu użytkownika usługi IoT Central, zobacz Eksportowanie danych IoT do usługi Blob Storage.
Eksport danych
Za pomocą funkcji eksportu danych usługi IoT Central można przesyłać strumieniowo dane telemetryczne, zmiany właściwości, zdarzenia łączności urządzeń, zdarzenia cyklu życia urządzenia i zdarzenia cyklu życia szablonu urządzenia do miejsc docelowych, takich jak Azure Event Hubs, Azure Service Bus, Azure Blob Storage i punkty końcowe elementu webhook.
Każda definicja eksportu danych może wysyłać dane do co najmniej jednego miejsca docelowego. Przed utworzeniem definicji eksportu utwórz definicje docelowe.
Tworzenie lub aktualizowanie miejsca docelowego
Użyj następującego żądania, aby utworzyć lub zaktualizować definicję docelową:
PUT https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
destinationId
jest unikatowym identyfikatorem miejsca docelowego.
W poniższym przykładzie przedstawiono treść żądania, która tworzy miejsce docelowe magazynu obiektów blob:
{
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "systemAssignedManagedIdentity",
"endpointUri": "https://yourapplication.blob.core.windows.net/",
"containerName": "central-data"
}
}
Treść żądania zawiera kilka wymaganych pól:
displayName
: Nazwa wyświetlana miejsca docelowego.type
: typ obiektu docelowego. Jeden z:blobstorage@v1
, ,eventhubs@v1
dataexplorer@v1
,servicebusqueue@v1
, ,servicebustopic@v1
.webhook@v1
authorization
: szczegóły autoryzacji dla miejsca docelowego. Obsługiwane typy autoryzacji tosystemAssignedManagedIdentity
iconnectionString
.
Odpowiedź na to żądanie wygląda następująco:
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "systemAssignedManagedIdentity",
"endpointUri": "https://yourapplication.blob.core.windows.net/",
"containerName": "central-data"
},
"status": "waiting"
}
Pobieranie miejsca docelowego według identyfikatora
Użyj następującego żądania, aby pobrać szczegóły miejsca docelowego z aplikacji:
GET https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Odpowiedź na to żądanie wygląda następująco:
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "systemAssignedManagedIdentity",
"endpointUri": "https://yourapplication.blob.core.windows.net/",
"containerName": "central-data"
},
"status": "waiting"
}
Wyświetlanie listy miejsc docelowych
Użyj następującego żądania, aby pobrać listę miejsc docelowych z aplikacji:
GET https://{your app subdomain}/api/dataExport/destinations?api-version=2022-10-31-preview
Odpowiedź na to żądanie wygląda następująco:
{
"value": [
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage Destination",
"type": "blobstorage@v1",
"authorization": {
"type": "systemAssignedManagedIdentity",
"endpointUri": "https://yourapplication.blob.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"
}
]
}
Stosowanie poprawek do miejsca docelowego
PATCH https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
To wywołanie służy do przeprowadzania przyrostowej aktualizacji eksportu. Przykładowa treść żądania wygląda podobnie do następującego przykładu, który aktualizuje containerName
lokalizację docelową:
{
"containerName": "central-data-analysis"
}
Odpowiedź na to żądanie wygląda następująco:
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150",
"displayName": "Blob Storage",
"type": "blobstorage@v1",
"authorization": {
"type": "systemAssignedManagedIdentity",
"endpointUri": "https://yourapplication.blob.core.windows.net/",
"containerName": "central-data-analysis"
},
"status": "waiting"
}
Usuwanie miejsca docelowego
Użyj następującego żądania, aby usunąć miejsce docelowe:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Tworzenie lub aktualizowanie definicji eksportu
Użyj następującego żądania, aby utworzyć lub zaktualizować definicję eksportu danych:
PUT https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
W poniższym przykładzie przedstawiono treść żądania, która tworzy definicję eksportu dla telemetrii urządzenia:
{
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150"
}
]
}
Treść żądania zawiera kilka wymaganych pól:
displayName
: Nazwa wyświetlana eksportu.enabled
: Przełącz, aby uruchomić/zatrzymać eksportowanie z wysyłania danych.source
: typ danych do wyeksportowania.destinations
: lista miejsc docelowych, do których eksport powinien wysyłać dane. Identyfikatory docelowe muszą już istnieć w aplikacji.
Istnieje kilka opcjonalnych pól, których można użyć, aby dodać więcej szczegółów do eksportu.
enrichments
: Dodatkowe informacje, które mają zostać dołączone do każdej wysłanej wiadomości. Dane są reprezentowane jako zestaw par klucz/wartość, gdzie klucz jest nazwą wzbogacania wyświetlaną w komunikacie wyjściowym, a wartość identyfikuje dane do wysłania.filter
: Kwerenda definiująca, które zdarzenia ze źródła powinny być eksportowane.
Odpowiedź na to żądanie wygląda następująco:
{
"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"
}
Wzbogacenia
Istnieją trzy typy wzbogacania, które można dodać do eksportu: niestandardowe ciągi, właściwości systemu i właściwości niestandardowe:
W poniższym przykładzie pokazano, jak za pomocą węzła enrichments
dodać ciąg niestandardowy do komunikatu wychodzącego:
"enrichments": {
"My custom string": {
"value": "My value"
},
//...
}
W poniższym przykładzie pokazano, jak za pomocą węzła enrichments
dodać właściwość systemową do komunikatu wychodzącego:
"enrichments": {
"Device template": {
"path": "$templateDisplayName"
},
//...
}
Możesz dodać następujące właściwości systemowe:
Właściwości | opis |
---|---|
$enabled |
Czy urządzenie jest włączone? |
$displayName |
Nazwa urządzenia. |
$templateDisplayName |
Nazwa szablonu urządzenia. |
$organizations |
Organizacje, do których należy urządzenie. |
$provisioned |
Czy urządzenie jest aprowidowane? |
$simulated |
Czy urządzenie jest symulowane? |
W poniższym przykładzie pokazano, jak za pomocą węzła enrichments
dodać właściwość niestandardową do komunikatu wychodzącego. Właściwości niestandardowe są właściwościami zdefiniowanymi w szablonie urządzenia skojarzonym z:
"enrichments": {
"Device model": {
"target": "dtmi:azure:DeviceManagement:DeviceInformation;1",
"path": "model"
},
//...
}
Filtry
Wyeksportowane komunikaty można filtrować na podstawie danych telemetrycznych lub wartości właściwości.
W poniższym przykładzie pokazano, jak używać filter
pola do eksportowania tylko komunikatów, w których wartość telemetrii accelerometer-X jest większa niż 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"
}
W poniższym przykładzie pokazano, jak używać filter
pola do eksportowania tylko komunikatów, w których temperature
wartość telemetrii jest większa niż targetTemperature
właściwość:
{
"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"
}
Pobieranie eksportu według identyfikatora
Użyj następującego żądania, aby pobrać szczegóły definicji eksportu z aplikacji:
GET https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
Odpowiedź na to żądanie wygląda następująco:
{
"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"
}
Wyświetlanie listy definicji eksportu
Użyj następującego żądania, aby pobrać listę definicji eksportu z aplikacji:
GET https://{your app subdomain}/api/dataExport/exports?api-version=2022-10-31-preview
Odpowiedź na to żądanie wygląda następująco:
{
"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"
}
]
}
Stosowanie poprawek definicji eksportu
PATCH https://{your app subdomain}/dataExport/exports/{exportId}?api-version=2022-10-31-preview
To wywołanie służy do przeprowadzania przyrostowej aktualizacji eksportu. Przykładowa treść żądania wygląda podobnie do następującego przykładu enrichments
, który aktualizuje element do eksportu:
{
"enrichments": {
"Custom data": {
"value": "My value 2"
}
}
}
Odpowiedź na to żądanie wygląda następująco:
{
"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"
}
Usuwanie definicji eksportu
Użyj następującego żądania, aby usunąć definicję eksportu:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Następne kroki
Teraz, gdy wiesz już, jak zarządzać eksportem danych za pomocą interfejsu API REST, sugerowanym następnym krokiem jest użycie interfejsu API REST usługi IoT Central do zarządzania szablonami urządzeń.