Arbeitsablauf für Befehle auf hoher Ebene - 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.

Arbeitsablauf für Befehle auf hoher Ebene

Dieser Workflow 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 CreateCommandAPI.

  2. Geben Sie die Nutzlast an

    Stellen Sie eine Nutzlast in einem beliebigen Format bereit. Geben Sie den Inhaltstyp an, um eine korrekte Interpretation durch das Gerät sicherzustellen.

    Bei dynamischen Befehlen mit Payload-Vorlagen wird die endgültige Payload zur Laufzeit anhand der von Ihnen angegebenen Parameter generiert. Vorlagen unterstützen nur das JSON-Format, aber die generierte Nutzlast 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 die 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 Ding-Namen 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 die 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 Request and Response Topics. Geräte benötigen eine iot:Connect Genehmigung. Finden Sie Ihren Datenebenen-Endpunkt mit dem DescribeEndpoint API- oder describe-endpoint CLI-Befehl:

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

    account-specific-prefix.iot.region.amazonaws.com
  4. Abonnieren Sie die Themen zu Befehlen

    Abonnieren Sie das Thema „Befehlsanfrage“. Wenn Sie eine Ausführung starten, veröffentlicht der Message Broker die Payload zu diesem Thema. 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 Geräteantwort akzeptiert oder abgelehnt hat.

    Ersetzen Sie in diesem Beispiel:

    • <device>mit thing oder client abhängig davon, ob das Gerät, auf das Sie abzielen, als IoT-Ding registriert oder als MQTT-Client spezifiziert wurde.

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

    Anmerkung

    Wenn der Payload-Typ nicht JSON oder CBOR ist, ist das <PayloadFormat> Feld möglicherweise nicht im Thema der Befehlsanfrage vorhanden. Um das Payload-Format abzurufen, empfehlen wir, die Formatinformationen aus den MQTT-Nachrichtenkopfzeilen abzurufen. MQTT5 Weitere Informationen finden Sie unter Themen zu Befehlen.

    $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ührungen 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. Verwenden Sie es iot:Data-ATS für Dual-Stack (IPv4/IPv6) oder iot:Jobs nur für. IPv4

    Die API veröffentlicht den Payload im Thema Commands Request.

    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 wieder eine Verbindung herstellt, kann es den Befehl verarbeiten und Ergebnisse veröffentlichen. Wenn das Timeout abläuft, wird das Timeout bei der Ausführung überschritten und die Nutzdaten werden 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 einer UpdateCommandExecution MQTT-basierten API im Antwortthema „Befehle“. 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 Thema der Anfrage angegeben haben, <devices> kann es sich entweder um Dinge oder Clients handeln, und es <DeviceID> kann sich AWS IoT dabei um Ihren Dingnamen oder die MQTT-Client-ID handeln.

    Anmerkung

    Das <PayloadFormat> kann im Antwortthema der Befehle nur JSON oder CBOR 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 unter dem Thema Commands Response veröffentlichen, um aktuelle 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.

  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 Eine AWS IoT Regel erstellen an andere AWS IoT Dienste wie AWS Lambda Amazon SQS und AWS Step Functions weiterzuleiten.

    Ersetzen Sie in diesem Beispiel <CommandID> durch die ID 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. Befehlsereignisse empfangen und verarbeiten

    Verwalten Sie Push-Benachrichtigungen für Befehle und erstellen Sie Anwendungen mithilfe der abonnierten Ereignisse.

Der folgende Code zeigt eine Beispiel-Payload für die Benachrichtigungen über Befehlsereignisse, die Sie erhalten werden.

{ "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 }