本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoT 作业库演示
Introduction
Jobs 库演示说明了如何通过 MQTT 连接来连接到 AWS IoT Jobs 服务AWS IoT、从
要设置和运行 FreeRTOS 演示,请按照开始使用 FreeRTOS中的步骤操作。
源代码组织
演示代码位于 jobs_demo.c
文件中,可以在 GitHub
目录中找到。
freertos
/demos/jobs_for_aws/
配置 AWS IoT MQTT 代理连接
在本演示中,您将使用与 AWS IoT MQTT 代理的 MQTT 连接。此连接的配置方式与 MQTT 双向身份验证演示
Functionality
该演示演示演示用于从 AWS IoT 接收任务并在设备上处理它们的工作流程。此演示是交互式的,需要您使用 AWS IoT 控制台或 AWS Command Line
Interface (AWS CLI) 创建任务。有关创建作业的更多信息,请参阅 https://docs.amazonaws.cn/cli/latest/reference/iot/create-job.html 中的 create-jobAWS CLI Command Reference。该演示需要作业文档将 action
键设置为 print
以将消息输出到控制台。
请参阅此作业文档的以下格式。
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
您可以使用 AWS CLI 创建作业,如以下示例命令所示。
aws iot create-job \ --job-id t12 \ --targets arn:aws:iot:us-east-1: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_demo_helpers.c
中的帮助程序函数建立 MQTT 连接。 -
在
NextJobExecutionChanged
中使用帮助程序函数订阅mqtt_demo_helpers.c
API 的 MQTT 主题。 主题字符串会更早地使用由 AWS IoT Jobs 库定义的宏进行组合。 -
在
StartNextPendingJobExecution
中使用帮助程序函数发布到mqtt_demo_helpers.c
API 的 MQTT 主题。 该主题字符串会更早地使用由 AWS IoT Jobs 库定义的宏进行组合。 -
反复调用
MQTT_ProcessLoop
以接收提交到prvEventCallback
以进行处理的传入消息。 -
在演示收到退出操作后,请使用
mqtt_demo_helpers.c
文件中的帮助程序函数取消订阅 MQTT 主题并断开连接。
收到的 MQTT 消息的回调
此函数从 Jobs_MatchTopic
Jobs 库调用 AWS IoT 以对传入 MQTT 消息进行分类。如果消息类型对应于新作业,则调用 prvNextJobHandler()
。
函数及其调用的函数,解析 JSON 格式消息中的作业文档,并运行作业指定的操作。prvNextJobHandler
特别感兴趣的是 prvSendUpdateForJob
函数。
在 GitHub
发送正在运行的作业的更新
函数 prvSendUpdateForJob()
从 Jobs 库调用 Jobs_Update()
以填充紧跟在 MQTT 发布操作中使用的主题字符串。
可以在 prvSendUpdateForJob()
GitHub