Az IoT Central REST API használata adatexportálások kezelésére
Az IoT Central REST API lehetővé teszi az IoT Central-alkalmazásokkal integrálható ügyfélalkalmazások fejlesztését. A REST API-val adatexportálásokat hozhat létre és kezelhet az IoT Central-alkalmazásban.
Minden IoT Central REST API-híváshoz szükség van egy engedélyezési fejlécre. További információ: IoT Central REST API-hívások hitelesítése és engedélyezése.
Az IoT Central REST API referenciadokumentációját lásd: Azure IoT Central REST API-referencia.
Tipp
A Postman használatával kipróbálhatja a cikkben ismertetett REST API-hívásokat. Töltse le az IoT Central Postman gyűjteményt , és importálja a Postmanbe. A gyűjteményben olyan változókat kell beállítania, mint az alkalmazás altartománya és a rendszergazdai jogkivonat.
Az IoT Central felhasználói felületének használatával történő adatexportálás kezeléséről az IoT-adatok Blob Storage-ba való exportálása című témakörben olvashat.
Adatexportálás
Az IoT Central adatexportálási funkciójával telemetriai adatokat, tulajdonságváltozásokat, eszközkapcsolati eseményeket, eszközéletciklus-eseményeket és eszközsablon-életciklus-eseményeket streamelhet olyan célhelyekre, mint a Azure Event Hubs, a Azure Service Bus, a Azure Blob Storage és a webhookvégpontok.
Minden adatexportálási definíció egy vagy több célhelyre küldhet adatokat. Az exportálási definíció létrehozása előtt hozza létre a céldefiníciókat.
Cél létrehozása vagy frissítése
A céldefiníció létrehozásához vagy frissítéséhez használja a következő kérést:
PUT https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
destinationId
a cél egyedi azonosítója.
Az alábbi példa egy blobtároló célhelyét létrehozó kérelemtörzset mutat be:
{
"displayName": "Blob Storage Destination",
"type": "blobstorage@v1",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net",
"containerName": "central-data"
}
A kérelem törzse tartalmaz néhány kötelező mezőt:
displayName
: A célhely neve.type
: A célobjektum típusa. Az alábbiak egyike:blobstorage@v1
,dataexplorer@v1
,eventhubs@v1
,servicebusqueue@v1
, ,servicebustopic@v1
.webhook@v1
connectionString
: A célerőforrás elérésére szolgáló kapcsolati sztring.containerName
: Blob Storage-célhely esetén annak a tárolónak a neve, amelyben az adatokat meg kell írni.
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Cél lekérése azonosító alapján
A következő kéréssel lekérheti egy célhely adatait az alkalmazásból:
GET https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Célhelyek listázása
A következő kéréssel lekérheti a célhelyek listáját az alkalmazásból:
GET https://{your app subdomain}/api/dataExport/destinations?api-version=2022-10-31-preview
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
]
}
Célhely javítása
PATCH https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Ezzel a hívással növekményes frissítést hajthat végre egy exportáláson. A mintakérés törzse a következő példához hasonlóan néz ki, amely frissíti a connectionString
célhelyet:
{
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=********;EndpointSuffix=core.windows.net"
}
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Cél törlése
A célhely törléséhez használja a következő kérést:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Exportálási definíció létrehozása vagy frissítése
Az alábbi kéréssel hozhat létre vagy frissíthet adatexportálási definíciót:
PUT https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
Az alábbi példa egy kérelemtörzset mutat be, amely létrehoz egy exportálási definíciót az eszköz telemetriai adataihoz:
{
"displayName": "Enriched Export",
"enabled": true,
"source": "telemetry",
"enrichments": {
"Custom data": {
"value": "My value"
}
},
"destinations": [
{
"id": "8dbcdb53-c6a7-498a-a976-a824b694c150"
}
]
}
A kérelem törzse tartalmaz néhány kötelező mezőt:
displayName
: Az exportálás megjelenítendő neve.enabled
: Az exportálás indításához/leállításához állítsa le az adatküldést.source
: Az exportálandó adatok típusa.destinations
: Azon célhelyek listája, amelyekre az exportálásnak adatokat kell küldenie. A célazonosítóknak már létezniük kell az alkalmazásban.
Néhány választható mezővel további részleteket adhat hozzá az exportáláshoz.
enrichments
: További információk, amelyeket minden elküldött üzenethez mellékelhet. Az adatok kulcs/érték párok halmazaként jelennek meg, ahol a kulcs a kimeneti üzenetben megjelenő bővítés neve, az érték pedig az elküldendő adatokat azonosítja.filter
: Lekérdezés, amely meghatározza, hogy a forrásból mely eseményeket kell exportálni.
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Bővítés
Az exportáláshoz három bővítési típust adhat hozzá: egyéni sztringeket, rendszertulajdonságokat és egyéni tulajdonságokat:
Az alábbi példa bemutatja, hogyan adhat hozzá egyéni sztringet a enrichments
kimenő üzenethez a csomópont használatával:
"enrichments": {
"My custom string": {
"value": "My value"
},
//...
}
Az alábbi példa bemutatja, hogyan adhat hozzá rendszertulajdonságot a enrichments
kimenő üzenethez a csomópont használatával:
"enrichments": {
"Device template": {
"path": "$templateDisplayName"
},
//...
}
A következő rendszertulajdonságokat adhatja hozzá:
Tulajdonság | Leírás |
---|---|
$enabled |
Engedélyezve van az eszköz? |
$displayName |
Az eszköz neve. |
$templateDisplayName |
Az eszközsablon neve. |
$organizations |
Azok a szervezetek, amelyhez az eszköz tartozik. |
$provisioned |
Ki van építve az eszköz? |
$simulated |
Szimulálja az eszközt? |
Az alábbi példa bemutatja, hogyan adhat hozzá egyéni tulajdonságot a enrichments
kimenő üzenethez a csomópont használatával. Az egyéni tulajdonságok olyan tulajdonságok, amelyek abban az eszközsablonban vannak meghatározva, amelyhez az eszköz társítva van:
"enrichments": {
"Device model": {
"target": "dtmi:azure:DeviceManagement:DeviceInformation;1",
"path": "model"
},
//...
}
Szűrők
Az exportált üzeneteket telemetria- vagy tulajdonságértékek alapján szűrheti.
Az alábbi példa bemutatja, hogyan lehet a filter
mezőt csak olyan üzenetek exportálására használni, ahol a gyorsulásmérő-X telemetria értéke 0-nál nagyobb:
{
"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"
}
Az alábbi példa bemutatja, hogyan lehet a filter
mezőt csak olyan üzenetek exportálására használni, ahol a temperature
telemetriai érték nagyobb a targetTemperature
tulajdonságnál:
{
"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"
}
Exportálás lekérése azonosító alapján
Az alábbi kéréssel kérheti le egy exportálási definíció részleteit az alkalmazásból:
GET https://{your app subdomain}/api/dataExport/exports/{exportId}?api-version=2022-10-31-preview
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Exportálási definíciók listázása
Az alábbi kéréssel lekérheti az alkalmazásból az exportálási definíciók listáját:
GET https://{your app subdomain}/api/dataExport/exports?api-version=2022-10-31-preview
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
]
}
Exportálási definíció javítása
PATCH https://{your app subdomain}/dataExport/exports/{exportId}?api-version=2022-10-31-preview
Ezzel a hívással növekményes frissítést hajthat végre egy exportáláson. A mintakérés törzse az alábbi példához hasonlóan néz ki, amely az exportálást frissíti enrichments
:
{
"enrichments": {
"Custom data": {
"value": "My value 2"
}
}
}
A kérésre adott válasz a következő példához hasonlóan néz ki:
{
"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"
}
Exportálási definíció törlése
Az exportálási definíció törléséhez használja az alábbi kérést:
DELETE https://{your app subdomain}/api/dataExport/destinations/{destinationId}?api-version=2022-10-31-preview
Következő lépések
Most, hogy megismerte, hogyan kezelheti az adatexportálást a REST API-val, a következő javasolt lépés az IoT Central REST API használata az eszközsablonok kezeléséhez.