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

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

AWS IoT Device Defender 演示

Introduction

本演示说明如何使用 AWS IoT Device Shadow 库连接到 AWS IoT Device Defender。该演示使用 coreMQTT 库通过 TLS(双向身份验证)与 AWS IoT MQTT 代理和 coreJSON 库建立 MQTT 连接,以验证和解析从 AWS IoT Device Defender 收到的响应。该演示演示如何使用从设备收集的指标创建 JSON 格式的报告,以及如何将报告提交到 AWS IoT Device Defender。该演示还演示了如何向 coreMQTT 库注册回调函数以处理 AWS IoT Device Defender 发送用于确认是接受还是拒绝报告的响应。

注意

要设置和运行 FreeRTOS 演示,请按照开始使用 FreeRTOS中的步骤操作。

Functionality

本演示将创建一个应用程序任务,该任务演示如何收集指标,以 JSON 格式构建设备保护程序报告,并通过与 AWS IoT Device Defender MQTT 代理的安全 MQTT 连接将其提交给 AWS IoT。

我们收集指标的方式取决于所使用的 TCP/IP 堆栈。对于 FreeRTOS+TCP 和支持的 lwIP 配置,我们提供了指标收集实施,这些实施从设备收集真实指标并在 AWS IoT Device Defender 报告中提交指标。您可以在 上找到 FreeRTOS +TCP 和 lwIP 的实施。GitHub

对于使用任何其他 TCP/IP 堆栈的主板,将为返回所有指标的零的指标集合函数提供存根定义。要使用此存根实施在主板上发送真实指标,请为您的网络堆栈实施 freertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c 中的函数。该文件还在 GitHub 网站上提供。

对于 ESP32,默认 lwIP 配置不使用核心锁定,因此演示将使用被清除的指标。如果要使用参考 lwIP 指标集合实现,请在 lwiopts.h 中定义以下宏:

#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1

以下是运行演示时的示例输出。

如果您的主板未使用 FreeRTOS+TCP 或支持的 lwIP 配置,则输出将如下所示。

演示的源代码位于您在 freertos/demos/device_defender_for_aws/ 目录或 GitHub 网站上的下载中。

订阅 AWS IoT Device Defender 主题

subscribeToDefenderTopics 函数订阅 MQTT 主题,系统将针对这些主题接收对已发布 Device Defender 报告的响应。它使用宏 DEFENDER_API_JSON_ACCEPTED 来构建主题字符串,所接受的设备防护程序报告的响应会根据该字符串接收。它使用宏 DEFENDER_API_JSON_REJECTED 来构建主题字符串,将在该字符串上接收对已拒绝设备保护程序报告的响应。

收集设备指标

collectDeviceMetrics 函数使用 中定义的函数收集联网指标。metrics_collector.h 收集的指标是发送和接收的字节数、开放的 TCP 端口、开放的 UDP 端口和已建立的 TCP 连接。

生成 AWS IoT Device Defender 报告

函数使用 generateDeviceMetricsReport 中定义的函数生成设备保护程序报告。report_builder.h 该函数采用网络指标和缓冲区,按 AWS IoT Device Defender 预期的格式创建 JSON 文档,并将其写入到提供的缓冲区。所需的 JSON 文档的格式在 AWS IoT Device Defender设备端指标中指定。AWS IoT 开发人员指南

发布 AWS IoT Device Defender 报告

报告在 MQTT 主题上发布,用于发布 JSON AWS IoT Device Defender 报告。AWS IoT Device Defender该报告是使用宏 DEFENDER_API_JSON_PUBLISH 构建的,如 网站上的此 代码段GitHub所示。

处理响应的回调

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