本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoT 作业库演示
重要
这是《FreeRTOS 用户指南》的存档版本,可用于 FreeRTOS 版本 202012.00。有关本文档的最新版本,请参阅《FreeRTOS 用户指南》。
简介
AWS IoT 作业库演示向您展示了如何通过 MQTT 连接连接到 J AWS IoT obs 服务 AWS IoT、从设备检索作业并在设备上处理作业。 AWS IoT Jobs 演示项目使用 FreeRTOS Windows 端口,因此可以在 Windows
注意
要设置和运行 FreeRTOS 演示,请按照开始使用 FreeRTOS中的步骤操作。
源代码组织
演示代码在jobs_demo.c
文件中,可以在GitHub
目录中找到。freertos
/demos/jobs_for_aws/
配置 AWS IoT MQTT 代理连接
在本演示中,您将使用与 MQTT 代理的 AWS IoT
MQTT 连接。此连接的配置方式与 MQTT 双向身份验证演示
功能
该演示演示了用于从设备接收任务 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" }
Jobs 演示的入口点
Jobs 演示入口点函数的源代码可在上找到 GitHub
-
使用
mqtt_demo_helpers.c
中的帮助程序函数建立 MQTT 连接。 -
使用
mqtt_demo_helpers.c
中的帮助程序函数为NextJobExecutionChanged
API 订阅 MQTT 主题。主题字符串是之前使用 AWS IoT Jobs 库定义的宏汇编而成的。 -
使用
mqtt_demo_helpers.c
中的帮助程序函数为StartNextPendingJobExecution
API 发布 MQTT 主题。主题字符串是之前使用 AWS IoT Jobs 库定义的宏汇编而成的。 -
反复调用
MQTT_ProcessLoop
以接收传入的消息,这些消息将交给prvEventCallback
进行处理。 -
演示收到退出操作后,使用文件中的帮助程序函数取消订阅 MQTT 主题并断开连接。
mqtt_demo_helpers.c
收到的 MQTT 消息的回调
该 prvEventCallbackJobs_MatchTopic
从 AWS IoT Jobs 库调用,对传入的 MQTT 消息进行分类。如果消息类型对应于新作业,则会调用 prvNextJobHandler()
。
prvNextJobHandlerprvSendUpdateForJob
函数非常让人感兴趣。
为正在运行的作业发送更新
函数 prvSendUpdateForJob()Jobs_Update()
从作业库中调用,以填充紧随其后的 MQTT 发布操作中使用的主题字符串。