本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon IoT工作库演示
此演示托管在 Amazon-FreeRTOS 存储库中,该存储库已过时。建议您在创建新项目时从这里开始。如果您已经有一个基于现已弃用的 Amazon-FreeRTOS 存储库的现有 FreeRTOS 项目,请参阅亚马逊 FreeRTOS Github 存储库迁移指南。
介绍
Amazon IoT作业库演示向您展示了如何通过 MQTT 连接连接到 J Amazon IoTobs 服务Amazon IoT、从中检索任务以及在设备上处理任务。Amazon IoT乔布斯演示项目使用 FreeRTOS Windows 端口
要设置和运行 FreeRTOS 演示,请按照中的步骤操作FreeRTOS 入门。
源代码组织
演示代码在jobs_demo.c
文件中,可以在GitHub
目录中找到。freertos
/demos/jobs_for_aws/
配置 MAmazon IoT QTT 代理连接
在此演示中,您使用了与 MQTT 代理的Amazon IoT MQTT 连接。此连接的配置方式与配置相同CoreMQTT 双向身份验证演示。
功能
该演示显示了用于从设备接收任务Amazon IoT并在设备上处理任务的工作流程。该演示是交互式的,需要您使用Amazon IoT控制台或Amazon Command Line Interface (Amazon CLI) 来创建作业。有关创建作业的更多信息,请参阅《Amazon CLI命令参考》中的 create-jo b。该演示要求将作业文档的action
密钥设置print
为向控制台打印消息。
请参阅此工作文档的以下格式。
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
您可以使用创建任务,如以下示例命令所示。Amazon 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
。主题字符串是先前使用由Amazon IoT Jobs 库定义的宏汇编而成的。 -
使用中的辅助函数,发布到
StartNextPendingJobExecution
API 的 MQTT 主题mqtt_demo_helpers.c
。主题字符串是先前使用由Amazon IoT Jobs 库定义的宏汇编而成的。 -
反复呼叫
MQTT_ProcessLoop
以接收传入的消息,这些消息已移交prvEventCallback
给处理。 -
演示收到退出操作后,使用
mqtt_demo_helpers.c
文件中的帮助函数取消订阅 MQTT 主题并断开连接。
对收到的 MQTT 消息进行回调
该 prvEventCallbackJobs_MatchTopic
从Amazon IoT Jobs 库调用,对传入的 MQTT 消息进行分类。如果消息类型对应于新任务,prvNextJobHandler()
则调用。
prvNextJobHandlerprvSendUpdateForJob
函数。
发送正在运行的任务的更新
函数 prvSendUpdateForJob()Jobs_Update()
从 Jobs 库调用,以填充紧随其后的 MQTT 发布操作中使用的主题字符串。