Använda IoT Central REST API till att skapa och hantera jobb
Med REST API för IoT Central kan du utveckla klientprogram som integreras med IoT Central-program. Du kan använda REST-API:et för att skapa och hantera jobb i ditt IoT Central-program. Med REST-API:et kan du:
- Visa jobb och visa jobbinformation i ditt program.
- Skapa jobb i ditt program.
- Stoppa, återuppta och kör jobb igen i programmet.
- Schemalägg jobb och visa schemalagd jobbinformation i ditt program.
Schemalagda jobb skapas för körning vid en framtida tidpunkt. Du kan ange startdatum och tid för ett schemalagt jobb som ska köras en gång, varje dag eller varje vecka. Icke-schemalagda jobb körs bara en gång.
Den här artikeln beskriver hur du använder API:et /jobs/{job_id}
för att styra enheter i grupp. Du kan också styra enheter individuellt.
Varje IoT Central REST API-anrop kräver ett auktoriseringshuvud. Mer information finns i Autentisera och auktorisera IoT Central REST API-anrop.
Referensdokumentationen för REST API:et för IoT Central finns i Referens för Rest API för Azure IoT Central.
Information om hur du skapar och hanterar jobb i användargränssnittet finns i Hantera enheter i grupp i ditt Azure IoT Central-program.
Nyttolaster för jobb
Många av API:erna som beskrivs i den här artikeln innehåller en definition som ser ut som följande JSON-kodfragment:
{
"id": "job-014",
"displayName": "Set target temperature",
"description": "Set target temperature for all thermostat devices",
"group": "833d7a7d-8f99-4e04-9e56-745806bdba6e",
"batch": {
"type": "percentage",
"value": 25
},
"cancellationThreshold": {
"type": "percentage",
"value": 10,
"batch": false
},
"data": [
{
"type": "PropertyJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "targetTemperature",
"value": "56"
}
],
"status": "complete"
}
I följande tabell beskrivs fälten i föregående JSON-kodfragment:
Fält | beskrivning |
---|---|
id |
Ett unikt ID för jobbet i ditt program. |
displayName |
Visningsnamnet för jobbet i programmet. |
description |
En beskrivning av jobbet. |
group |
ID:t för den enhetsgrupp som jobbet gäller för. Använd rest-API:et deviceGroups för förhandsversion för att hämta en lista över enhetsgrupperna i ditt program. |
status |
Jobbets status . En av complete , cancelled , failed , pending , running , . stopped |
batch |
Om det finns definierar det här avsnittet hur du batchar enheterna i jobbet. |
batch/type |
Storleken på varje batch är antingen en percentage av de totala enheterna i gruppen eller en number av enheterna. |
batch/value |
Antingen procentandelen enheter eller antalet enheter i varje batch. |
cancellationThreshold |
Om det finns definierar det här avsnittet tröskelvärdet för annullering för jobbet. |
cancellationThreshold/batch |
true eller false . Om sant anges tröskelvärdet för annullering för varje batch. Om false gäller tröskelvärdet för annullering för hela jobbet. |
cancellationThreshold/type |
Annulleringströskeln för jobbet är antingen en percentage eller en number av enheterna. |
cancellationThreshold/value |
Antingen procentandelen enheter eller antalet enheter som definierar tröskelvärdet för annullering. |
data |
En matris med åtgärder som jobbet utför. |
data/type |
En av PropertyJobData , CommandJobData , CloudPropertyJobData eller DeviceTemplateMigrationJobData . Förhandsversionen av API:et innehåller DeviceManifestMigrationJobData . |
data/target |
Modell-ID för målenheterna. |
data/path |
Namnet på egenskapen, kommandot eller molnegenskapen. |
data/value |
Egenskapsvärdet som ska anges eller kommandoparametern som ska skickas. |
Hämta jobbinformation
Använd följande begäran för att hämta listan över jobben i ditt program:
GET https://{your app subdomain}.azureiotcentral.com/api/jobs?api-version=2022-07-31
Svaret på den här begäran ser ut som i följande exempel:
{
"value": [
{
"id": "job-006",
"displayName": "Set customer name",
"description": "Set the customer name cloud property",
"group": "4fcbec3b-5ee8-4324-855d-0f03b56bcf7f",
"data": [
{
"type": "CloudPropertyJobData",
"target": "dtmi:modelDefinition:bojo9tfju:yfvu5gv2vl",
"path": "CustomerName",
"value": "Contoso"
}
],
"status": "complete"
},
{
"id": "job-005",
"displayName": "Set target temperature",
"description": "Set target temperature device property",
"group": "833d7a7d-8f99-4e04-9e56-745806bdba6e",
"data": [
{
"type": "PropertyJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "targetTemperature",
"value": 56
}
],
"status": "complete"
},
{
"id": "job-004",
"displayName": "Run device report",
"description": "Call command to run the device reports",
"group": "833d7a7d-8f99-4e04-9e56-745806bdba6e",
"batch": {
"type": "percentage",
"value": 25
},
"cancellationThreshold": {
"type": "percentage",
"value": 10,
"batch": false
},
"data": [
{
"type": "CommandJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "getMaxMinReport",
"value": "2021-06-15T05:00:00.000Z"
}
],
"status": "complete"
}
]
}
Använd följande begäran för att hämta ett enskilt jobb efter ID:
GET https://{your app subdomain}.azureiotcentral.com/api/jobs/job-004?api-version=2022-07-31
Svaret på den här begäran ser ut som i följande exempel:
{
"id": "job-004",
"displayName": "Run device report",
"description": "Call command to run the device reports",
"group": "833d7a7d-8f99-4e04-9e56-745806bdba6e",
"batch": {
"type": "percentage",
"value": 25
},
"cancellationThreshold": {
"type": "percentage",
"value": 10,
"batch": false
},
"data": [
{
"type": "CommandJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "getMaxMinReport",
"value": "2021-06-15T05:00:00.000Z"
}
],
"status": "complete"
}
Använd följande begäran för att hämta information om enheterna i ett jobb:
GET https://{your app subdomain}.azureiotcentral.com/api/jobs/job-004/devices?api-version=2022-07-31
Svaret på den här begäran ser ut som i följande exempel:
{
"value": [
{
"id": "therm-01",
"status": "completed"
},
{
"id": "therm-02",
"status": "completed"
},
{
"id": "therm-03",
"status": "completed"
},
{
"id": "therm-04",
"status": "completed"
}
]
}
Skapa ett jobb
Använd följande begäran för att skapa ett jobb:
PUT https://{your app subdomain}.azureiotcentral.com/api/jobs/job-006?api-version=2022-07-31
Fältet group
i begärandetexten identifierar en enhetsgrupp i ditt IoT Central-program. Ett jobb använder en enhetsgrupp för att identifiera vilken uppsättning enheter jobbet körs på.
Om du inte redan har en lämplig enhetsgrupp kan du skapa en med REST API-anrop. I följande exempel skapas en enhetsgrupp med group1
som grupp-ID:
PUT https://{your app subdomain}/api/deviceGroups/group1?api-version=2022-07-31
När du skapar en enhetsgrupp definierar du en filter
som väljer vilka enheter som ska ingå i gruppen. Ett filter identifierar en enhetsmall och eventuella egenskaper som ska matchas. I följande exempel skapas en enhetsgrupp som innehåller alla enheter som är associerade med enhetsmallen "dtmi:modelDefinition:dtdlv2" där provisioned
egenskapen är true
.
{
"displayName": "Device group 1",
"description": "Custom device group.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true"
}
Svaret på den här begäran ser ut som i följande exempel:
{
"id": "group1",
"displayName": "Device group 1",
"description": "Custom device group.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true"
}
Du kan nu använda id
värdet från svaret för att skapa ett nytt jobb.
{
"displayName": "Set target temperature",
"description": "Set target temperature device property",
"group": "group1",
"batch": {
"type": "percentage",
"value": 25
},
"cancellationThreshold": {
"type": "percentage",
"value": 10,
"batch": false
},
"data": [
{
"type": "PropertyJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "targetTemperature",
"value": "55"
}
]
}
Svaret på den här begäran ser ut som i följande exempel. Den inledande jobbstatusen är pending
:
{
"id": "job-006",
"displayName": "Set target temperature",
"description": "Set target temperature device property",
"group": "group1",
"batch": {
"type": "percentage",
"value": 25
},
"cancellationThreshold": {
"type": "percentage",
"value": 10,
"batch": false
},
"data": [
{
"type": "PropertyJobData",
"target": "dtmi:modelDefinition:zomtmdxh:eqod32zbyl",
"path": "targetTemperature",
"value": "55"
}
],
"status": "pending"
}
Stoppa, återuppta och köra jobb igen
Använd följande begäran för att stoppa ett jobb som körs:
POST https://{your app subdomain}.azureiotcentral.com/api/jobs/job-006/stop?api-version=2022-07-31
Om begäran lyckas returnerar den ett 204 - No Content
svar.
Använd följande begäran för att återuppta ett stoppat jobb:
POST https://{your app subdomain}.azureiotcentral.com/api/jobs/job-006/resume?api-version=2022-07-31
Om begäran lyckas returnerar den ett 204 - No Content
svar.
Använd följande kommando för att köra ett befintligt jobb på alla misslyckade enheter:
PUT https://{your app subdomain}.azureiotcentral.com/api/jobs/job-006/rerun/rerun-001?api-version=2022-07-31
Skapa ett schemalagt jobb
Nyttolasten för ett schemalagt jobb liknar ett standardjobb men innehåller följande extra fält:
Fält | beskrivning |
---|---|
schema/start | Startdatum och tid för jobbet i ISO 8601-format |
schema/upprepning | En av daily , monthly , yearly | |
schema/slut | Ett valfritt fält som antingen anger antalet förekomster för jobbet eller ett slutdatum i ISO 8601-format |
PUT https://{your app subdomain}.azureiotcentral.com/api/scheduledJobs/scheduled-Job-001?api-version=2022-07-31
I följande exempel visas en begärandetext som skapar ett schemalagt jobb.
{
"displayName": "New Scheduled Job",
"group": "6fecf96f-a26c-49ed-8076-6960f8efba31",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:eclipsethreadx:devkit:hlby5jgib2o",
"path": "Company",
"value": "Contoso"
}
],
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "daily",
"end": {
"type": "date",
"date": "2022-12-30"
}
}
}
Svaret på den här begäran ser ut som i följande exempel:
{
"id": "scheduled-Job-001",
"displayName": "New Scheduled Job",
"description": "",
"group": "6fecf96f-a26c-49ed-8076-6960f8efba31",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:eclipsethreadx:devkit:hlby5jgib2o",
"path": "Company",
"value": "Contoso"
}
],
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "daily",
"end": {
"type": "date",
"date": "2022-12-30"
}
},
"enabled": false,
"completed": false,
"etag": "\"88003877-0000-0700-0000-631020670000\""
}
Hämta ett schemalagt jobb
Använd följande begäran för att hämta ett schemalagt jobb:
GET https://{your app subdomain}.azureiotcentral.com/api/scheduledJobs/scheduled-Job-001?api-version=2022-07-31
Svaret på den här begäran ser ut som i följande exempel:
{
"id": "scheduled-Job-001",
"displayName": "New Scheduled Job",
"description": "",
"group": "6fecf96f-a26c-49ed-8076-6960f8efba31",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:eclipsethreadx:devkit:hlby5jgib2o",
"path": "Company",
"value": "Contoso"
}
],
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "daily"
},
"enabled": false,
"completed": false,
"etag": "\"88003877-0000-0700-0000-631020670000\""
}
Lista schemalagda jobb
Använd följande begäran för att hämta en lista över schemalagda jobb:
GET https://{your app subdomain}.azureiotcentral.com/api/scheduledJobs?api-version=2022-07-31
Svaret på den här begäran ser ut som i följande exempel:
{
"value": [
{
"id": "scheduled-Job-001",
"displayName": "New Scheduled Job",
"description": "",
"group": "6fecf96f-a26c-49ed-8076-6960f8efba31",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:eclipsethreadx:devkit:hlby5jgib2o",
"path": "Company",
"value": "Contoso"
}
],
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "daily"
},
"enabled": false,
"completed": false,
"etag": "\"88003877-0000-0700-0000-631020670000\""
},
{
"id": "46480dff-dc22-4542-924e-a5d45bf347aa",
"displayName": "test",
"description": "",
"group": "cdd04344-bb55-425b-a55a-954d68383289",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:rigado:evxfmi0xim",
"path": "test",
"value": 2
}
],
"schedule": {
"start": "2022-09-01T03:00:00.000Z"
},
"enabled": true,
"completed": true,
"etag": "\"88000f76-0000-0700-0000-631020310000\""
}
]
}
Uppdatera ett schemalagt jobb
Använd följande begäran för att uppdatera ett schemalagt jobb:
PATCH https://{your app subdomain}.azureiotcentral.com/api/scheduledJobs/scheduled-Job-001?api-version=2022-07-31
I följande exempel visas en begärandetext som uppdaterar ett schemalagt jobb.
{
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "weekly"
}
}
Svaret på den här begäran ser ut som i följande exempel:
{
"id": "scheduled-Job-001",
"displayName": "New Scheduled Job",
"description": "",
"group": "6fecf96f-a26c-49ed-8076-6960f8efba31",
"data": [
{
"type": "cloudProperty",
"target": "dtmi:eclipsethreadx:devkit:hlby5jgib2o",
"path": "Company",
"value": "Contoso"
}
],
"schedule": {
"start": "2022-10-24T22:29:01Z",
"recurrence": "weekly"
},
"enabled": false,
"completed": false,
"etag": "\"88003877-0000-0700-0000-631020670000\""
}
Ta bort ett schemalagt jobb
Använd följande begäran för att ta bort ett schemalagt jobb
GET https://{your app subdomain}.azureiotcentral.com/api/scheduledJobs/scheduled-Job-001?api-version=2022-07-31
Nästa steg
Nu när du har lärt dig hur du hanterar jobb med REST-API:et är ett föreslaget nästa steg att lära dig självstudie : Använda REST API för att hantera ett Azure IoT Central-program.