将属性值更新发布到 Amazon DynamoDB - AWS IoT SiteWise

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

将属性值更新发布到 Amazon DynamoDB

本教程介绍了一种使用 Amazon Dynamo DB 存储数据的便捷方法,无需重复查询 API 即可更轻松地访问历史资产数据。 AWS IoT SiteWise 完成本教程后,您可以创建自定义软件以使用资产数据,例如整个风电场的实时风速和风向图。如果您希望在未实施自定义软件解决方案的情况下监控和可视化数据,请参阅使用监控数据 AWS IoT SiteWise Monitor

在本教程中,您将在提供风力发电场示例数据集的 AWS IoT SiteWise 演示基础上进行构建。您可以配置从风电场演示的属性值更新,通过 AWS IoT Core 规则将数据发送到您创建的 DynamoDB 表。启用属性值更新后, AWS IoT SiteWise 会以 MQTT 消息的 AWS IoT Core 形式将您的数据发送到。然后,根据这些消息的内容定义执行操作(例如 DynamoDB 操作)的 AWS IoT 核心规则。有关更多信息,请参阅 与其他 AWS 服务互动

先决条件

要完成本教程,您需要:

步骤 1:配置 AWS IoT SiteWise 以发布属性值更新

在该过程中,您在演示涡轮机资产的 Wind Speed 属性上启用属性值通知。启用属性值通知后,在 MQTT 消息中将每个值更新 AWS IoT SiteWise 发布到 AWS IoT Core。

在资产属性上启用属性值更新通知
  1. 登录 AWS IoT SiteWise 控制台

  2. 查看支持的AWS IoT SiteWise 终端节点和配额,必要时切换 AWS 区域。 AWS IoT SiteWise 切换到你正在运行 AWS IoT SiteWise 演示的区域。

  3. 在左侧导航窗格中,选择 资产

  4. 选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。

  5. 选择一个演示涡轮机,然后选择 编辑

  6. 选择 测量值

  7. Wind Speed酒店的 MQTT 通知状态更新为 “已激活”。

  8. 在页面底部选择 Save (保存)

  9. 对于每个演示涡轮机资产,重复步骤 5 至 7。

  10. 选择演示涡轮机(例如,Demo Turbine Asset 1)。

  11. 选择 测量值

  12. 选择 Wind Speed 属性旁边的复制图标,以将通知主题复制到剪贴板。保存通知主题以在本教程后面使用。您只需记录一个涡轮机中的通知主题。

    通知主题应类似于以下示例。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE

步骤 2:在 AWS IoT Core 中创建规则

在此步骤中,在 AWS IoT Core 中创建一条规则,用于解析属性值通知消息并将数据插入到 Amazon DynamoDB 表中。 AWS IoT 核心规则解析 MQTT 消息,并根据每条消息的内容和主题执行操作。之后,创建带有 DynamoDB 操作的规则,将数据插入到 DynamoDB 表(这是您在本教程中创建的表)中。

使用 DynamoDB 操作创建规则
  1. 导航至 AWS IoT 控制台

  2. 在左侧导航窗格中,选择消息路由,然后选择规则

  3. 选择创建规则

  4. “指定规则属性” 下,输入规则的名称和描述。

  5. 查找您在本教程前面保存的通知主题。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE

    将主题中的资产 ID(assets/ 后的 ID)替换为 +。这将为所有演示风力涡轮机资产选择风速属性。+ 主题筛选器接受主题中的单个级别的所有节点。您的主题应类似于以下示例。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
  6. 输入以下规则查询语句。将 FROM 部分中的主题替换为您的通知主题。

    SELECT payload.assetId AS asset, (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed, timestamp() AS timestamp FROM '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' WHERE type = 'PropertyValueUpdate'
  7. 在 “规则操作” 下,导航至 “操作 1”

  8. “选择操作” 页面上,选择 Dynamo DBv2。这会将消息拆分为 DynamoDB 表的多列

  9. 表名下,选择创建新表。您可以创建一个 Amazon DynamoDB 表来接收来自规则操作的风速数据。

  10. DynamoDB 控制台的名下,输入您的表的名称。

  11. 对于分区键,请执行以下操作:

    1. 输入 timestamp 以作为分区键。

    2. 选择 数字 类型。

    3. 选中 添加排序键 复选框。

    4. 输入 asset 以作为排序键,并保留默认排序键类型 字符串

  12. 选择创建表

  13. 返回到具有 配置操作 页面的选项卡。

  14. 附加规则操作页面上,刷新表名列表,然后选择您在上一步中创建的新 DynamoDB 表。

步骤 3:配置 DynamoDB 规则操作

在此步骤中,配置 Amazon DynamoDB 规则操作,将属性值更新中的数据插入到新的 DynamoDB 表中。

配置 DynamoDB 规则操作
  1. 选择创建角色以创建一个 IAM 角色,该角色向 AWS IoT 核心授予执行规则操作的访问权限。

  2. 输入角色名称,例如WindSpeedDataRole。选择创建角色

  3. 选择下一步

  4. 选择页面底部的创建以完成规则的创建。

    将开始在 DynamoDB 表中显示您的演示资产数据。

步骤 4:在 DynamoDB 中浏览数据

在此步骤中,在您的新 Amazon DynamoDB 表中浏览演示资产的风速数据。

在 DynamoDB 中浏览资产数据
  1. 返回到打开了 DynamoDB 表的选项卡。

  2. 在之前创建的表中,选择 “浏览表格项目” 选项卡以查看表中的数据。如果您没有看到表中的行,请刷新页面。如果在几分钟后没有显示行,请参阅对规则进行故障排除(DynamoDB)

  3. 在表的一行中,选择编辑图标以展开数据。

  4. 选择 windspeed 结构旁边的箭头,以展开风速数据点列表。每个列表都反映了风电场演示发送到 AWS IoT SiteWise 的一批风速数据点。如果您设置规则操作以供自己使用,则可能需要使用不同的数据格式。有关更多信息,请参阅 在中查询资产属性通知 AWS IoT SiteWise

完成本教程后,禁用或删除规则并删除 DynamoDB 表,避免产生额外费用。要清理资源,请参阅第 5 步:完成教程后清理资源

第 5 步:完成教程后清理资源

完成本教程后,清理资源以避免产生额外费用。您的演示风电场资产将在您创建演示时选择的时段结束时间删除。您也可以手动删除演示。

AWS IoT SiteWise 演示将在一周后自行删除,或者如果您从 AWS CloudFormation 控制台创建演示堆栈,则该演示将在您选择的天数后自行删除。如果您使用完演示资源,则可以在之前删除该演示。如果演示创建失败,您也可以删除演示。使用以下步骤手动删除演示。

(可选)删除演 AWS IoT SiteWise 示

  1. 导航至 AWS CloudFormation 控制台

  2. TSiteWiseDemoAssets从堆栈列表中选择 Io

  3. 选择删除

    当您删除堆栈时,为演示创建的所有资源都将被删除。

  4. 在确认对话框中,选择 删除堆栈

    删除堆栈约需 15 分钟时间。如果演示无法删除,请再次选择右上角的 删除。如果演示无法再次删除,请按照 AWS CloudFormation 控制台中的步骤跳过删除失败的资源,然后重试。

有关更多信息,请参阅 删除演 AWS IoT SiteWise 示

使用以下过程禁用属性值更新通知(如果您没有删除演示)、禁用或删除您的 AWS IoT 规则,以及删除您的 DynamoDB 表。

禁用资产属性上的属性值更新通知
  1. 导航至 AWS IoT SiteWise 控制台

  2. 在左侧导航窗格中,选择 资产

  3. 选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。

  4. 选择一个演示涡轮机,然后选择 编辑

  5. Wind Speed酒店的通知状态更新为 “非活动”。

  6. 选择页面底部的 保存资产

  7. 对于每个演示涡轮机资产,重复步骤 4 至 6。

禁用或删除中的规则 AWS IoT Core
  1. 导航至 AWS IoT 控制台

  2. 在左侧导航窗格中,选择消息路由,然后选择规则

  3. 选择您的规则,然后选择删除

  4. 在确认对话框中,键入规则名称,然后选择删除。

删除 DynamoDB 表
  1. 导航到 DynamoDB 控制台

  2. 在左侧导航窗格中,选择

  3. 例如,选择您之前创建的表WindSpeedData

  4. 选择删除

  5. 在确认对话框中confirm,输入删除表。