本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT 任務程式庫示範
重要
這是 FreeRTOS 使用者指南的封存版本,適用於 FreeRTOS 版本 202210.00。如需本文件的最新版本,請參閱 FreeRTOS 使用者指南。
簡介
AWS IoT Jobs 程式庫示範說明如何透過 MQTT 連線連線至 AWS IoT Jobs 服務、從中擷取任務 AWS IoT,以及在裝置上處理任務。 AWS IoT 任務示範專案使用 FreeRTOS Windows 連接埠
注意
若要設定和執行 FreeRTOS 示範,請遵循中的步驟FreeRTOS 入門。
原始碼組織
示範程式碼位於 jobs_demo.c
檔案中,可在 GitHub
目錄中找到。freertos
/demos/jobs_for_aws/
設定 AWS IoT MQTT 代理程式連線
在此示範中,您會使用 MQTT 連線至 AWS IoT MQTT 代理程式。此連線的設定方式與 相同coreMQTT 相互身分驗證示範。
功能
示範顯示用來從 接收任務 AWS IoT 並在裝置上處理任務的工作流程。示範是互動式的,要求您使用 AWS IoT 主控台或 AWS Command Line Interface () 來建立任務AWS CLI。如需建立任務的詳細資訊,請參閱 AWS CLI 命令參考中的 create-job。示範需要任務文件將action
金鑰設定為 print
,才能將訊息列印到 主控台。
請參閱此任務文件的下列格式。
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
您可以使用 AWS CLI 來建立任務,如下列範例命令所示。
aws iot create-job \ --job-id t12 \ --targets arn:aws:iot:
region
:123456789012:thing/device1 \ --document '{"action":"print","message":"hello world!"}'
此示範也會使用 action
金鑰設定為 的任務文件publish
,將訊息重新發佈至主題。請參閱此任務文件的下列格式。
{ "action": "publish", "message": "ADD_MESSAGE_HERE", "topic": "topic/name/here" }
示範會循環,直到收到action
金鑰設為 的任務文件exit
,以結束示範。任務文件的格式如下所示。
{ "action: "exit" }
任務示範的進入點
您可以在 GitHub
-
使用 中的協助程式函數建立 MQTT 連線
mqtt_demo_helpers.c
。 -
使用 中的協助程式函數,訂閱
NextJobExecutionChanged
API 的 MQTT 主題mqtt_demo_helpers.c
。主題字串會較舊使用 AWS IoT Jobs 程式庫定義的巨集來組合。 -
使用 中的協助程式函數,發佈至
StartNextPendingJobExecution
API 的 MQTT 主題mqtt_demo_helpers.c
。主題字串會較舊使用 AWS IoT Jobs 程式庫定義的巨集來組合。 -
重複呼叫
MQTT_ProcessLoop
以接收傳遞給prvEventCallback
進行處理的傳入訊息。 -
示範收到結束動作後,請使用
mqtt_demo_helpers.c
檔案中的協助程式函數,取消訂閱 MQTT 主題並中斷連線。
已接收 MQTT 訊息的回呼
prvEventCallback Jobs_MatchTopic
會從 AWS IoT 任務程式庫呼叫 來分類傳入的 MQTT 訊息。如果訊息類型對應至新任務,則 prvNextJobHandler()
會呼叫 。
prvNextJobHandler prvSendUpdateForJob
函數。
傳送執行中任務的更新
函數 prvSendUpdateForJob()Jobs_Update()
會從任務程式庫呼叫 ,填入用於 MQTT 發佈操作的主題字串,緊接著是。