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.
AWS IoTDemo der Jobbibliothek
Wichtig
Diese Demo wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie hier beginnen, wenn Sie ein neues Projekt erstellen. Wenn Sie bereits über ein bestehendes FreeRTOS-Projekt verfügen, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, lesen Sie dieLeitfaden zur Migration des kostenlosen RTOS Github-Repositorys von Amazon.
Einführung
Die Demo derAWS IoT Jobs-Bibliothek zeigt Ihnen, wie Sie über eine MQTT-Verbindung eine Verbindung zum AWS IoTJobs-Service herstellen, einen Job vonAWS IoT einem Gerät abrufen und ihn auf einem Gerät verarbeiten. DasAWS IoT Jobs-Demoprojekt verwendet den FreeRTOS Windows-Port
Anmerkung
Um die FreeRTOS-Demos einzurichten und auszuführen, folgen Sie den Schritten unterJetzt kostenlos durchstarten RTOS.
Quellcode code code code code code
Der Demo-Code befindet sich in derjobs_demo.c
Datei und kann auf der GitHub
Verzeichnis gefunden werden.freertos
/demos/jobs_for_aws/
Konfigurieren Sie dieAWS IoT MQTT-Broker-Verbindung
In dieser Demo verwenden Sie eine MQTT-Verbindung zumAWS IoT MQTT-Broker. Diese Verbindung ist auf die gleiche Weise konfiguriert wie dieCoreMQTT-Demo zur gegenseitigen Authentifizierung.
Funktionalität
Die Demo zeigt den Arbeitsablauf, mit dem Aufträge von einem Gerät empfangenAWS IoT und auf einem Gerät verarbeitet werden. Die Demo ist interaktiv und erfordert, dass Sie Jobs erstellen, indem Sie entweder dieAWS IoT Konsole oder dieAWS Command Line Interface (AWS CLI) verwenden. Weitere Informationen zum Erstellen eines Auftrags finden AWS CLISie unter Für die Demo muss im Job-Dokument einaction
Schlüssel auf gesetzt sein,print
um eine Nachricht an die Konsole zu drucken.
Dieses Aufcode code code code code code
{
"action": "print",
"message": "ADD_MESSAGE_HERE"
}
Sie können den verwendenAWS CLI, um einen Job wie im folgenden Beispielbefehl zu erstellen.
aws iot create-job \
--job-id t12 \
--targets arn:aws:iot:region
:123456789012:thing/device1 \
--document '{"action":"print","message":"hello world!"}'
Die Demo verwendet auch ein Jobdokument, in dem deraction
Schlüssel auf gesetzt istpublish
, um die Nachricht zu einem Thema erneut zu veröffentlichen. Dieses Aufcode code code code code code
{
"action": "publish",
"message": "ADD_MESSAGE_HERE",
"topic": "topic/name/here"
}
Die Demo wird wiederholt, bis sie ein Job-Dokument erhält, in dem deraction
Schlüssel auf gesetzt istexit
, um die Demo zu beenden. Das Format für das Jobdokument lautet wie folgt.
{
"action: "exit"
}
Einstiegspunkt der Jobs-Demo
Den Quellcode für die Jobs-Demo-Einstiegspunktfunktion finden Sie unter GitHub
-
Stellen Sie mithilfe der Hilfsfunktionen in eine MQTT-Verbindung her
mqtt_demo_helpers.c
. -
Abonnieren Sie das MQTT-Thema für die
NextJobExecutionChanged
API, indem Sie die Hilfsfunktionen in verwendenmqtt_demo_helpers.c
. Die Themenzeichenfolge wurde zuvor mithilfe von Makros zusammengestellt, die in derAWS IoT Jobs-Bibliothek definiert wurden. -
Veröffentlichen Sie im MQTT-Thema für die
StartNextPendingJobExecution
API, indem Sie die Hilfsfunktionen in verwendenmqtt_demo_helpers.c
. Die Themenzeichenfolge wurde zuvor mithilfe von Makros zusammengestellt, die in derAWS IoT Jobs-Bibliothek definiert wurden. -
Rufen Sie wiederholt an
MQTT_ProcessLoop
, um eingehende Nachrichten zu empfangen, dieprvEventCallback
zur Verarbeitung übergeben werden. -
Nachdem die Demo die Exit-Aktion erhalten hat, melden Sie sich vom MQTT-Thema ab und trennen Sie die Verbindung, indem Sie die Hilfsfunktionen in der
mqtt_demo_helpers.c
Datei verwenden.
Callback für empfangene MQTT-Nachrichten
Die prvEventCallbackJobs_MatchTopic
aus derAWS IoT Jobs-Bibliothek auf, um die eingehende MQTT-Nachricht zu klassifizieren. Wenn der Nachrichtentyp einem neuen Job entspricht,prvNextJobHandler()
wird aufgerufen.
Die prvNextJobHandler-FunktionprvSendUpdateForJob
Funktion.
Senden Sie ein Update für einen laufenden Job
Die Funktion prvSendUpdateForJob()Jobs_Update()
aus der Jobs-Bibliothek auf, um die Themenzeichenfolge aufzufüllen, die bei der unmittelbar darauf folgenden MQTT-Veröffentlichungsoperation verwendet wird.