下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。
注意:AWS IoT Device Defender 库现已可用,可以通过 主 FreeRTOS 下载和 GitHub 上 FreeRTOS 存储库中的预配置示例获得。

AWS IoT Device Defender 演示

简介

AWS IoT Device Defender 演示展示了如何通过 MQTT 连接与 AWS IoT Device Defender 服务互动,提交包括自定义指标的 device defender 报告,并验证报告是否被接受。 AWS IoT Device Defender 演示项目使用的是 FreeRTOS Windows 端口,因此可以使用 Windows 上的 Visual Studio 的免费社区版本进行构建和评估。 运行此演示不需要微控制器硬件。此演示建立了一个双向验证安全连接,连接到 AWS IoT MQTT 代理(使用 TLS)。

源代码组织

该演示项目名为 defender_demo.sln,可以在 GitHub 上的 Device_Defender_Demo 存储库的以下目录中找到:

FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo

配置演示项目

该演示使用 FreeRTOS-Plus-TCP TCP/IP 堆栈,因此请遵循为 TCP/IP 入门项目提供的指示,以:

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

应在 Device Defender 演示项目的 FreeRTOSConfig.h 文件中修改上述设置。

配置 AWS IoT MQTT 代理连接

在本演示中,您将使用 MQTT 连接到 AWS IoT MQTT 代理。此连接以与 MQTT 双向 验证演示相同的方式进行配置。

构建演示项目

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

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

功能

本演示向您展示了如何构建 Device Defender 报告并将其从设备发布到 AWS IoT Device Defender 服务。 演示会连接到 AWS IoT 代理,收集设备的网络和自定义指标, 使用收集的指标构造 JSON 报告,并发布报告。演示的结构在以下章节中显示。

prvDefenderDemoTask() 函数的源代码可以在 Github 上的 DefenderDemoExample.c 文件中找到。

此屏幕截图显示演示正确执行时的预期输出:

单击以放大

订阅 Defender 主题

函数 prvSubscribeToDefenderTopics() 在下列情况下订阅 MQTT 主题以接收响应:

  • 接受其已发布的 Device Defender 报告。
    DEFENDER_API_JSON_ACCEPTED 用于构建主题字符串。
  • 已发布的 Device Defender 报告被拒绝。
    DEFENDER_API_JSON_REJECTED 用于构建主题字符串。

prvSubscribeToDefenderTopics() 函数的源代码可以在 GitHub 上的 DefenderDemoExample.c 文件中找到 找到。

收集设备指标

函数 prvCollectDeviceMetrics() 使用 metrics_collector.h 中定义的函数和自定义指标手机网络指标。所收集的网络指标是:

  • 发送和接收的字节和数据包数
  • 已开放的 TCP 端口
  • 已开放的 UDP 端口
  • 已建立的 TCP 连接

收集的自定义指标为:

  • 堆栈高水位线(带类型号)
  • 设备的任务 ID(带类型编号列表)

prvCollectDeviceMetrics() 函数的源代码可以在 GitHub 上的 DefenderDemoExample.c 文件中找到 找到。

生成 Device Defender 报告

函数 prvGenerateDeviceMetricsReport() 生成 Device Defender 报告。它在 report_builder.h 中被定义。函数将网络指标和缓冲区作为输入,以创建了 JSON 文档,其格式为 AWS IoT Device Defender 服务预期的格式,并将其写入指定的缓冲区。 JSON 文档的格式,即 AWS IoT Device Defender 服务预期的格式 在这里有说明。

prvGenerateDeviceMetricsReport() 函数的源代码可以 GitHub 上的 DefenderDemoExample.c 文件中找到 找到。

发布 Device Defender 报告

函数 prvPublishDeviceMetricsReport() 在适当的 MQTT 主题上 发布 Device Defender 报告。在 JSON 中,使用宏 DEFENDER_API_JSON_PUBLISH 构建报表。

prvPublishDeviceMetricsReport() 函数的源代码可以 GitHub 上的 DefenderDemoExample.c 文件中找到 找到。

处理响应的回调

函数 prvPublishCallback() 处理传入的 MQTT 消息。它使用 Device Defender 库中的 Defender_MatchTopic API,以检查传入的 MQTT 消息是否来自 AWS IoT Device Defender 服务。如果消息来自服务,它会解析收到的 JSON 响应,并且 提取报告 ID。然后验证报告 ID 是否与 Device Defender 报告中发送的 ID 相同。

prvPublishCallback() 函数的源代码可以在 GitHub 上的 DefenderDemoExample.c 文件中找到 。

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