Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'hub IoT di Azure consente diversi blocchi predefiniti, ad esempio le proprietà e i tag dei dispositivi gemelli e imetodi diretti. In genere, le app back-end consentono agli amministratori e agli operatori dei dispositivi di aggiornare e interagire con i dispositivi IoT in blocco e in un orario pianificato. I processi eseguono gli aggiornamenti dei dispositivi gemelli e i metodi diretti su un set di dispositivi in un orario pianificato. Ad esempio, un operatore userà un'app back-end che avvia e tiene traccia di un processo per riavviare un set di dispositivi nell'edificio 43 e al piano 3 alla volta che non comporterebbe interruzioni delle operazioni dell'edificio.
Annotazioni
Le funzionalità descritte in questo articolo sono disponibili solo nel livello standard dell'hub IoT. Per altre informazioni sui livelli di hub IoT di base e standard/gratuiti, vedere Scegliere il livello e le dimensioni dell'hub IoT corretti per la soluzione.
È consigliabile usare i processi quando è necessario pianificare e tenere traccia dello stato di avanzamento di una delle attività seguenti in un set di dispositivi:
- Aggiornare le proprietà desiderate
- Aggiornare i tag
- Richiamare metodi diretti
Ciclo di vita del processo
I processi vengono avviati dal back-end della soluzione e gestiti dall'hub IoT. È possibile avviare un processo tramite un URI rivolto al servizio (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12) e eseguire una query sullo stato di avanzamento di un processo in esecuzione tramite un URI rivolto al servizio (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12). Per aggiornare lo stato dei processi in esecuzione dopo l'avvio di un processo, eseguire una query di processo. Non esiste alcuna eliminazione esplicita della cronologia dei processi, ma hanno un TTL di 30 giorni.
Annotazioni
Quando si avvia un processo, i nomi e i valori delle proprietà possono contenere solo US-ASCII alfanumerico stampabile, ad eccezione di qualsiasi nel set seguente: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Annotazioni
Il jobId campo deve contenere almeno 64 caratteri e può contenere solo US-ASCII lettere, numeri e il trattino (-).
Processi per eseguire metodi diretti
Il frammento di codice seguente mostra i dettagli della richiesta HTTPS 1.1 per l'esecuzione di un metodo diretto in un set di dispositivi usando un processo:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "<methodName>",
"payload": <payload>,
"responseTimeoutInSeconds": methodTimeoutInSeconds
},
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
La condizione di query può anche trovarsi in un singolo ID dispositivo o in un elenco di ID dispositivo, come illustrato negli esempi seguenti:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
Il linguaggio di query dell'hub IoT illustra in dettaglio il linguaggio di query dell'hub IoT.
Il frammento di codice seguente mostra la richiesta e la risposta per un processo pianificato per chiamare un metodo diretto denominato testMethod in tutti i dispositivi in contoso-hub-1:
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job01?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=68iv------------------------------------v8Hxalg%3D&se=1556849884&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 317
{
"jobId": "job01",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "testMethod",
"payload": {},
"responseTimeoutInSeconds": 30
},
"queryCondition": "*",
"startTime": "2019-05-04T15:53:00.077Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 65
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 01:46:18 GMT
{"jobId":"job01","type":"scheduleDeviceMethod","status":"queued"}
Processi per aggiornare le proprietà dei dispositivi gemelli
Il frammento di codice seguente mostra i dettagli della richiesta HTTPS 1.1 per aggiornare le proprietà dei dispositivi gemelli usando un processo:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleUpdateTwin",
"updateTwin": <patch> // Valid JSON object
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
Annotazioni
La proprietà updateTwin richiede una corrispondenza etag valida; ad esempio . etag="*"
Il frammento di codice seguente mostra la richiesta e la risposta per un processo pianificato per aggiornare le proprietà del dispositivo gemello per test-device in contoso-hub-1:
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job02?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=BN0U-------------------------------------RuA%3D&se=1556925787&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 339
{
"jobId": "job02",
"type": "scheduleUpdateTwin",
"updateTwin": {
"properties": {
"desired": {
"test1": "value1"
}
},
"etag": "*"
},
"queryCondition": "deviceId = 'test-device'",
"startTime": "2019-05-08T12:19:56.868Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 22:45:13 GMT
{"jobId":"job02","type":"scheduleUpdateTwin","status":"queued"}
Esecuzione di query sullo stato di avanzamento dei processi
Il frammento di codice seguente mostra i dettagli della richiesta HTTPS 1.1 per l'esecuzione di query per i processi:
GET /jobs/v2/query?api-version=2021-04-12[&jobType=<jobType>][&jobStatus=<jobStatus>][&pageSize=<pageSize>][&continuationToken=<continuationToken>]
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
La proprietà continuationToken viene fornita dalla risposta.
È possibile eseguire query sullo stato di esecuzione del processo in ogni dispositivo usando il linguaggio di query dell'hub IoT per dispositivi gemelli, processi e routing dei messaggi.
Proprietà dei processi
L'elenco seguente mostra le proprietà e le descrizioni corrispondenti, che possono essere usate durante l'esecuzione di query per i processi o i risultati del processo.
| Proprietà | Description |
|---|---|
| jobId | ID fornito dall'applicazione per il processo. |
| startTime | Ora di inizio fornita dall'applicazione (ISO-8601) per il processo. |
| endTime | Data specificata dell'hub IoT (ISO-8601) per il completamento del processo. Valido solo dopo che il processo raggiunge lo stato "completato". |
| maxExecutionTimeInSeconds | L'applicazione ha fornito il tempo totale massimo consentito dall'avvio del processo fino al completamento. |
| type | Tipi di processi: |
| scheduleUpdateTwin: processo usato per aggiornare un set di proprietà o tag desiderati. | |
| scheduleDeviceMethod: processo usato per richiamare un metodo del dispositivo in un set di dispositivi gemelli. | |
| stato | Stato corrente del processo. Valori possibili per lo stato: |
| in sospeso: pianificato e in attesa di essere prelevato dal servizio di processo. | |
| pianificato: pianificato per un'ora in futuro. | |
| running: processo attualmente attivo. | |
| annullata: il processo è stato annullato. | |
| failed: processo non riuscito. | |
| completato: il processo è stato completato. | |
| deviceJobStatistics | Statistiche sull'esecuzione del processo. |
| proprietà deviceJobStatistics : | |
| deviceJobStatistics.deviceCount: numero di dispositivi nel processo. | |
| deviceJobStatistics.failedCount: numero di dispositivi in cui il processo non è riuscito. | |
| deviceJobStatistics.succeededCount: numero di dispositivi in cui il processo è riuscito. | |
| deviceJobStatistics.runningCount: numero di dispositivi che attualmente eseguono il processo. | |
| deviceJobStatistics.pendingCount: numero di dispositivi in sospeso per l'esecuzione del processo. |
Materiale di riferimento aggiuntivo
Altri argomenti di riferimento nella guida per sviluppatori dell'hub IoT includono:
Gli endpoint dell'hub IoT descrivono i vari endpoint esposti da ogni hub IoT per le operazioni di runtime e gestione.
La limitazione e le quote descrivono le quote che si applicano al servizio hub IoT e il comportamento di limitazione previsto quando si usa il servizio.
Gli SDK per dispositivi e servizi IoT di Azure elencano i vari SDK del linguaggio che è possibile usare quando si sviluppano app per dispositivi e servizi che interagiscono con l'hub IoT.
Il linguaggio di query dell'hub IoT per dispositivi gemelli, processi e routing dei messaggi descrive il linguaggio di query dell'hub IoT. Usare questo linguaggio di query per recuperare informazioni dall'hub IoT sui dispositivi gemelli e sui processi.
Il supporto MQTT dell'hub IoT fornisce altre informazioni sul supporto dell'hub IoT per il protocollo MQTT.
Passaggi successivi
Per provare alcuni dei concetti descritti in questo articolo, vedere l'esercitazione seguente sull'hub IoT: