Geräteworkflow - 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.

Geräteworkflow

Ein Gerät kann Aufträge, die es ausführt, auf eine der folgenden Arten verarbeiten.

  • Holen Sie sich den nächsten Auftrag
    1. Wenn ein Gerät online geht, sollte es das notify-next-Thema des Gerätes abonnieren.

    2. Rufen Sie die DescribeJobExecution-MQTT-API mit jobId $next auf, um den nächsten Auftrag, sein Auftragsdokument und andere Details abzurufen, einschließlich eines eventuell in statusDetails gespeicherten Status. Wenn das Auftragsdokument eine Codedateisignatur hat, müssen Sie die Signatur verifizieren, bevor Sie mit der Verarbeitung des Auftrags fortfahren.

    3. Rufen Sie die UpdateJobExecution-MQTT-API auf, um den Auftragsstatus zu aktualisieren. Zur Kombination dieses und des vorherigen Schrittes in einem Aufruf kann das Gerät auch StartNextPendingJobExecution aufrufen.

    4. (Optional) Sie können einen Schritt-Timer hinzufügen, indem Sie einen Wert für stepTimeoutInMinutes angeben, wenn Sie UpdateJobExecution oder StartNextPendingJobExecution aufrufen.

    5. Führen Sie die in dem Auftragsdokument angegebenen Aktionen mit der UpdateJobExecution-MQTT-API durch, um über den Fortschritt des Auftrags zu berichten.

    6. Überwachen Sie die Auftragsausführung durch Aufruf der DescribeJobExecution MQTT-API mit dieser jobId. Wenn die Auftragsausführung gelöscht wird, gibt ein DescribeJobExecution einen ResourceNotFoundException aus.

      Das Gerät sollte in der Lage sein, einen gültigen Zustand wiederherzustellen, wenn die Auftragsausführung abgebrochen oder gelöscht wird, während das Gerät den Auftrag ausführt.

    7. Rufen Sie die UpdateJobExecution-MQTT-API erneut auf, wenn Sie den Auftrag abgeschlossen haben, um den Auftragsstatus zu aktualisieren und Erfolg oder Fehlschlag zu melden.

    8. Da der Auftragsstatus dieses Auftrags zu einem terminalen Status geändert wurde, ändert sich der nächste zur Ausführung anstehende Auftrag (falls vorhanden). Das Gerät wird benachrichtigt, dass sich die nächste ausstehende Auftragsausführung geändert hat. An diesem Punkt sollte das Gerät wie in Schritt 2 beschrieben fortfahren.

    Wenn das Gerät online bleibt, erhält es weiterhin Benachrichtigungen über die nächste ausstehende Auftragsausführung. Dazu gehören auch die Daten zur Auftragsausführung, wenn ein Auftrag abgeschlossen ist oder wenn eine neue ausstehende Auftragsausführung hinzugefügt wird. Wenn dies eintritt, fährt das Gerät wie in Schritt 2 beschrieben fort.

  • Wählen Sie aus verfügbaren Aufträgen
    1. Wenn ein Gerät online geht, sollte es das notify-Thema des Objekts abonnieren.

    2. Rufen Sie die GetPendingJobExecutions-MQTT-API auf, um eine Liste der ausstehenden Auftragsausführungen abzurufen.

    3. Wenn die Liste eine oder mehrere Auftragsausführungen enthält, wählen Sie eine davon.

    4. Rufen Sie die DescribeJobExecution-MQTT-API ab, um das Auftragsdokument und andere Details abzurufen, einschließlich eventueller in statusDetails gespeicherter Status.

    5. Rufen Sie die UpdateJobExecution-MQTT-API auf, um den Auftragsstatus zu aktualisieren. Wenn das Feld includeJobDocument in diesem Befehl auf true gesetzt ist, kann das Gerät den vorherigen Schritt übergehen und an diesem Punkt das Auftragsdokument abrufen.

    6. Optional können Sie einen Schritt-Timer hinzufügen, indem Sie einen Wert für stepTimeoutInMinutes angeben, wenn Sie UpdateJobExecution aufrufen.

    7. Führen Sie die in dem Auftragsdokument angegebenen Aktionen mit der UpdateJobExecution-MQTT-API durch, um über den Fortschritt des Auftrags zu berichten.

    8. Überwachen Sie die Auftragsausführung durch Aufruf der DescribeJobExecution MQTT-API mit dieser jobId. Wenn die Auftragsausführung abgebrochen oder gelöscht werden, während das Gerät den Auftrag ausführt, sollte das Gerät in der Lage sein, die Wiederherstellung in einen gültigen Zustand durchzuführen.

    9. Rufen Sie die UpdateJobExecution-MQTT-API erneut auf, wenn Sie den Auftrag abgeschlossen haben, um den Auftragsstatus zu aktualisieren und Erfolg oder Fehlschlag zu melden.

    Wenn das Gerät online bleibt, wird es über alle ausstehenden Auftragsausführungen benachrichtigt, wenn neue ausstehende Auftragsausführungen verfügbar werden. Wenn dies eintritt, kann das Gerät wie in Schritt 2 beschrieben fortfahren.

Wenn das Gerät den Auftrag nicht ausführen kann, sollte es die UpdateJobExecution-MQTT-API aufruft, um den Auftragsstatus zu REJECTED aktualisieren.