下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

AWS IoT Jobs 库演示

简介

AWS IoT Jobs 库演示展示了如何 通过 MQTT 连接,连接到 AWS IoT Jobs 服务、从 检索 AWS 作业IoT,以及在设备上处理作业。该 AWS IoT Jobs 演示项目使用 FreeRTOS Windows 移植,因此可以 在 Windows 上使用 Visual Studio 的 社区免费版本进行构建和评估。不需要微控制器硬件。该演示展示了与 使用 TLS 的 AWS IoT MQTT 代理建立安全连接, 其方式与 MQTT 相互身份验证演示相同

源代码组织

演示项目名为 jobs_demo.sln, 位于 GitHub 上的 FreeRTOS-Plus Jobs_Demo 存储库的以下目录:

FreeRTOS-Plus\Demo\AWS\Jobs_Windows_Simulator\Jobs_Demo

配置演示项目

演示使用 FreeRTOS-Plus-TCP TCP/IP堆栈,因此 请遵循 为 TCP/IP 入门 项目提供的说明执行以下操作:

  1. 安装 必要组件 (例如WinPCap )。
  2. 可选 设置静态或动态 IP 地址,网关地址和网络掩码
  3. 可选 设置 MAC 地址
  4. 选择主机上的以太网网络接口

应在 Jobs 演示项目中更改上述设置。

配置 AWS IoT MQTT 代理连接

在本演示中,您将使用 MQTT 连接到 AWS IoT MQTT 代理。此连接的配置 方式与 MQTT 相互身份验证演示中的配置方式相同。

构建演示项目

此演示项目使用 Visual Studio 的社区免费版。要构建演示,请执行以下操作:

  1. 在 Visual Studio IDE 中打开 Visual Studio 解决方案文件 FreeRTOS-Plus/Demo/AWS/Jobs_Windows_Simulator/Jobs_Demo/jobs_demo.sln
  2. 在 IDE 的 “Build” 菜单中选择 “Build Solution”。

功能

该演示展示了用于从 AWS IoT 接收作业并在设备上处理作业的工作流程。演示为交互式, 并要求使用 AWS IoT 控制台或 AWS CLI 来创建作业。有关创建作业的更多信息, 请参阅 AWS CLI 命令参考》中的 create-job。该演示要求作业文档 将“action”键设置为“print”以将消息打印到控制台。此作业文件的格式如下:

{
    "action": "print",
    "message": "INSERT_MESSAGE_HERE"
}

使用 AWS CLI,可按如下方式创建作业:

aws iot create-job \
    --job-id t12 \
    --targets arn:aws:iot:us-east-1:1234567890:thing/device1 \
    --document '{"action":"print","message":"hello world!"}'

上面使用的实参仅为示例。

该演示还使用将“Action ”键设置为“Publish ”的作业文档 将消息重新发布到主题。作业文件的格式如下:

{
    "action": "publish",
    "message": "INSERT_MESSAGE_HERE",
    "topic": "topic/name/here"
}

演示循环,直到收到一个作业文档,并将“action”键设置为“exit”以退出演示。作业文件的格式如下:

{
    "action: "exit"
}

Jobs 演示的入口点

Jobs 演示入口点函数的源代码 位于 GitHub 上的 JobsDemoExample.c 中。此函数执行以下操作:

  1. 使用 mqtt_demo_helpers.c 中的辅助函数建立 MQTT 连接。
  2. 订阅 NextJobExecutionChanged API 的 MQTT 主题,方法为:使用 mqtt_demo_helpers.c 中的辅助函数。(主题字符串之前已使用 Jobs 库定义的宏 进行汇编。)
  3. 发布到 StartNextPendingJobExecution API 的 MQTT 主题,方法为:使用 mqtt_demo_helpers.c 中的辅助函数。 (主题字符串之前已使用 Jobs 库定义的宏 进行汇编。)
  4. 反复调用 MQTT_ProcessLoop 以接收传入消息,这些消息将传递给 prvEventCallback 进行处理。
  5. 演示收到退出操作后, 使用 mqtt_demo_helpers.c 中的辅助函取消订阅 MQTT 主题并断开连接。

接收到的 MQTT 消息的回调

此函数从 Jobs 库调用 Jobs_MatchTopic 以对传入的 MQTT 消息进行分类。 如果消息类型对应于新作业,则会调用 prvNextJobHandler

函数 prvNextJobHandler 及其调用的函数 从 JSON 格式的消息中解析作业文档,并执行作业指定的操作。尤其值得关注的函数是 prvSendUpdateForJob

此传入消息回调函数的源代码位于 GitHub 上的 JobsDemoExample.c 中。

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

函数 prvSendUpdateForJob 从 Jobs 库调用 Jobs_Update 以填充紧随其后的 MQTT 发布操作中使用的主题字符串。

prvSendUpdateForJob 函数的源代码位于 GitHub 上的 JobsDemoExample.c 中 。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.