本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用支持 MQTT 的 V3 网关将数据集成到 SiteWise Edge
本教程将指导您完成将使用 MQTT 消息协议的第三方设备和传感器与 AWS IoT SiteWise 支持 MQTT 的 V3 网关集成的过程。您将学习如何设置 AWS IoT SiteWise 边缘网关以收集和监控来自支持 MQTT 的设备的数据。 AWS IoT SiteWise 使您能够收集、处理和监控工业设备数据。使用 SiteWise Edge 功能优化工业物联网运营,并将原始数据转化为切实可行的见解。
在本教程中,我们使用风力发电场演示中的数据来说明关键概念。熟悉该过程后,您可以使用自己的数据重复本教程。
完成本教程后,您可以执行以下操作:
-
设置和配置支持 MQTT 的 V3 网关,以接收来自工业设备的数据
-
处理和验证来自边缘设备的传入的 MQTT 消息
-
AWS IoT SiteWise 使用第三方可视化平台查看设备数据
-
将处理后的数据从边缘网关发送到 AWS Cloud ,以实现集中存储和进一步分析
此外,您可以通过连接到其他 AWS IoT 服务来利用您的 Edge 网关功能来执行以下任务:
-
配置 AWS IoT 规则,将数据路由到 Amazon S3、Amazon
Timestream 和等服务。AWS Lambda -
AWS IoT Device Defender
用于远程管理和更新您的网关配置。 -
使用 AWS IoT 安全功能实现安全的设备身份验证和授权。有关更多信息,请参阅《AWS IoT 开发人员指南》中的AWS IoT 安全性。
-
根据设备数据创建自动警报和通知。有关更多信息,请参阅《AWS IoT 开发者指南》 AWS IoT中的规则。
注意
本教程引用了第三方服务、工具和文档。 AWS 不是任何第三方产品或服务的供应商或供应商,也无法保证来自外部提供商的信息的准确性。在部署之前,请评估并验证所有第三方工具。
主题
先决条件
要完成本教程,您需要:
-
一个 AWS 账户。如果没有,请参阅设置一个 AWS 账户。
-
具有管理员权限的 AWS Identity and Access Management (IAM) 用户。有关更多信息,请参阅 的身份和访问管理 AWS IoT SiteWise。
-
您的设备上Python安装的最新版本。
重要
本教程要求使用在载入数据教程中创建的资源。在继续学习本教程之前,必须先完成本教程。
步骤 1:创建 AWS IoT 策略
本教程使用您在收录数据教程中创建的 AWS IoT策略。此政策为您的设备设置安全规则,并在其中创建外部设备和传感器的数字表示形式 AWS IoT。该策略允许您的第三方设备 AWS IoT Core 使用 MQTT(消息队列遥测传输)向其发送数据。有关 MQTT 消息的更多信息,请参阅什么是 MQTT?
此策略使您的 AWS IoT 设备能够使用 MQTT 消息建立连接并与设备影子通信。为了与设备影子进行交互,你的 AWS IoT 东西会发布和接收有关以开头的主题的 MQTT 消息。$aws/things/
此策略包含一个称为 thing-name
/shadow/${iot:Connection.Thing.ThingName}
的事物策略变量。此变量用于替换每个主题中连接事物的名称。iot:Connect
语句限制了可以建立连接的设备,确保此事物策略变量只能替换以 SiteWiseTutorialDevice
开头的名称。
有关更多信息,请参阅AWS IoT 开发人员指南中的事物策略变量。
注意
此策略适用于名称以 SiteWiseTutorialDevice
开头的事物。要为您的事物使用不同的名称,您必须相应地更新策略。
步骤 2:创建和配置 AWS IoT 事物
在此步骤中,将您的边缘设备注册为 AWS IoT 事物,并生成与 Ed AWS IoT SiteWise ge 进行安全通信所需的设备证书和密钥。此过程为您的设备通过支持 MQTT 的 V3 网关发送第三方数据奠定了基础。
完成这些步骤后,您可以将设备安全地连接到 AWS IoT SiteWise Edge。您创建了一个本地目录来存储您为 MQTT 身份验证生成的证书和密钥。您的设备已在AWS IoT 控制台
第 3 步:配置支持 SiteWise Edge MQTT 的 V3 网关
在此步骤中,创建支持 AWS IoT SiteWise Edge MQTT 的 V3 网关,并将其配置为从 EMQX 代理接收数据。网关充当您的设备和之间的桥梁 AWS IoT。这样,您就可以在边缘本地处理数据,然后再将其发送到 AWS Cloud。此配置可减少带宽并减少云处理延迟。
步骤 4:安装 SiteWise Edge 网关软件
要安装网关软件,请使用您在上一步中下载的安装程序包。安装过程将配置必要的组件,启动 Greengrass 核心服务,并使用注册您的设备。 AWS IoT Greengrass安装完成后,请确认您的网关出现在AWS IoT SiteWise 控制台
有关详细说明,请参阅在本地设备上安装 AWS IoT SiteWise Edge 网关软件。
步骤 5:将 EMQX 代理配置为连接到外部应用程序
注意
在继续操作之前,您必须已部署支持 SiteWise Edge MQTT 的 V3 网关。网关提供了配置 EMQX 代理所需的必要基础设施和安全设置。如果没有主动网关部署,代理配置将失败。
配置 EMQX 代理以实现物联网设备和外部应用程序之间的安全通信。EMQX 代理充当中央消息传递中心,可在您的物联网设备、网关和应用程序之间路由数据。EMQX 代理可确保在您的网关和边缘连接的应用程序上可靠地传输消息。有关更多信息,请参阅 将外部应用程序连接到 EMQX 代理。
配置 EMQX 代理
-
设置 EMQX 代理。有关详细的配置说明,请按照更新 EMQX 部署配置进行身份验证中的步骤 1-14。
-
为风电场监控设置 MQTT 主题。有关 MQTT 要求的更多信息,请参阅MQTT 主题要求。
-
CPU 使用率:
SiteWiseTutorialDevice/cpu
-
内存使用情况:
SiteWiseTutorialDevice/memory
-
时间戳:
SiteWiseTutorialDevice/timestamp
-
-
检查您的配置并完成部署。
-
选择 “确认” 以保存您的设置。
-
选择 “下一步”,直到进入 “查看” 步骤。
-
在 检查 页上,选择 部署。
-
等待部署成功完成后再继续。
-
-
使用有效负载格式准备要发送到 EMQX 代理的消息。有关构造负载的更多信息,请参阅更新 EMQX 部署配置以进行身份验证。
-
实施以下安全措施:
-
使用传输层安全 (TLS) 加密(端口 8833)保护传输中的数据。有关更多信息,请参阅 配置 TLS 以实现与 Edge 上的 EMQX 代理的安全连接 AWS IoT SiteWise。
-
设置用户名和密码身份验证以验证设备身份。这种安全措施有助于保护您的数据,并确保只有经过授权的设备才能连接到您的系统。有关更多信息,请参阅 启用用户名和密码认证。
-
EMQX 允许您根据用户名、IP 地址或客户端 ID 等标识符创建授权规则。这对于控制对数据的访问非常有用。有关更多信息,请参阅 在 EMQX 中为 AWS IoT SiteWise Edge 设置授权规则。
成功部署后,您的 EMQX 代理已配置完毕,可以安全地连接外部应用程序。
注意
有效载荷格式必须遵循特定的结构, AWS IoT SiteWise Edge 才能正确处理和摄取您的数据。有关所需结构的更多信息,请参见JSON 负载结构。
示例:添加 CPU、内存和时间戳 JSON 有效负载
CPU 的 JSON
{ "propertyAlias": "SiteWiseTutorialDevice/cpu", "propertyValues": [ { "quality": "GOOD", "timestamp": { "offsetInNanos": 0, "timeInSeconds": 1753206441 }, "value": { "integerValue": 45.2 } } ] }
内存 JSON 有效
{ "propertyAlias": "SiteWiseTutorialDevice/memory", "propertyValues": [ { "quality": "GOOD", "timestamp": { "offsetInNanos": 0, "timeInSeconds": 1753206441 }, "value": { "integerValue": 67.8 } } ] }
时间戳 JSON 有效负载
{ "propertyAlias": "SiteWiseTutorialDevice/timestamp", "propertyValues": [ { "quality": "GOOD", "timestamp": { "offsetInNanos": 0, "timeInSeconds": 1753206441 }, "value": { "integerValue": 23.5 } } ] }
注意
每个 JSON 有效负载都必须作为单独的消息单独发布。不要将多个属性值合并成一条消息。将每个 CPU、内存和时间戳有效负载作为其自己不同的 MQTT 发布发送。
有效负载定义了物联网设备必须使用的 JSON 结构通过 EMQX 代理将设备数据发送到 SiteWise Edge。这种格式可确保 AWS IoT SiteWise 可以识别您的设备并处理传感器读数。实施这些配置和有效载荷结构后,您的风力发电场监控系统就可以收集和处理数据了。
第 6 步:使用 Mosquitto 发布数据
创建支持 MQTT 的 V3 网关后,将 Eclipse Mosquitto 配置为向 Edge 发送测试数据。 SiteWise Mosquitto 是一个开源 MQTT 消息代理,它使用 MQTT 协议在设备之间进行轻量级消息传递。Mosquitto 客户端允许您向 MQTT 主题发布消息,模拟来自风力发电场传感器的数据。使用 Mosquitto,无需任何第三方服务或其他设备即可模拟设备数据。有关更多信息,请参阅 Eclipse Mosquitto 官方网站上的文档
使用 Mosquitto CLI 客户端测试 SiteWise Edge EMQX 代理
-
在本地设备上安装 Mosquitto。有关详细说明,请参阅 Eclipse Mosquitto 官方网站上的 “下载
Mosquitto”。 -
有关连接外部应用程序以传输工业数据的更多信息,请参阅将外部应用程序连接到 EMQX 代理。
重要
确保您在此处配置的 MQTT 连接设置与 Mosquitto 发布命令中使用的设置相匹配。主机必须是 SiteWise Edge 网关的 IP 地址或主机名。该端口通常为 1883(如果使用 SSL/TLS,则为 8883)。
使用 Mosquitto 发布测试数据。打开命令行并运行以下命令:
示例:CPU 属性
mosquitto_pub -h localhost -p 1883 -t "SiteWiseTutorialDevice/cpu" -m '{ "propertyAlias": "SiteWiseTutorialDevice/cpu", "propertyValues": [ { "quality": "GOOD", "timestamp": { "timeInSeconds": 1753206441, "offsetInNanos": 0 }, "value": { "integerValue": 45.2 } } ] }'
示例:内存属性
mosquitto_pub -h localhost -p 1883 -t "SiteWiseTutorialDevice/memory" -m '{ "propertyAlias": "SiteWiseTutorialDevice/memory", "propertyValues": [ { "quality": "GOOD", "timestamp": { "timeInSeconds": 1753206441, "offsetInNanos": 0 }, "value": { "integerValue": 72.1 } } ] }'
示例:时间戳属性
mosquitto_pub -h localhost -p 1883 -t "SiteWiseTutorialDevice/timestamp" -m '{ "propertyAlias": "SiteWiseTutorialDevice/timestamp", "propertyValues": [ { "quality": "GOOD", "timestamp": { "timeInSeconds": 1753206441, "offsetInNanos": 0 }, "value": { "integerValue": 1683000000 } } ] }'
注意
使用作localhost
为 EMQX 代理地址仅用于演示目的。在生产环境中或从外部设备连接时,必须使用适合特定部署配置的 EMQX 代理地址。有关详细的连接说明,请参阅将应用程序连接到 Edge 上的 EMQX 代理 AWS IoT SiteWise。
步骤 7:指定目的地
在此步骤中,指定目标以确定源数据的定向位置。 AWS IoT SiteWise 使用 Amazon S3 缓冲区作为目的地。此选项提供了一种可扩展的方式来存储和处理您的物联网数据。
步骤 8:指定路径过滤器
在此步骤中,配置路径过滤器以指定要监控哪些 MQTT 主题以获取您的风力发电场设备数据。
路径过滤器遵循 MQTT 主题通配符规范,该规范支持两个特殊字符:
-
+
— 此符号表示单级通配符,该通配符匹配单个级别上的任何字符串。 -
#
— 此符号表示多级通配符,它与主题层次结构中的任意数量的级别相匹配。
注意
有关其他路径过滤器的更多信息,请参阅路径过滤器名称中的特殊字符。
步骤 9:配置您的 AWS 物联网资源
在此步骤中,创建必要的 AWS IoT SiteWise 资产模型和资产来代表您的模拟第三方设备,并通过边缘网关启用数据摄取。
在开始此步骤之前,您应该已经完成了载入数据教程中的步骤 3 到 8。这些步骤为通过支持 MQTT 的 V3 网关集成第三方数据奠定了基础组件。您还可以设置规则来定义传感器数据如何流入 AWS IoT SiteWise,并运行模拟工业风电场数据的设备客户端脚本。
验证您的 AWS IoT 资源配置
-
使用以下 AWS CLI 命令验证您创建并正确配置了 SiteWise 教程设备模型和 SiteWise 教程设备队列模型:
aws iotsitewise describe-asset-model --asset-model-id
your-device-model-id
使用以下 AWS CLI 命令检索您的资产模型的 ID:
aws iotsitewise list-asset-models
-
使用以下 AWS CLI 命令验证您创建并正确配置了 SiteWise 教程设备 1 资产和 SiteWise 教程设备舰队 1 资产:
aws iotsitewise describe-asset --asset-id
your-asset-id
使用以下 AWS CLI 命令检索您的资产 ID:
aws iotsitewise list-assets
第 10 步:可视化您的数据
设置 Grafana 的开源版本,以可视化您的风电场设备数据。Grafana 是一个可视化平台,可显示您的实时运营数据。这些仪表板可帮助您跟踪运营效率并确定整个基础架构的维护需求。有关集成的更多信息,请参阅AWS IoT SiteWise 与 Grafana 集成。
要设置 Grafana
-
有关下载和安装最新版本 Grafana 的说明,请参阅 Grafana 官方网站上的 “安装 Graf
ana”。 -
有关特定于您的操作系统的详细配置说明,请参阅 Grafana 官方网站上的 “配置
Grafana”。 -
配置 AWS IoT SiteWise 数据源。这允许你在 Grafana 服务器上设置 AWS IoT SiteWise 插件。有关如何使用该插件的详细说明,请参阅《亚马逊托管 Grafana 用户指南》中的 “连接到 AWS IoT SiteWise 数据源”。
重要
确保您拥有最新版本的 Grafana,以便与 AWS IoT SiteWise 数据源兼容。
完成这些步骤后,您可以构建和自定义 Grafana 仪表板,以显示风电场的运营指标。这使您能够实时跟踪和分析边缘风电场的性能。
注意
虽然本教程使用开源版本的 Grafana,但 AWS 也为生产环境提供了亚马逊托管 Grafana。Amazon Managed Grafana 是一项完全托管的服务,无需设置、配置和维护您自己的 Grafana 服务器。当您准备好扩展解决方案时,可以考虑升级到亚马逊托管 Grafana。要详细了解 Amazon Managed Grafana 以及如何使用开源工具处理和可视化数据,请参阅以下内容:
-
什么是亚马逊托管 Grafana? 在《亚马逊托管 Grafana 用户指南》中
您已完成本教程。在此过程中,您将 AWS IoT SiteWise Edge 配置为使用支持 MQTT 的 V3 网关集成第三方设备数据。此设置允许您在边缘收集、处理和可视化工业设备数据,从而减少延迟和运营成本。通过使用风电场演示,您可以通过支持 MQTT 的 V3 网关收集和处理运行指标,例如 CPU 和内存使用数据。
要增强您的物联网解决方案,可以考虑在《亚马逊 QuickSight 用户指南》 QuickSight中探索高级功能使用 Lookout for Equipment 检测异常,例如利用异常检测,或者与 Amazon 等其他 AWS 服务集成,以进行高级分析。
步骤 11:完成教程后清理资源
完成本关于将数据集成到 AWS IoT SiteWise Edge 的教程后,请清理资源以免产生额外费用。
要删除中的分层资产 AWS IoT SiteWise
-
导航至 AWS IoT SiteWise 控制台
。 -
在左侧导航窗格中,选择 资产。
-
在中删除资源时 AWS IoT SiteWise,必须先取消与它们的关联。
请完成以下步骤以取消设备资产与设备队列资产之间的关联:
-
选择您的设备队列资产 (SiteWise Tutorial Device Fleet 1)。
-
选择编辑。
-
在 与此资产关联的资产 下,针对与此设备队列资产关联的每个设备资产,选择 取消关联。
-
选择保存。
注意
设备资产现在不再按层次结构进行组织。
-
-
选择您的设备资产 (SiteWise Tutorial Device 1)。
-
选择删除。
-
在确认对话框中,输入
Delete
,然后选择删除。 -
对每个设备资产和设备实例集资产 (SiteWise Tutorial Device Fleet 1) 重复步骤 4 到 6。
要删除中的分层资产模型 AWS IoT SiteWise
-
导航至 AWS IoT SiteWise 控制台
。 -
删除您的设备和设备群组资产。
-
在左侧导航窗格中,选择 模型。
-
选择您的设备队列资产模型 (SiteWise Tutorial Device Fleet Model)。如果您拥有从某个模型创建的资产,则无法删除该模型。
删除分层资产模型时,首先删除父资产模型。
-
选择删除。
-
在确认对话框中,输入
Delete
,然后选择删除。 -
对设备资产模型 (SiteWise Tutorial Device Model) 重复步骤 4 到 6。
禁用或删除中的规则 AWS IoT Core
-
导航至 AWS IoT 控制台
。 -
在左侧导航窗格中,选择消息路由,然后选择规则。
-
选择您的规则,然后选择删除。
-
在确认对话框中,键入规则名称,然后选择删除。
删除 Amazon S3 存储桶
-
导航到 Amazon S3 控制台
。 -
在左侧导航窗格中,选择通用存储桶。
-
在存储分区列表中,选择您创建的存储分区旁边的选项按钮,然后选择页面顶部的清空。
-
在确认对话框中,确认删除,然后选择 Empt y。
-
存储桶为空后,选择 Delete 以删除该存储桶。
-
在确认对话框中,输入存储桶的名称以确认删除。
-
选择删除存储桶。
删除 E SiteWise dge 网关
-
导航至 AWS IoT SiteWise 控制台
。 -
在左侧导航窗格中,选择 Edge 网关。
-
在网关下,选择您为本教程创建的网关。例如
SiteWise Tutorial Device Gateway
。 -
选择删除。
-
要确认要删除网关,请在确认对话框
Delete
中键入,然后在出现的窗口中选择删除。
删除你的物联网东西
-
导航至 AWS IoT 控制台
。 -
在左侧导航窗格中,选择管理,然后选择事物。
-
选择您为本教程创建的 IoT 事物。例如
SiteWiseTutorialDevice1
。 -
选择删除。
-
在确认对话框中,输入事物的名称,然后选择删除。
卸载 AWS IoT Greengrass Core
从本地设备上卸载 AWS IoT Greengrass Core 软件。有关详细说明,请参阅《AWS IoT Greengrass 开发人员指南,版本 2》中的卸载 AWS IoT Greengrass 核心软件。
重要
卸载 Greengrass 会删除所有本地配置和数据。在继续操作之前,请确保您已备份所有重要信息。
(可选)删除第三方资源
完成本教程后,请考虑关闭您创建的所有外部资源。这有助于防止第三方提供商收取费用。
其他资源
有关更多信息,请参阅以下资源: