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.
High-level Arbeitsablauf für Befehle
Dieser Arbeitsablauf zeigt, wie Geräte mit AWS IoT Device Management Befehlen interagieren. Alle HTTP-API-Anfragen verwenden Sigv4-Anmeldeinformationen zum Signieren.
Workflow-Übersicht
Erstellen und Verwalten von Befehlen
Gehen Sie wie folgt vor, um Befehle für Ihre Geräte zu erstellen und zu verwalten.
-
Erstellen Sie eine Befehlsressource
Erstellen Sie einen Befehl über den Command Hub
oder mithilfe der CreateCommandAPI. -
Geben Sie die Nutzlast an
Stellen Sie eine Payload in einem beliebigen Format bereit. Geben Sie den Inhaltstyp an, um eine korrekte Geräteinterpretation sicherzustellen.
Bei dynamischen Befehlen mit Payload-Vorlagen wird die endgültige Nutzlast zur Laufzeit mithilfe der von Ihnen angegebenen Parameter generiert. Vorlagen unterstützen nur das JSON-Format, aber die generierte Payload kann als JSON oder CBOR gesendet werden.
-
(Optional) Verwalte die erstellten Befehle
Aktualisieren Sie den Anzeigenamen und die Beschreibung nach der Erstellung. Markieren Sie Befehle als veraltet, wenn sie nicht mehr benötigt werden, oder löschen Sie sie dauerhaft. Um Payload-Informationen zu ändern, erstellen Sie einen neuen Befehl.
Wählen Sie das Zielgerät für Ihre Befehle und abonnieren Sie MQTT-Themen
Wählen Sie Ihr Zielgerät und konfigurieren Sie MQTT-Themen für den Empfang von Befehlen und das Veröffentlichen von Antworten.
-
Wählen Sie das Zielgerät für Ihren Befehl
Wählen Sie ein Zielgerät aus, um den Befehl zu empfangen und auszuführen. Verwenden Sie einen Dingnamen für registrierte Geräte oder eine Client-ID für nicht registrierte Geräte. Weitere Informationen finden Sie unter Überlegungen zum Zielgerät.
-
Konfigurieren Sie das AWS IoT Geräterichtlinie
Konfigurieren Sie eine IAM-Richtlinie, die Berechtigungen zum Empfangen von Ausführungen und zum Veröffentlichen von Updates gewährt. Beispiele Beispiel einer IAM-Richtlinie für Richtlinien finden Sie unter.
-
Stellen Sie eine MQTT-Verbindung her
Verbinden Sie Geräte mit dem Message Broker und abonnieren Sie Anfrage- und Antwortthemen. Geräte benötigen eine
iot:ConnectGenehmigung. Finden Sie Ihren Endpunkt auf der Datenebene mithilfe desDescribeEndpointAPI- oderdescribe-endpointCLI-Befehls:aws iot describe-endpoint --endpoint-type iot:Data-ATSWenn Sie diesen Befehl ausführen, wird der kontospezifische Endpunkt der Datenebene zurückgegeben, wie unten dargestellt.
account-specific-prefix.iot.region.amazonaws.com -
Abonnieren Sie die Themen zu Befehlen
Abonnieren Sie das Thema zur Anforderung von Befehlen. Wenn Sie eine Ausführung starten, veröffentlicht der Message Broker die Payload in diesem Topic. Ihr Gerät empfängt und verarbeitet den Befehl.
(Optional) Abonnieren Sie die Antwortthemen (
acceptedoderrejected), um eine Bestätigung zu erhalten, ob der Cloud-Dienst die Antwort des Geräts akzeptiert oder abgelehnt hat.Ersetzen Sie in diesem Beispiel:
-
mit<device>thingoderclientje nachdem, ob das Gerät, auf das Sie abzielen, als IoT-Ding registriert oder als MQTT-Client angegeben wurde. -
mit der eindeutigen Kennung Ihres Zielgeräts. Diese ID kann die eindeutige MQTT-Client-ID oder ein Dingname sein.<DeviceID>
Anmerkung
Wenn der Nutzlasttyp nicht JSON oder CBOR ist, ist das
<PayloadFormat>Feld möglicherweise nicht im Thema der Befehlsanforderung enthalten. Um das Payload-Format abzurufen, empfehlen wir, MQTT5 zu verwenden, um die Formatinformationen aus den MQTT-Nachrichten-Headern abzurufen. Weitere Informationen finden Sie unter Befehle, Themen.$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat> -
Starten und überwachen Sie die Befehlsausführung für Ihr Zielgerät
Nachdem Sie die Befehle erstellt und die Ziele für den Befehl angegeben haben, können Sie die Ausführung auf dem Zielgerät starten, indem Sie die folgenden Schritte ausführen.
-
Starten Sie die Befehlsausführung auf dem Zielgerät
Starten Sie die Ausführung vom Command Hub aus
oder verwenden Sie die StartCommandExecutionAPI mit Ihrem kontospezifischen Endpunkt. Nuriot:Data-ATSfür Dual-Stack (IPv4/IPv6) oderiot:Jobsfür IPv4 verwenden.Die API veröffentlicht die Payload im Commands Request Topic.
Anmerkung
Wenn das Gerät offline ist und persistente MQTT-Sitzungen verwendet, wartet der Befehl beim Message Broker. Wenn das Gerät vor dem Timeout die Verbindung wiederherstellt, kann es den Befehl verarbeiten und Ergebnisse veröffentlichen. Wenn das Timeout abläuft, läuft die Ausführung ab und die Payload wird verworfen.
-
Aktualisieren Sie das Ergebnis der Befehlsausführung
Das Gerät empfängt die Payload, verarbeitet den Befehl, führt die angegebenen Aktionen aus und veröffentlicht die Ergebnisse mithilfe der
UpdateCommandExecutionMQTT-basierten API im Commands Response Topic. Wenn das Gerät akzeptierte und abgelehnte Themen abonniert hat, erhält es eine Bestätigung, ob der Cloud-Dienst die Antwort akzeptiert oder abgelehnt hat.Je nachdem, was Sie im Anforderungsthema angegeben haben,
<devices>kann es sich entweder um Dinge oder Kunden handeln und dies<DeviceID>kann Ihr AWS IoT Dingname oder die MQTT-Client-ID sein.Anmerkung
Das
<PayloadFormat>kann nur JSON oder CBOR im Antwortthema des Befehls sein.$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat> -
(Optional) Rufen Sie das Ergebnis der Befehlsausführung ab
Rufen Sie die Ausführungsergebnisse von der AWS IoT Konsole ab oder verwenden Sie
GetCommandExecution. Das Gerät muss die Ergebnisse im Antwort-Thema „Befehle“ veröffentlichen, um die neuesten Informationen zu erhalten. Sehen Sie sich zusätzliche Details an, einschließlich Uhrzeit der letzten Aktualisierung, Ergebnis und Abschlusszeit.
(Optional) Aktivieren Sie Benachrichtigungen für Befehlsereignisse
Abonnieren Sie Befehlsereignisse für Benachrichtigungen, wenn sich der Ausführungsstatus ändert. Detaillierte Informationen zu Ereignissen bei der Befehlsausführung, einschließlich des Nachrichtenformats und der Nutzlastattribute, finden Sie unterEreignisse bei der Befehlsausführung.
-
Erstellen einer Themenregel
Abonnieren Sie das Thema Befehlsereignisse für Benachrichtigungen über Statusänderungen. Erstellen Sie eine Themenregel, um Gerätedaten mithilfe der AWS IoT Konsole oder Erstellen einer AWS IoT Regel an andere AWS IoT Dienste wie AWS Lambda Amazon SQS und AWS Step Functions weiterzuleiten.
Ersetzen Sie in diesem Beispiel
durch den Bezeichner des Befehls, für den Sie Benachrichtigungen erhalten möchten, und<CommandID>durch den Status der Befehlsausführung.<CommandExecutionStatus>$aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>Anmerkung
Um Benachrichtigungen für alle Befehle und den Status der Befehlsausführung zu erhalten, können Sie Platzhalterzeichen verwenden und das folgende Thema abonnieren.
$aws/events/commandExecution/+/# -
Empfangen und Verarbeiten von Befehlsereignissen
Verwalten Sie Befehle, Push-Benachrichtigungen und erstellen Sie Anwendungen mithilfe der abonnierten Ereignisse.
Der folgende Code zeigt eine Beispielnutzlast für die Benachrichtigungen über Befehlsereignisse, die Sie erhalten.
{ "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "status":"FAILED", "statusReason": { "reasonCode": "DEVICE_TOO_BUSY", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086", "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd", "timestamp":1717708862107}