Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Jobs, MQTT API Geräteoperationen
Sie können Gerätebefehle für Jobs ausgeben, indem Sie MQTT Nachrichten unter den reservierten Themen veröffentlichen, die für Jobs-Befehle verwendet werden.
Ihr geräteseitiger Client muss die Antwortnachrichten-Themen dieser Befehle abonniert haben. Wenn Sie den AWS IoT Geräteclient verwenden, abonniert Ihr Gerät automatisch die Antwortthemen. Das bedeutet, dass der Message Broker die Themen der Antwortnachricht auf dem Client veröffentlicht, der die Befehlsnachricht veröffentlicht hat, unabhängig davon, ob Ihr Client die Themen der Antwortnachricht abonniert hat oder nicht. Diese Antwortnachrichten werden nicht durch den Message Broker weitergeleitet und können auch nicht von anderen Clients oder Regeln abonniert werden.
Wenn Sie den Auftrag und die jobExecution
Ereignisthemen für Ihre Flottenüberwachungslösung abonnieren, aktivieren Sie zunächst die Aufgaben- und Auftragsausführungsereignisse, um alle Ereignisse auf der Cloud-Seite zu empfangen. Auftragsfortschrittsnachrichten, die über den Message Broker verarbeitet werden und von AWS IoT
-Regeln verwendet werden können, werden veröffentlicht als Auftragsereignisse. Da der Message Broker Antwortnachrichten auch ohne ausdrückliches Abonnement veröffentlicht, muss Ihr Client so konfiguriert sein, dass er die empfangenen Nachrichten empfängt und identifiziert. Ihr Kunde muss außerdem bestätigen, dass das Thema thingName
in der eingehenden Nachricht für den Dingnamen des Kunden gilt, bevor der Client auf die Nachricht reagiert.
Anmerkung
Nachrichten, die als Antwort auf MQTT API Jobs-Befehlsnachrichten AWS IoT gesendet werden, werden Ihrem Konto in Rechnung gestellt, unabhängig davon, ob Sie sie ausdrücklich abonniert haben oder nicht.
Im Folgenden werden die MQTT API Operationen und ihre Anforderungs- und Antwortsyntax dargestellt. Alle MQTT API Operationen haben die folgenden Parameter:
- clientToken
-
Ein optionaler Client-Token zur Korrelierung von Anforderungen und Antworten. Geben Sie hier einen beliebigen Wert ein, und dieser wird in der Antwort reflektiert.
timestamp
-
Die Zeit in Sekunden seit der Epoche, in der die Nachricht gesendet wurde, vergangene Zeit.
Ruft die Liste aller Aufträge für ein bestimmtes Objekt ab, die sich nicht in einem Terminal-Zustand befinden.
Um dies aufzurufenAPI, veröffentlichen Sie eine Nachricht am$aws/things/
.thingName
/jobs/get
Anforderungsnutzlast:
{ "clientToken": "string" }
Der Message Broker veröffentlicht $aws/things/
und thingName
/jobs/get/accepted$aws/things/
auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie im Hinweis zu API Jobs-Nachrichten.thingName
/jobs/get/rejected
Antwortnutzlast:
{ "inProgressJobs" : [ JobExecutionSummary ... ], "queuedJobs" : [ JobExecutionSummary ... ], "timestamp" : 1489096425069, "clientToken" : "client-001" }
Wenn inProgressJobs
und queuedJobs
eine Liste von JobExecutionSummary Objekten zurückgibt, die den Status IN_PROGRESS
oder QUEUED
haben.
Ruft die nächste anstehende Auftragsausführung für ein Objekt ab und startet sie (Status IN_PROGRESS
oder QUEUED
).
-
Alle Auftragsausführungen mit dem Status
IN_PROGRESS
werden zuerst zurückgegeben. -
Auftragsausführungen werden in der Reihenfolge zurückgegeben, in der sie zur Warteschlange hinzugefügt wurden. Wenn der Zielgruppe für Ihren Auftrag etwas hinzugefügt oder daraus entfernt wird, überprüfen Sie die Rollout-Reihenfolge aller neuen Auftragsausführungen im Vergleich zu bestehenden Auftragsausführungen.
-
Wenn die nächste ausstehende Auftragsausführung den Status
QUEUED
hat, wechselt ihr Status zuIN_PROGRESS
, und die Statusdetails der Auftragsausführung werden wie angegeben eingerichtet. -
Wenn die nächste ausstehende Auftragsausführung bereits den Status
IN_PROGRESS
hat, werden ihre Statusdetails nicht geändert. -
Wenn keine Auftragsausführungen ausstehen, enthält die Antwort das Feld
execution
nicht. -
Optional können Sie einen Schritt-Timer erstellen, indem Sie einen Wert für die
stepTimeoutInMinutes
-Eigenschaft angeben. Falls Sie den Wert dieser Eigenschaft nicht aktualisieren, indem SieUpdateJobExecution
ausführen, läuft die Auftragsausführung ab, wenn der Schritt-Timer abläuft.
Um dies aufzurufenAPI, veröffentlichen Sie eine Nachricht am$aws/things/
.thingName
/jobs/start-next
Anforderungsnutzlast:
{ "statusDetails": { "string": "
job-execution-state
" ... }, "stepTimeoutInMinutes": long, "clientToken": "string" }
statusDetails
-
Eine Sammlung von Name/Wert-Paaren, die den Status der Auftragsausführung beschreiben. Wenn nicht angegeben, sind die
statusDetails
nicht geändert. stepTimeOutInMinutes
-
Gibt die Dauer an, die dieses Gerät für den Abschluss der Ausführung dieses Auftrags hat. Wenn der Status der Auftragsausführung vor Ablauf oder Zurücksetzen des Timers (durch Aufrufen von
UpdateJobExecution
, Setzen des Status aufIN_PROGRESS
und Angeben eines neuen Zeitüberschreitungswerts im FeldstepTimeoutInMinutes
) auf keinen Terminal-Zustand gesetzt wird, wird der Status der Auftragsausführung aufTIMED_OUT
gesetzt. Das Festlegen dieser Zeitüberschreitung hat keinen Einfluss auf die Zeitüberschreitung für die Auftragsausführung, die möglicherweise beim Erstellen des Auftrags festgelegt wurde (CreateJob
mithilfe des FeldestimeoutConfig
).Gültige Werte für diesen Parameter liegen im Bereich von 1 bis 10 080 (1 Minute bis 7 Tage). Ein Wert von -1 ist ebenfalls gültig und beendet den aktuellen Schritttimer (der durch eine frühere Verwendung von erstellt wurde UpdateJobExecutionRequest).
Der Message Broker veröffentlicht $aws/things/
und thingName
/jobs/start-next/accepted$aws/things/
auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie im Hinweis zu API Job-Nachrichten.thingName
/jobs/start-next/rejected
Antwortnutzlast:
{ "execution" : JobExecutionData, "timestamp" : timestamp, "clientToken" : "string" }
Wo execution
ein JobExecution-Objekt ist. Beispielsweise:
{ "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, }
Ruft detaillierte Informationen zu einer Auftragsausführung ab.
Sie können die jobId
auf $next
setzen, um die nächste ausstehende Auftragsausführung für ein Objekt (mit Status IN_PROGRESS
oder QUEUED
) zurückzugeben.
Um dies aufzurufenAPI, veröffentlichen Sie eine Nachricht am$aws/things/
. thingName
/jobs/jobId
/get
Anforderungsnutzlast:
{ "jobId" : "022", "thingName" : "MyThing", "executionNumber": long, "includeJobDocument": boolean, "clientToken": "string" }
thingName
-
Der Name des dem Gerät zugeordneten Objekts.
jobId
-
Die eindeutige Kennung, die diesem Auftrag bei seiner Erstellung zugewiesen wurde.
Sie können
$next
verwenden, um die nächste ausstehende Auftragsausführung für ein Objekt (mit StatusIN_PROGRESS
oderQUEUED
) zurückzugeben. In diesem Fall werden alle Auftragsausführungen mit dem StatusIN_PROGRESS
zuerst zurückgegeben. Auftragsausführungen werden in der Reihenfolge zurückgegeben, in der sie erstellt wurden. executionNumber
-
(Optional) Eine Nummer, die eine Auftragsausführung auf einem Gerät identifiziert. Wenn nicht angegeben, wird die letzte Auftragsausführung zurückgegeben.
includeJobDocument
-
(Optional) Sofern nicht auf
false
gesetzt, enthält die Antwort das Auftragsdokument. Der Standardwert isttrue
.
Der Message Broker veröffentlicht $aws/things/
und thingName
/jobs/jobId
/get/accepted$aws/things/
auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie im Hinweis zu API Jobs-Nachrichten.thingName
/jobs/jobId
/get/rejected
Antwortnutzlast:
{ "execution" : JobExecutionData, "timestamp": "timestamp", "clientToken": "string" }
Wo execution
ein JobExecution-Objekt ist.
Aktualisiert den Status einer Auftragsausführung. Sie können optional einen Schritt-Timer erstellen, indem Sie einen Wert für die stepTimeoutInMinutes
-Eigenschaft angeben. Falls Sie den Wert dieser Eigenschaft nicht aktualisieren, indem Sie UpdateJobExecution
erneut ausführen, läuft die Auftragsausführung ab, wenn der Schritt-Timer abläuft.
Um dies aufzurufenAPI, veröffentlichen Sie eine Nachricht am$aws/things/
. thingName
/jobs/jobId
/update
Anforderungsnutzlast:
{ "status": "
job-execution-state
", "statusDetails": { "string": "string" ... }, "expectedVersion": "number", "executionNumber": long, "includeJobExecutionState": boolean, "includeJobDocument": boolean, "stepTimeoutInMinutes": long, "clientToken": "string" }
status
-
Der neue Status für die Auftragsausführung (
IN_PROGRESS
,FAILED
,SUCCEEDED
oderREJECTED
). Dieser muss bei jeder Aktualisierung angegeben werden. statusDetails
-
Eine Sammlung von Name/Wert-Paaren, die den Status der Auftragsausführung beschreiben. Wenn nicht angegeben, sind die
statusDetails
nicht geändert. expectedVersion
-
Die erwartete aktuelle Version der Auftragsausführung. Bei jeder Aktualisierung der Auftragsausführung wird die Version erhöht. Wenn die im AWS IoT Jobs Service gespeicherte Version der Jobausführung nicht übereinstimmt, wird das Update mit einem
VersionMismatch
Fehler abgelehnt. Eine ErrorResponse, die den aktuellen Status der Auftragsausführung enthält, wird ebenfalls zurückgegeben. (Dadurch ist es nicht erforderlich, eine separateDescribeJobExecution
-Anforderung durchzuführen, um die Daten zum Status der Auftragsausführung abzurufen.) executionNumber
-
(Optional) Eine Nummer, die eine Auftragsausführung auf einem Gerät identifiziert. Wenn nicht angegeben, wird die letzte Auftragsausführung verwendet.
includeJobExecutionState
-
(Optional) Wenn enthalten und auf
true
gesetzt, enthält die Antwort das FeldJobExecutionState
. Der Standardwert istfalse
. includeJobDocument
-
(Optional) Wenn enthalten und auf
true
gesetzt, enthält die Antwort dasJobDocument
. Der Standardwert istfalse
. stepTimeoutInMinutes
-
Gibt die Dauer an, die dieses Gerät für den Abschluss der Ausführung dieses Auftrags hat. Wenn der Status der Auftragsausführung nicht in einen Terminal-Zustand gesetzt wird, bevor dieser Timer abläuft oder bevor der Timer zurückgesetzt wird, wird der Status der Auftragsausführung auf
TIMED_OUT
gesetzt. Das Festlegen oder Zurücksetzen dieser Zeitüberschreitung hat keinen Einfluss auf die Zeitüberschreitung der Auftragsausführung, die möglicherweise beim Erstellen des Auftrags festgelegt wurde.
Der Message Broker veröffentlicht $aws/things/
und thingName
/jobs/jobId
/update/accepted$aws/things/
auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie im Hinweis zu API Jobnachrichten.thingName
/jobs/jobId
/update/rejected
Antwortnutzlast:
{ "executionState": JobExecutionState, "jobDocument": "string", "timestamp": timestamp, "clientToken": "string" }
executionState
-
Ein JobExecutionState-Objekt.
jobDocument
-
Ein -Auftragsdokument-Objekt.
timestamp
-
Die Zeit in Sekunden seit der Epoche, in der die Nachricht gesendet wurde, vergangene Zeit.
clientToken
-
Ein Client-Token zur Korrelierung von Anforderungen und Antworten.
Wenn Sie das MQTT Protokoll verwenden, können Sie auch die folgenden Updates durchführen:
Wird gesendet, wenn eine Auftragsausführung der Liste ausstehender Auftragsausführungen für ein Objekt hinzugefügt oder daraus entfernt wird.
Verwenden Sie das -Thema:
$aws/things/
thingName
/jobs/notify
Nachrichtennutzlast:
{ "jobs" : { "JobExecutionState": [
JobExecutionSummary
... ] }, "timestamp": timestamp }
Wird gesendet, wenn sich ändert, welche Auftragsausführung die nächste auf der Liste der ausstehenden Auftragsausführungen für ein Objekt ist, wie für DescribeJobExecution
mit jobId
$next
definiert. Diese Nachricht wird nicht gesendet, wenn sich die Details der nächsten Auftragsausführung ändern, sondern nur, wenn sich der nächste Auftrag geändert hat, der von DescribeJobExecution
mit jobId
$next
ausgegeben würde. Nehmen wir als Beispiel die Auftragsausführungen J1 und J2 mit dem Status QUEUED
. J1 ist die nächste ausstehende Auftragsausführung auf der Liste. Wenn sich der Status von J2 zu IN_PROGRESS
ändert und der Status von J1 unverändert bleibt, wird diese Benachrichtigung gesendet und enthält Details von J2.
Verwenden Sie das -Thema:
$aws/things/
thingName
/jobs/notify-next
Nachrichtennutzlast:
{ "execution" :
JobExecution
, "timestamp": timestamp, }