Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Operazioni API MQTT del dispositivo dei processi
Puoi inviare i comandi del dispositivo di processi pubblicando i messaggi MQTT negli Argomenti riservati utilizzati per i comandi Jobs.
Il client lato dispositivo deve disporre della sottoscrizione agli argomenti del messaggio di risposta di questi comandi. Se utilizzi il client del dispositivo AWS IoT, il dispositivo sottoscrive automaticamente gli argomenti di risposta. Il che significa che il broker di messaggi pubblica gli argomenti dei messaggi di risposta nel client che ha pubblicato il messaggio di comando, a prescindere che il client abbia effettuato la sottoscrizione agli argomenti del messaggio di risposta. Questi messaggi di risposta non passano attraverso il broker di messaggi e non possono essere sottoscritti da altri client o regole.
Durante la sottoscrizione agli argomenti di processo ed evento jobExecution
per la tua soluzione di monitoraggio del parco istanze, per prima cosa abilita gli eventi di processo e di esecuzione di processi per ricevere eventi sul lato cloud. Messaggi di avanzamento del processo che vengono elaborati tramite il broker di messaggi e possono essere utilizzati dalle regole di AWS IoT sono pubblicate come Eventi del servizio Jobs. Poiché il broker di messaggi pubblica i messaggi di risposta, anche senza una sottoscrizione esplicita, il client deve essere configurato per ricevere e identificare i messaggi ricevuti. Il cliente deve inoltre confermare che il thingName
del messaggio in arrivo si applica al nome della cosa del client prima che il client agisca sul messaggio.
Nota
I messaggi che AWS IoT invia in risposta ai messaggi di comando MQTT Jobs API vengono addebitati sull’account, indipendentemente dal fatto che sia stato sottoscritto esplicitamente o meno.
Di seguito vengono illustrate le operazioni API MQTT e la relativa sintassi di richiesta e risposta. Tutte le operazioni API MQTT hanno i seguenti parametri:
- clientToken
-
Un token client opzionale utilizzato per mettere in relazione richieste e risposte. Inserisci un valore arbitrario, che viene riportato nella risposta.
timestamp
-
Periodo di tempo, in secondi, dall'epoca all'invio del messaggio.
Ottiene l'elenco di tutti i processi che non si trovano in uno stato terminale, per un oggetto specifico.
Per richiamare quest'API, pubblica un messaggio in $aws/things/
.thingName
/jobs/get
Payload della richiesta:
{ "clientToken": "string" }
Il broker dei messaggi pubblicherà $aws/things/
e thingName
/jobs/get/accepted$aws/things/
anche senza un abbonamento specifico. Tuttavia, affinché il client riceva i messaggi, deve essere in ascolto. Per ulteriori informazioni, consulta la nota sui messaggi dell'API Jobs.thingName
/jobs/get/rejected
Payload della risposta:
{ "inProgressJobs" : [ JobExecutionSummary ... ], "queuedJobs" : [ JobExecutionSummary ... ], "timestamp" : 1489096425069, "clientToken" : "client-001" }
Dove inProgressJobs
e queuedJobs
restituiscono un elenco di oggetti JobExecutionSummary che hanno lo stato IN_PROGRESS
o QUEUED
.
Recupera e avvia la successiva esecuzione del processo in sospeso per un oggetto (stato IN_PROGRESS
o QUEUED
).
-
Le esecuzioni di un processo con stato
IN_PROGRESS
vengono restituite per prime. -
Le esecuzioni di un processo vengono restituite in base all'ordine di coda. Quando un elemento viene aggiunto o rimosso dal gruppo target per il tuo processo, conferma l'ordine di implementazione di eventuali nuove esecuzioni di processi rispetto alle esecuzioni di processi esistenti.
-
Se lo stato della successiva esecuzione del processo in sospeso è
QUEUED
, il relativo stato viene modificato inIN_PROGRESS
e i dettagli dello stato dell'esecuzione del processo vengono impostati come specificato. -
Se la successiva esecuzione del processo in sospeso è già nello stato
IN_PROGRESS
, i dettagli dello stato non vengono modificati. -
Se non sono presenti esecuzioni in sospeso, la risposta non include il campo
execution
. -
Facoltativamente, puoi creare un timer della fase impostando un valore per la proprietà
stepTimeoutInMinutes
. Se non aggiorni il valore di questa proprietà eseguendoUpdateJobExecution
, il timeout dell'esecuzione del processo si verifica alla scadenza del timer della fase.
Per richiamare quest'API, pubblica un messaggio in $aws/things/
.thingName
/jobs/start-next
Payload della richiesta:
{ "statusDetails": { "string": "
job-execution-state
" ... }, "stepTimeoutInMinutes": long, "clientToken": "string" }
statusDetails
-
Raccolta di coppie nome-valore che descrivono lo stato dell'esecuzione del processo. Se non è specificato,
statusDetails
resta invariato. stepTimeOutInMinutes
-
Specifica l'intervallo di tempo a disposizione di ciascun dispositivo per terminare l'esecuzione di questo processo. Se lo stato di esecuzione del processo non è impostato su uno stato terminale prima del timeout o prima della reimpostazione del timer (chiamando
UpdateJobExecution
, impostando lo stato suIN_PROGRESS
e specificando un nuovo valore di timeout nel campostepTimeoutInMinutes
), lo stato di esecuzione del processo viene impostato suTIMED_OUT
. L'impostazione di questo timeout non ha alcun effetto sul timeout dell'esecuzione del processo, che potresti avere specificato al momento della creazione del processo (CreateJob
utilizzando il campotimeoutConfig
).
Il broker dei messaggi pubblicherà $aws/things/
e thingName
/jobs/start-next/accepted$aws/things/
anche senza un abbonamento specifico. Tuttavia, affinché il client riceva i messaggi, deve essere in ascolto. Per ulteriori informazioni, consulta la nota sui messaggi dell'API Jobs.thingName
/jobs/start-next/rejected
Payload della risposta:
{ "execution" : JobExecutionData, "timestamp" : timestamp, "clientToken" : "string" }
Dove execution
è un oggetto JobExecution. Ad esempio:
{ "execution" : { "jobId" : "022", "thingName" : "MyThing", "jobDocument" : "< contents of job document >", "status" : "IN_PROGRESS", "queuedAt" : 1489096123309, "lastUpdatedAt" : 1489096123309, "versionNumber" : 1, "executionNumber" : 1234567890 }, "clientToken" : "client-1", "timestamp" : 1489088524284, }
Ottiene informazioni dettagliate sull'esecuzione di un processo.
Puoi impostare jobId
su $next
per restituire la successiva esecuzione del processo in sospeso per un oggetto (stato IN_PROGRESS
o QUEUED
).
Per richiamare quest'API, pubblica un messaggio in $aws/things/
. thingName
/jobs/jobId
/get
Payload della richiesta:
{ "jobId" : "022", "thingName" : "MyThing", "executionNumber": long, "includeJobDocument": boolean, "clientToken": "string" }
thingName
-
Nome dell'oggetto associato al dispositivo.
jobId
-
Identificatore univoco assegnato al processo al momento della creazione.
In alternativa, utilizza
$next
per restituire la successiva esecuzione del processo in sospeso per un oggetto (statoIN_PROGRESS
oQUEUED
). In questo caso, le esecuzioni del processo con statoIN_PROGRESS
vengono restituite per prime. Le esecuzioni di un processo vengono restituite in base all'ordine di creazione. executionNumber
-
(Facoltativo) Numero che identifica l'esecuzione di un processo in un dispositivo. Se non è specificato, viene restituita l'ultima esecuzione del processo.
includeJobDocument
-
(Facoltativo) A meno che non sia impostato su
false
, la risposta contiene il documento del processo. Il valore predefinito ètrue
.
Il broker dei messaggi pubblicherà $aws/things/
e thingName
/jobs/jobId
/get/accepted$aws/things/
anche senza un abbonamento specifico. Tuttavia, affinché il client riceva i messaggi, deve essere in ascolto. Per ulteriori informazioni, consulta la nota sui messaggi dell'API Jobs.thingName
/jobs/jobId
/get/rejected
Payload della risposta:
{ "execution" : JobExecutionData, "timestamp": "timestamp", "clientToken": "string" }
Dove execution
è un oggetto JobExecution.
Aggiorna lo stato dell'esecuzione di un processo. Se lo desideri, puoi creare un timer della fase impostando un valore per la proprietà stepTimeoutInMinutes
. Se non aggiorni il valore di questa proprietà eseguendo nuovamente UpdateJobExecution
, il timeout dell'esecuzione del processo si verifica alla scadenza del timer della fase.
Per richiamare quest'API, pubblica un messaggio in $aws/things/
. thingName
/jobs/jobId
/update
Payload della richiesta:
{ "status": "
job-execution-state
", "statusDetails": { "string": "string" ... }, "expectedVersion": "number", "executionNumber": long, "includeJobExecutionState": boolean, "includeJobDocument": boolean, "stepTimeoutInMinutes": long, "clientToken": "string" }
status
-
Il nuovo stato per l'esecuzione del processo (
IN_PROGRESS
,FAILED
,SUCCEEDED
oREJECTED
). Questo valore deve essere specificato per ogni aggiornamento. statusDetails
-
Raccolta di coppie nome-valore che descrivono lo stato dell'esecuzione del processo. Se non è specificato,
statusDetails
resta invariato. expectedVersion
-
Versione corrente prevista dell'esecuzione del processo. Ogni volta che aggiorni l'esecuzione del processo, la versione viene incrementata. Se la versione dell'esecuzione del processo archiviata nel servizio AWS IoT Jobs non corrisponde, l'aggiornamento viene rifiutato restituendo un errore
VersionMismatch
. Viene restituito anche un file ErrorResponse contenente i dati sullo stato di esecuzione del processo attuale. Questo comportamento rende inutile una richiestaDescribeJobExecution
separata per ottenere i dati sullo stato dell'esecuzione del processo. executionNumber
-
(Facoltativo) Numero che identifica l'esecuzione di un processo in un dispositivo. Se non è specificato, viene usata l'ultima esecuzione del processo.
includeJobExecutionState
-
(Facoltativo) Quando è incluso e impostato su
true
, la risposta contiene il campoJobExecutionState
. Il valore predefinito èfalse
. includeJobDocument
-
(Facoltativo) Quando è incluso e impostato su
true
, la risposta contieneJobDocument
. Il valore predefinito èfalse
. stepTimeoutInMinutes
-
Specifica l'intervallo di tempo a disposizione di ciascun dispositivo per terminare l'esecuzione di questo processo. Lo stato di esecuzione del processo è impostato su
TIMED_OUT
, a meno che non venga impostato su uno stato terminale prima del timeout o prima che il timer venga reimpostato. L'impostazione o la reimpostazione di questo timeout non ha alcun effetto su quello dell'esecuzione del processo che potresti avere specificato al momento della creazione del processo.
Il broker dei messaggi pubblicherà $aws/things/
e thingName
/jobs/jobId
/update/accepted$aws/things/
anche senza un abbonamento specifico. Tuttavia, affinché il client riceva i messaggi, deve essere in ascolto. Per ulteriori informazioni, consulta la nota sui messaggi dell'API Jobs.thingName
/jobs/jobId
/update/rejected
Payload della risposta:
{ "executionState": JobExecutionState, "jobDocument": "string", "timestamp": timestamp, "clientToken": "string" }
executionState
-
Oggetto JobExecutionState.
jobDocument
-
Un oggetto documento del processo.
timestamp
-
Periodo di tempo, in secondi, dall'epoca all'invio del messaggio.
clientToken
-
Token client usato per mettere in relazione richieste e risposte.
Quando si utilizza il protocollo MQTT, è anche possibile eseguire i seguenti aggiornamenti:
Inviato ogni volta che un'esecuzione di un processo viene aggiunta o rimossa dall'elenco di esecuzioni del processo in sospeso per un oggetto.
Utilizza l'argomento :
$aws/things/
thingName
/jobs/notify
Payload del messaggio:
{ "jobs" : { "JobExecutionState": [
JobExecutionSummary
... ] }, "timestamp": timestamp }
Inviato ogni volta che c'è una modifica a cui segue l'esecuzione del processo nell'elenco delle esecuzioni di processi in sospeso per qualcosa, come definito per DescribeJobExecution
jobId
con $next
. Questo messaggio non viene inviato quando cambiano i dettagli della successiva esecuzione del processo, ma solo quando cambia il processo successivo che verrebbe restituito da DescribeJobExecution
con jobId
$next
. Considera le esecuzioni di processo J1 e J2 con stato QUEUED
. J1 è l'esecuzione successiva nell'elenco di esecuzioni del processo in sospeso. Se lo stato di J2 viene modificato in IN_PROGRESS
, mentre lo stato di J1 rimane invariato, questa notifica viene inviata e contiene i dettagli di J2.
Utilizza l'argomento :
$aws/things/
thingName
/jobs/notify-next
Payload del messaggio:
{ "execution" :
JobExecution
, "timestamp": timestamp, }