Befehle, Konzepte und Status - 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.

Befehle, Konzepte und Status

Verwenden Sie AWS IoT Befehle, um eine Anweisung aus der Cloud an ein Gerät zu senden, mit dem eine Verbindung besteht AWS IoT. So verwenden Sie die Befehlsfunktion:

  1. Erstellen Sie zunächst eine Befehlsressource mit einer Payload, die die Konfigurationen enthält, die für die Ausführung des Befehls auf dem Gerät erforderlich sind.

  2. Geben Sie das Zielgerät an, das die Payload empfängt und die angegebenen Aktionen ausführt.

  3. Führen Sie den Befehl auf dem Zielgerät aus und rufen Sie die Statusinformationen vom Gerät ab. Informationen zur Behebung von Problemen finden Sie in den CloudWatch Protokollen.

Weitere Informationen zu diesem Workflow finden Sie unter Arbeitsablauf für Befehle auf hoher Ebene.

Befehle und wichtige Konzepte

Im Folgenden werden einige wichtige Konzepte für die Verwendung der Befehlsfunktion beschrieben.

Befehle

Befehle sind Anweisungen, die von der Cloud an Ihre IoT-Geräte gesendet werden. Diese Anweisungen (Befehls-Payload) werden als MQTT Nachrichten an die Geräte gesendet. Nachdem die Geräte die Befehlsnutzdaten erhalten haben, können sie die Anweisungen verarbeiten, um die entsprechende Aktion auszuführen. Beispiele für solche Aktionen sind das Ändern der Gerätekonfigurationseinstellungen, das Übertragen von Sensormesswerten oder das Hochladen von Protokollen. Die Geräte können dann den Befehl ausführen und das Ergebnis an die Cloud zurückgeben. Auf diese Weise können Sie angeschlossene Geräte aus der Ferne überwachen und steuern.

Namespace

Wenn Sie die Befehlsfunktion verwenden, können Sie den Namespace für den Befehl angeben. Wenn Sie einen Befehl in erstellen möchten AWS IoT Device Management, müssen Sie den AWS-IoT Standard-Namespace verwenden. Wenn Sie diesen Namespace verwenden, müssen Sie bei der Erstellung des Befehls eine Nutzlast angeben. Die Payload wird verwendet, wenn Sie den Befehl auf Ihrem Zielgerät ausführen. Wenn Sie stattdessen einen Befehl für erstellen möchten, müssen Sie AWS IoT FleetWise stattdessen den AWS-IoT-FleetWise Namespace verwenden. Weitere Informationen finden Sie unter Remote-Befehle im AWS IoT FleetWise Entwicklerhandbuch für Befehle.

Nutzlast

Wenn Sie den Befehl erstellen, müssen Sie eine Payload angeben, die die Aktionen definiert, die das Gerät ausführen muss. Die Payload kann ein beliebiges Format Ihrer Wahl verwenden. Um sicherzustellen, dass das Gerät die von Ihnen gesendeten Informationen korrekt lesen und verstehen kann, empfehlen wir Ihnen, den Payload-Formattyp im Befehl anzugeben. Wenn Ihre Geräte das MQTT5 Payload-Format verwenden, können sie dem MQTT Standard zur Identifizierung des Payload-Formats folgen. Ein Formatindikator für JSON oder CBOR wird im Thema zur Befehlsanfrage verfügbar sein.

Zielgerät

Wenn Sie den Befehl ausführen möchten, müssen Sie ein Zielgerät angeben, das den Befehl empfängt und Aktionen ausführt. Wenn Ihr Gerät als Ding bei registriert wurde AWS IoT, können Sie den Namen des Dings verwenden. Wenn Ihr Gerät nicht registriert wurde, können Sie stattdessen die MQTT Client-ID verwenden. Die Client-ID ist eine eindeutige Kennung für Ihr Gerät oder Ihren Client, die im MQTT Protokoll definiert ist. Es kann verwendet werden, um Ihr Gerät mit zu verbinden AWS IoT.

Ausführung von Befehlen

Eine Befehlsausführung ist eine Instanz eines Befehls, der auf dem Zielgerät ausgeführt wird. Wenn Sie die Ausführung starten, wird der Befehl (Payload) an das Zielgerät übermittelt. Für das Ziel wird jetzt eine eindeutige Befehlsausführungs-ID generiert. Das Gerät kann den Befehl dann ausführen und seinen Fortschritt an melden AWS IoT. Die geräteseitige Logik bestimmt, wie der Befehl ausgeführt wird und wie der Status in den reservierten Themen veröffentlicht wird.

Themen zu Befehlen

Bevor Sie den Befehl ausführen, muss Ihr Gerät das Thema zur Befehlsanfrage abonniert haben. Wenn Sie die Anforderung zur Ausführung des Befehls an die Cloud senden, wird die Payload unter dem Thema „Befehlsanfrage“ an das Gerät gesendet. Nachdem das Gerät den Befehl ausgeführt hat, kann es das Ergebnis und den Status der Ausführung im Antwortthema des Befehls veröffentlichen. Weitere Informationen finden Sie unter Themen zu Befehlen.

Status des Befehls

Ein Befehl, den Sie in Ihrem erstellen, AWS-Konto kann entweder den Status Verfügbar, Veraltet oder Ausstehende Löschung haben.

Verfügbar

Nachdem Sie eine Befehlsressource erfolgreich erstellt haben, befindet sie sich im Status „Verfügbar“. Der Befehl kann jetzt verwendet werden, um eine Befehlsausführung an das Gerät zu senden.

Als veraltet gekennzeichnet

Wenn Sie einen Befehl nicht mehr verwenden möchten, können Sie ihn als veraltet markieren. In diesem Status können Sie keine neuen Ausführungen des Befehls an Ihre Geräte senden. Alle ausstehenden Ausführungen, die bereits gestartet wurden, werden auf dem Gerät bis zum Abschluss weiterlaufen. Um neue Ausführungen zu senden, müssen Sie den Befehl wiederherstellen, damit er verfügbar wird.

Löschen ausstehend

Wenn Sie einen Befehl zum Löschen markieren und der Befehl für eine Dauer, die länger als das maximale Timeout ist, als veraltet gilt, wird der Befehl automatisch gelöscht. Diese Aktion ist dauerhaft und kann nicht rückgängig gemacht werden. Standardmäßig beträgt die maximale Timeout-Dauer 12 Stunden. Wenn der Befehl nicht veraltet ist oder für eine Dauer, die kürzer als das maximale Timeout ist, als veraltet gilt, befindet sich der Befehl im Status Ausstehende Löschung. Der Befehl wird nach Ablauf der maximalen Timeoutdauer automatisch aus Ihrem Konto entfernt.

Status der Befehlsausführung

Wenn Sie die Befehlsausführung auf dem Zielgerät starten, wechselt die Befehlsausführung in einen CREATED Status. Es kann dann je nach dem vom Gerät gemeldeten Status in einen der anderen Befehlsausführungsstatus übergehen. Anschließend können Sie die Statusinformationen abrufen und Ihre Befehlsausführungen verfolgen.

Anmerkung

Für ein bestimmtes Zielgerät können Sie mehrere Befehle gleichzeitig ausführen. Sie können die Funktion zur Steuerung der Parallelität verwenden, um die maximale Anzahl von Ausführungen zu begrenzen, die an dasselbe Gerät gesendet werden, wodurch verhindert wird, dass das Gerät überlastet wird. Informationen zur maximalen Anzahl gleichzeitiger Ausführungen, die Sie für jedes Gerät ausführen können, finden Sie unter Befehlsquoten.AWS IoT Device Management

Die folgende Tabelle zeigt die verschiedenen Status einer Befehlsausführung und zeigt, wie die Befehlsausführung je nach Fortschritt der Ausführung zwischen den verschiedenen Status wechselt.

Status und Quelle der Befehlsausführung
Status der Befehlsausführung Vom Gerät/der Cloud initiiert? Ausführung im Terminal? Zulässige Statusübergänge
CREATED Cloud Nein
  • IN_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS Gerät Nein
  • IN_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

TIMED_OUT Gerät und Cloud Nein
  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

SUCCEEDED Gerät Ja Nicht zutreffend
FAILED Gerät Ja Nicht zutreffend
REJECTED Gerät Ja Nicht zutreffend

Während Ihre Geräte den Befehl ausführen, können sie mithilfe der für Befehle reservierten MQTT Themen jederzeit Aktualisierungen des Status und der Ergebnisse in der Cloud veröffentlichen. Um zusätzlichen Kontext über den Status der einzelnen Befehlsausführungen in der Cloud bereitzustellen, kann die Cloud reasonDescription die im statusReason Objekt enthaltenen reasonCode und verwenden.

Das folgende Diagramm zeigt die verschiedenen Status der Befehlsausführung und wie der Übergang zwischen ihnen erfolgt.

Das Bild zeigt, wie der Status der Befehlsausführung zwischen verschiedenen Status wechselt.

Im folgenden Abschnitt werden die Ausführung von Befehlen im Terminal und ohne Terminal, die verschiedenen Ausführungsstatus und ihre Funktionsweise beschrieben.

Befehlsausführungen außerhalb des Terminals

Ihre Befehlsausführung erfolgt nicht über ein Terminal, wenn bei der Ausführung Updates von Geräten oder Clients akzeptiert werden können. Eine Ausführung ohne Terminalstatus wird als Aktiv betrachtet. Bei den folgenden Status handelt es sich nicht um einen Terminalstatus.

  • CREATED

    Wenn Sie die Ausführung eines Befehls von der AWS IoT Konsole aus starten oder den StartCommandExecution API Befehl mithilfe des Befehlsanforderungsthemas an Ihr Gerät senden. Wenn die Anforderung erfolgreich ist, ändert sich der Status der Befehlsausführung aufCREATED. Von diesem Status aus kann die Befehlsausführung in einen beliebigen anderen Status übergehen, der kein Terminal oder ein Terminal ist.

  • IN_ PROGRESS

    Nach dem Empfang der Befehls-Payload kann Ihr Gerät mit der Ausführung der Anweisungen in der Payload beginnen und die angegebenen Aktionen ausführen. Während der Ausführung des Befehls kann das Gerät eine Antwort auf das Antwortthema des Befehls veröffentlichen und den Status der Befehlsausführung als aktualisieren. IN_PROGRESS Ausgehend vom IN_PROGRESS Status kann die Befehlsausführung in einen beliebigen anderen Terminal- oder Nicht-Terminal-Status übergehen, außer. CREATED

    Anmerkung

    Der UpdateCommandExecution API kann mehrfach mit dem Status aufgerufen werden. IN_PROGRESS Sie können zusätzliche Details zur Ausführung mithilfe des statusReason Objekts angeben.

  • TIMED_OUT

    Dieser Befehlsausführungsstatus kann sowohl von der Cloud als auch vom Gerät ausgelöst werden. Eine Ausführung im IN_PROGRESS Status CREATED oder kann sich aus den folgenden Gründen in den TIMED_OUT Status ändern.

    • Nachdem der Befehl an das Gerät gesendet wurde, startet ein Timer. Wenn innerhalb einer bestimmten Dauer keine Antwort vom Gerät eingeht, ändert die Cloud den Status der Befehlsausführung aufTIMED_OUT. In diesem Fall erfolgt die Befehlsausführung nicht im Terminal.

    • Das Gerät kann den Status auf einen der anderen Terminalstatus überschreiben oder melden, dass bei der Ausführung des Befehls ein Timeout aufgetreten ist, und den Status auf setzen. TIMED_OUT In diesem Fall bleibt der Ausführungsstatus unverändert, TIMED_OUT aber die Felder des StatusReason Objekts ändern sich je nach den von den Geräten gemeldeten Informationen. Die Befehlsausführung wird jetzt zum Terminal.

    Weitere Informationen finden Sie unter Timeout-Wert und TIMED_OUT Ausführungsstatus.

Ausführungen von Terminal-Befehlen

Eine Befehlsausführung wird zum Terminal, wenn die Ausführung keine zusätzlichen Updates von den Geräten mehr akzeptiert. Bei den folgenden Status handelt es sich um einen Terminalstatus. Eine Ausführung kann von jedem Status, der kein Terminal ist, oder, CREATED in den Terminalstatus übergehen. IN_PROGRESS TIMED_OUT

  • SUCCEEDED

    Wenn das Gerät die Ausführung des Befehls erfolgreich abgeschlossen hat, kann es eine Antwort auf das Antwortthema des Befehls veröffentlichen und den Status der Befehlsausführung auf aktualisieren. SUCCEEDED

  • FAILED

    Wenn Ihr Gerät die Ausführung des Befehls nicht abschließen kann, kann es eine Antwort auf das Antwortthema veröffentlichen und den Status der Befehlsausführung auf aktualisierenFAILED. Sie können die reasonDescription Felder reasonCode und des statusReason Objekts oder die CloudWatch Protokolle verwenden, um die Fehler weiter zu beheben.

  • REJECTED

    Wenn Ihr Gerät eine ungültige oder inkompatible Anfrage erhält, kann das Gerät die UpdateCommandExecution API mit dem Status aufrufen. REJECTED Sie können die reasonDescription Felder reasonCode und des statusReason Objekts oder die CloudWatch Protokolle verwenden, um weitere Probleme zu beheben.