View a markdown version of this page

High-level Arbeitsablauf für Befehle - AWS IoT Core

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.

Überblick über den High-Level-Workflow für AWS IoT Device Management Gerätebefehle.

Erstellen und Verwalten von Befehlen

Gehen Sie wie folgt vor, um Befehle für Ihre Geräte zu erstellen und zu verwalten.

  1. Erstellen Sie eine Befehlsressource

    Erstellen Sie einen Befehl über den Command Hub oder mithilfe der CreateCommand API.

  2. 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.

  3. (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.

  1. 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.

  2. 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.

  3. 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:Connect Genehmigung. Finden Sie Ihren Endpunkt auf der Datenebene mithilfe des DescribeEndpoint API- oder describe-endpoint CLI-Befehls:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    Wenn Sie diesen Befehl ausführen, wird der kontospezifische Endpunkt der Datenebene zurückgegeben, wie unten dargestellt.

    account-specific-prefix.iot.region.amazonaws.com
  4. 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:

    • <device>mit thing oder client je nachdem, ob das Gerät, auf das Sie abzielen, als IoT-Ding registriert oder als MQTT-Client angegeben wurde.

    • <DeviceID>mit der eindeutigen Kennung Ihres Zielgeräts. Diese ID kann die eindeutige MQTT-Client-ID oder ein Dingname sein.

    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.

  1. Starten Sie die Befehlsausführung auf dem Zielgerät

    Starten Sie die Ausführung vom Command Hub aus oder verwenden Sie die StartCommandExecution API mit Ihrem kontospezifischen Endpunkt. Nur iot:Data-ATS für Dual-Stack (IPv4/IPv6) oder iot:Jobs fü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.

  2. 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 UpdateCommandExecution MQTT-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>
  3. (Optional) Rufen Sie das Ergebnis der Befehlsausführung ab

    Rufen Sie die Ausführungsergebnisse von der AWS IoT Konsole ab oder verwenden SieGetCommandExecution. 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.

  1. 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 <CommandID> durch den Bezeichner des Befehls, für den Sie Benachrichtigungen erhalten möchten, und <CommandExecutionStatus> durch den Status der Befehlsausführung.

    $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/+/#
  2. 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 }