处理资产财产通知 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

处理资产财产通知

您可以启用属性通知以将资产数据更新发布到Amazon IoT Core,然后对您的数据运行查询。通过资产财产通知,Amazon IoT SiteWise提供了Amazon CloudFormation你可以用来导出的模板Amazon IoT SiteWise数据到 Amazon S3。

启用资产属性通知

默认情况下,Amazon IoT SiteWise 不发布属性值更新。您可以使用 Amazon IoT SiteWise 控制台或 API 为每个资产属性启用通知。

启用资产属性通知(控制台)

您可以使用 Amazon IoT SiteWise 控制台为资产属性启用通知。

启用或禁用资产属性的通知(控制台)
  1. 导航到 Amazon IoT SiteWise 控制台

  2. 在导航窗格中,选择 Assets (资产)

  3. 选择资产以启用属性的通知。

    提示

    您可以选择箭头图标来展开资产层次结构以查找资产。

    
        Amazon IoT SiteWise“资产” 页面屏幕截图,其中突出显示了资产层次结构。
  4. 选择 Edit(编辑)。

  5. 对于资产属性的 Notification status (通知状态),选择 ENABLED

    
                Amazon IoT SiteWise突出显示 “通知状态” 的 “编辑资产” 页面屏幕截图。

    您还可以选择 DISABLED 以禁用资产属性的通知。

  6. 选择 Save(保存)。

启用资产属性通知 (CLI)

您可以使用 Amazon Command Line Interface (Amazon CLI) 启用或禁用资产属性的通知。

您必须知道资产的 assetId 和属性的 propertyId 才能完成此过程。如果你创建了一个资产,但不知道它assetId,使用ListAssets操作可查看特定模型的所有资产。然后,使用DescribeAsset操作以查看您的资产的属性,包括财产 ID。

使用UpdateAssetProperty用于启用或禁用资产属性的通知的操作。指定以下参数:

  • assetId— 资产的 ID。

  • propertyId— 资产资产的 ID。

  • propertyNotificationState— 属性值通知状态:ENABLED要么DISABLED.

  • propertyAlias— 属性的别名。在更新通知状态时指定属性的现有别名。如果省略此参数,则将删除属性的现有别名。

启用或禁用资产属性的通知 (CLI)
  1. 运行以下命令以检索资产属性的别名。将 asset-id 替换为资产的 ID,将 property-id 替换为属性的 ID。

    aws iotsitewise describe-asset-property \ --asset-id asset-id \ --property-id property-id

    此操作将按以下格式返回包含资产属性的详细信息的响应。属性别名位于 JSON 对象中的 assetProperty.alias 中。

    { "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE", "assetName": "Wind Turbine 7", "assetModelId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "assetProperty": { "id": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE", "name": "Wind Speed", "alias": "/company/windfarm/3/turbine/7/windspeed", "notification": { "topic": "$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE", "state": "DISABLED" }, "dataType": "DOUBLE", "unit": "m/s", "type": { "measurement": {} } } }
  2. 运行以下命令以启用资产属性的通知。使用上一命令响应中的属性别名替换 property-alias,或者省略 --property-alias 以更新不带别名的属性。

    aws iotsitewise update-asset-property \ --asset-id asset-id \ --property-id property-id \ --property-notification-state ENABLED \ --property-alias property-alias

    您还可以传递 --property-notification-state DISABLED 以禁用资产属性的通知。

查询资产属性通知消息

Amazon IoT SiteWise将资产属性数据更新发布到Amazon IoT内核采用以下格式。

{ "type": "PropertyValueUpdate", "payload": { "assetId": "String", "propertyId": "String", "values": [ { "timestamp": { "timeInSeconds": Number, "offsetInNanos": Number }, "quality": "String", "value": { "booleanValue": Boolean, "doubleValue": Number, "integerValue": Number, "stringValue": "String" } } ] } }

中的每个结构values列表是 timestamp-quality-value (TQV) 结构。

  • 这些区域有:timestamp包含当前 Unix 纪元时间(以秒为单位,偏移量为纳秒)。

  • 这些区域有:quality包含以下表示数据点质量的字符串之一:

    • GOOD— 数据不受任何问题的影响。

    • BAD— 数据受到传感器故障等问题的影响。

    • UNCERTAIN— 数据受到传感器不准确等问题的影响。

  • 这些区域有:value根据属性的类型,包含以下字段之一:

    • booleanValue

    • doubleValue

    • integerValue

    • stringValue

要解析 values 数组中的值,您需要在规则的 SQL 语句中使用复杂的嵌套对象查询。有关更多信息,请参阅嵌套对象查询在里面Amazon IoT开发人员指南,或者看看将属性值更新发布到 Amazon DynamoDB教程提供了解析资产属性通知消息的具体示例。

例 提取值数组的示例查询

以下语句演示如何针对具有特定 double 类型属性的所有资产查询该属性的已更新属性值的数组。

SELECT (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed FROM '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' WHERE type = 'PropertyValueUpdate'

上一个规则查询语句采用以下格式输出数据。

{ "windspeed": [ 26.32020195042838, 26.282584572975477, 26.352566977372508, 26.283084346171442, 26.571883739599322, 26.60684140743005, 26.628738636715045, 26.273486932802125, 26.436379105473964, 26.600590095377303 ] }
例 提取单个值的示例查询

以下语句演示如何针对具有特定 double 类型属性的所有资产查询该属性的属性值数组中的第一个值。

SELECT get((SELECT VALUE (value.doubleValue) FROM payload.values), 0) AS windspeed FROM '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' WHERE type = 'PropertyValueUpdate'

上一个规则查询语句采用以下格式输出数据。

{ "windspeed": 26.32020195042838 }
重要

该规则查询语句忽略每个批次中的第一个值更新以外的更新。每个批次最多可以包含 10 个值。如果需要包含其余值,您必须设置更复杂的解决方案,以将资产属性值输出到其他服务。例如,您可以设置一个具有 Amazon Lambda 操作的规则,以将数组中的每个值重新发布到另一个主题,并设置另一个规则以查询该主题,并将每个值发布到所需的规则操作。