Amazon IoT作业库演示 - FreeRTOS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon IoT作业库演示

介绍

这些区域有:Amazon IoT作业库演示向您展示了如何连接到Amazon IoTJobs 服务通过 MQTT 连接,从Amazon IoT,然后在设备上处理它。这些区域有:Amazon IoT乔布斯演示项目使用Windows 端口,因此可以使用Visual Studio 社区Windows 上的版本。不需要微控制器硬件。该演示建立了与Amazon IoT使用 TLS 的 MQTT 代理与CoreMQTT 双向身份验证演示.

注意

要设置和运行 FreeRTOS 演示,请按照中的步骤操作入门.

源代码组织

演示代码在jobs_demo.c并且可以在GitHub网站或在freertos/demos/jobs_for_aws/目录。

配置Amazon IoTMQTT 代理连接

在本演示中,您使用 MQTT 连接到Amazon IoTMQTT 代理。配置此连接的方式与CoreMQTT 双向身份验证演示.

功能

该演示展示了用于从中接收工作的工作流程Amazon IoT然后在设备上处理它们。该演示是交互式的,需要你使用Amazon IoT控制台或Amazon Command Line Interface(Amazon CLI)。有关创建作业的更多信息,请参阅创建作业中的Amazon CLI命令参考. 该演示要求作业文档中有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. 此函数执行以下操作:

  1. 使用中的帮助函数建立 MQTT 连接mqtt_demo_helpers.c.

  2. 订阅 MQTT 主题以获取NextJobExecutionChangedAPI,在中使用帮助函数mqtt_demo_helpers.c. 主题字符串是先前组装的,使用Amazon IoT作业库。

  3. 发布到 MQTT 主题以获取StartNextPendingJobExecutionAPI,在中使用帮助函数mqtt_demo_helpers.c. 主题字符串是先前组装的,使用Amazon IoT作业库。

  4. 反复打电话MQTT_ProcessLoop接收传入的消息prvEventCallback用于处理。

  5. 演示收到退出操作后,取消订阅 MQTT 主题并断开连接,使用mqtt_demo_helpers.c文件。

回调收到的 MQTT 消息

这些区域有:prvEventCallback函数调用Jobs_MatchTopic来自 的Amazon IoTJob 库用于对传入的 MQTT 消息进行分类。如果消息类型与新作业对应,prvNextJobHandler()被调用。

这些区域有:prvNextJob 处理程序函数以及它调用的函数,从 JSON 格式的消息中解析作业文档,然后运行作业指定的操作。特别值得注意的是prvSendUpdateForJobfunction.

发送正在运行的作业的更新

该函数prvSendFor Job 的更新 ()呼叫Jobs_Update()从 Jobs 库中填充紧接下来的 MQTT 发布操作中使用的主题字符串。