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.
Führt MQTT-API-Operationen auf dem Gerät aus
Sie können Gerätebefehle für Aufträge ausgeben, indem Sie MQTT-Nachrichten in den für Auftragsbefehle verwendeten reservierten Themen veröffentlichen.
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 Jobs API-Befehlsnachrichten AWS IoT gesendet werden, werden Ihrem Konto in Rechnung gestellt, unabhängig davon, ob Sie sie explizit abonniert haben oder nicht.
Im Folgenden werden die MQTT-API-Operationen und ihre Anfrage- und Antwortsyntax gezeigt. 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.
Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf $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 in der Anmerkung zu Jobs API-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_PROGRESSwerden 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
QUEUEDhat, 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_PROGRESShat, werden ihre Statusdetails nicht geändert. -
Wenn keine Auftragsausführungen ausstehen, enthält die Antwort das Feld
executionnicht. -
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 SieUpdateJobExecutionausführen, läuft die Auftragsausführung ab, wenn der Schritt-Timer abläuft.
Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf $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
statusDetailsnicht 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_PROGRESSund Angeben eines neuen Zeitüberschreitungswerts im FeldstepTimeoutInMinutes) auf keinen Terminal-Zustand gesetzt wird, wird der Status der Auftragsausführung aufTIMED_OUTgesetzt. 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 (CreateJobmithilfe 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 Step-Timer (der durch eine frühere Verwendung von UpdateJobExecutionRequest erstellt wurde).
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 in der Anmerkung zu Jobs API-Nachrichten.thingName/jobs/start-next/rejected
Antwortnutzlast:
{ "execution" : JobExecutionData, "timestamp" : timestamp, "clientToken" : "string" }
Wo execution ein JobExecution-Objekt ist. Beispiel:
{ "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.
Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf $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
$nextverwenden, um die nächste ausstehende Auftragsausführung für ein Objekt (mit StatusIN_PROGRESSoderQUEUED) zurückzugeben. In diesem Fall werden alle Auftragsausführungen mit dem StatusIN_PROGRESSzuerst 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
falsegesetzt, 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 in der Anmerkung zu Jobs API-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.
Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf $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,SUCCEEDEDoderREJECTED). 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
statusDetailsnicht geändert. expectedVersion-
Die erwartete aktuelle Version der Auftragsausführung. Bei jeder Aktualisierung der Auftragsausführung wird die Version erhöht. Wenn die im Jobs-Service gespeicherte Version der AWS IoT Auftragsausführung nicht übereinstimmt, wird die Aktualisierung mit einem
VersionMismatchFehler 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
truegesetzt, enthält die Antwort das FeldJobExecutionState. Der Standardwert istfalse. includeJobDocument-
(Optional) Wenn enthalten und auf
truegesetzt, 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_OUTgesetzt. 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 in der Anmerkung zu Jobs API-Nachrichten.thingName/jobs/jobId/update/rejected
Antwortnutzlast:
{ "executionState": JobExecutionState, "jobDocument": "string", "timestamp": timestamp, "clientToken": "string" }
executionState-
Ein JobExecutionState-Objekt.
jobDocument-
Ein -Auftragsdokument-Objekt.
Anmerkung
In MQTT-Antworten ist das
jobDocumentFeld ein JSON-Objekt. In HTTP-Antworten ist es eine Zeichenkettendarstellung des JSON-Objekts. 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, }