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

Die folgenden Schritte bieten einen Überblick über den Befehlsablauf zwischen Ihren Geräten und AWS IoT Device Management Befehlen. Wenn Sie eine der HTTP API Befehlsoperationen verwenden, wird die Anfrage mit Sigv4-Anmeldeinformationen signiert.

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

Befehle erstellen und verwalten

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

  1. Erstellen Sie eine Befehlsressource

    Bevor Sie den Befehl an Ihre Geräte senden können, erstellen Sie eine Befehlsressource im Command Hub der AWS IoT Konsole oder mithilfe der CreateCommandAPISteuerungsebene.

  2. Geben Sie die Nutzlast an

    Bei der Erstellung des Befehls müssen Sie eine Nutzlast für Ihren Befehl angeben. Der Payload-Inhalt kann ein beliebiges Format Ihrer Wahl verwenden. Um sicherzustellen, dass das Gerät die Payload korrekt interpretiert, empfehlen wir, dass Sie auch den Payload-Inhaltstyp angeben.

  3. (Optional) Verwalte die erstellten Befehle

    Nachdem Sie den Befehl erstellt haben, können Sie den Anzeigenamen und die Beschreibung des Befehls aktualisieren. Sie können einen Befehl auch als veraltet markieren, wenn Sie ihn nicht mehr verwenden möchten, oder den Befehl vollständig aus Ihrem Konto entfernen. Wenn Sie die Payload-Informationen ändern möchten, müssen Sie einen neuen Befehl erstellen und die neue Payload-Datei hochladen.

Wählen Sie das Zielgerät für Ihre Befehle und abonnieren Sie Themen MQTT

Um sich auf den Befehls-Workflow vorzubereiten, wählen Sie Ihr Zielgerät aus und geben Sie die AWS IoT reservierten MQTT Themen für den Empfang von Befehlen und das Veröffentlichen von Antwortnachrichten an.

  1. Wählen Sie das Zielgerät für Ihren Befehl

    Um sich auf den Befehls-Workflow vorzubereiten, wählen Sie Ihr Zielgerät aus, das den Befehl empfangen und die angegebenen Aktionen ausführen soll. Das Zielgerät kann ein Gerät sein, AWS IoT das Sie in der AWS IoT Registrierung registriert haben, oder es kann mithilfe der MQTT Client-ID angegeben werden, falls Ihr Gerät nicht registriert wurde AWS IoT. Weitere Informationen finden Sie unter Überlegungen zum Zielgerät.

  2. Konfigurieren Sie die IoT-Geräterichtlinie

    Bevor Ihr Gerät Befehlsausführungen empfangen und Updates veröffentlichen kann, muss es eine IAM Richtlinie verwenden, die Berechtigungen zur Ausführung dieser Aktionen gewährt. Beispiele für Beispielrichtlinien, die Sie verwenden können, je nachdem, ob Ihr Gerät als AWS IoT Ding registriert oder als MQTT Client-ID angegeben ist, finden Sie unterBeispiel für eine IAM Richtlinie.

  3. Stellen Sie eine MQTT Verbindung her

    Um Ihre Geräte auf die Verwendung der Befehlsfunktion vorzubereiten, müssen Ihre Geräte zunächst eine Verbindung zum Message Broker herstellen und die Anfrage- und Antwortthemen abonnieren. Ihr Gerät muss in der Lage sein, die iot:Connect Aktion auszuführen, um eine MQTT Verbindung zum Message Broker herzustellen AWS IoT Core und eine Verbindung herzustellen. Um den Endpunkt der Datenebene für Sie zu finden AWS-Konto, verwenden Sie den Befehl DescribeEndpoint API oder den describe-endpoint CLI Befehl wie unten gezeigt.

    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

    Nachdem eine Verbindung hergestellt wurde, können Ihre Geräte das Thema zur Befehlsanfrage abonnieren. Wenn Sie einen Befehl erstellen und die Befehlsausführung auf Ihrem Zielgerät starten, wird die Payload-Nachricht vom Message Broker unter dem Thema der Anfrage veröffentlicht. Ihr Gerät kann dann die Payload-Nachricht empfangen und den Befehl verarbeiten.

    (Optional) Ihre Geräte können die Antwortthemen dieser Befehle auch abonnieren (acceptedoderrejected), um eine Nachricht zu erhalten, die angibt, 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 Ding-Name sein.

    Anmerkung

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

    $aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat> $aws/commands/<devices>/<DeviceID>/executions/+/response/<PayloadFormat>/accepted $aws/commands/<devices>/<DeviceID>/executions/+/response/<PayloadFormat>/rejected

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 Befehlsausführung auf dem Zielgerät vom Command Hub der AWS IoT Konsole aus oder verwenden Sie die StartCommandExecution Datenebene API mit Ihrem kontospezifischen Endpunktiot:Jobs. Der API veröffentlicht die Payload-Meldung zum oben genannten Thema der Befehlsanfrage, die das Gerät abonniert hat.

    Anmerkung

    Wenn das Gerät offline war, als der Befehl aus der Cloud gesendet wurde, und wenn es MQTT persistente Sitzungen verwendet, wartet der Befehl beim Message Broker. Wenn das Gerät vor Ablauf des Timeouts wieder online ist und das Thema für die Befehlsanfrage abonniert hat, kann das Gerät den Befehl verarbeiten und das Ergebnis im Antwortthema für Befehle veröffentlichen. Wenn das Gerät vor Ablauf des Timeouts nicht wieder online ist, kommt es bei der Befehlsausführung zu einem Timeout, und die Nutzdatennachricht läuft möglicherweise ab und wird vom Message Broker verworfen.

  2. Aktualisieren Sie das Ergebnis der Befehlsausführung

    Das Gerät empfängt jetzt die Payload-Meldung und kann den Befehl verarbeiten und die angegebenen Aktionen ausführen. Anschließend können Sie das Ergebnis der Befehlsausführung mithilfe von im folgenden Antwortthema veröffentlichen. UpdateCommandExecution API Wenn Ihr Gerät die Antwortthemen „Befehle akzeptiert und abgelehnt“ abonniert hat, erhält es eine Meldung, die angibt, ob die Antwort vom Cloud-Dienst akzeptiert oder abgelehnt wurde.

    Je nachdem, wie Sie im Thema der Anfrage angegeben haben, <devices> kann es sich entweder um Dinge oder Kunden handeln, und es <DeviceID> kann sich dabei um Ihren IoT-Dingnamen oder die MQTT Client-ID handeln.

    Anmerkung

    Das <PayloadFormat> kann nur JSON oder CBOR im Antwortthema der Befehle sein.

    $aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
  3. (Optional) Rufen Sie das Ergebnis der Befehlsausführung ab

    Um das Ergebnis der Befehlsausführung abzurufen, können Sie den Befehlsverlauf von der AWS IoT Konsole aus anzeigen oder die API Operation auf der GetCommandExecution Steuerungsebene verwenden. Um die neuesten Informationen zu erhalten, muss Ihr Gerät das Ergebnis der Befehlsausführung im Thema Befehlsantwort veröffentlicht haben. Sie können auch zusätzliche Informationen zu den Ausführungsdaten abrufen, z. B. wann sie zuletzt aktualisiert wurden, das Ausführungsergebnis und wann die Ausführung abgeschlossen wurde.

(Optional) Aktivieren Sie Benachrichtigungen für Befehlsereignisse

Sie können Befehlsereignisse abonnieren, um Benachrichtigungen zu erhalten, wenn sich der Status der Befehlsausführung ändert. In den folgenden Schritten erfahren Sie, wie Sie Befehlsereignisse abonnieren und anschließend verarbeiten.

  1. Erstellen einer Themenregel

    Sie können das Thema Befehlsereignisse abonnieren und Benachrichtigungen erhalten, wenn sich der Status der Befehlsausführung ändert. Sie können auch eine Themenregel erstellen, um die vom Gerät verarbeiteten Daten an andere AWS IoT Dienste weiterzuleiten, die von Regeln unterstützt werden AWS Lambda, wie Amazon SQS und AWS Step Functions. Sie können eine Themenregel entweder über die AWS IoT Konsole oder CreateTopicRule AWS IoT Core über die Steuerungsebene API erstellen. Weitere Informationen finden Sie unter Eine AWS IoT Regel erstellen.

    Ersetzen Sie es 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

    Wenn Sie im vorherigen Schritt eine Themenregel zum Abonnieren von Befehlsereignissen erstellt haben, können Sie die Push-Benachrichtigungen für Befehle, die Sie erhalten, verwalten und auf diesen Diensten eine Anwendung erstellen.

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 }