查询资产属性通知消息 - AWS IoT SiteWise

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

查询资产属性通知消息

要查询资产属性通知,请创建由 SQL 语句组成的 AWS IoT Core 规则。

AWS IoT SiteWise 按以下格式向 AWS IoT Core 发布资产属性数据更新。

{ "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 语句中使用复杂的嵌套对象查询。有关更多信息,请参阅 AWS 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 个值。如果需要包含其余值,您必须设置更复杂的解决方案,以将资产属性值输出到其他服务。例如,您可以设置一条规则,其 AWS Lambda 操作是将数组中的每个值重新发布到另一个主题,然后设置另一个规则来查询该主题并将每个值发布到所需的规则操作。