本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理资产财产通知
您可以启用属性通知以将资产数据更新发布到Amazon IoT Core,然后对您的数据运行查询。通过资产财产通知,Amazon IoT SiteWise提供了Amazon CloudFormation你可以用来导出的模板Amazon IoT SiteWise数据到 Amazon S3。
启用资产属性通知
默认情况下,Amazon IoT SiteWise 不发布属性值更新。您可以使用 Amazon IoT SiteWise 控制台或 API 为每个资产属性启用通知。
启用资产属性通知(控制台)
您可以使用 Amazon IoT SiteWise 控制台为资产属性启用通知。
启用或禁用资产属性的通知(控制台)
启用资产属性通知 (CLI)
您可以使用 Amazon Command Line Interface (Amazon CLI) 启用或禁用资产属性的通知。
您必须知道资产的 assetId
和属性的 propertyId
才能完成此过程。如果你创建了一个资产,但不知道它assetId
,使用ListAssets操作可查看特定模型的所有资产。然后,使用DescribeAsset操作以查看您的资产的属性,包括财产 ID。
使用UpdateAssetProperty用于启用或禁用资产属性的通知的操作。指定以下参数:
-
assetId
— 资产的 ID。 -
propertyId
— 资产资产的 ID。 -
propertyNotificationState
— 属性值通知状态:ENABLED
要么DISABLED
. -
propertyAlias
— 属性的别名。在更新通知状态时指定属性的现有别名。如果省略此参数,则将删除属性的现有别名。
启用或禁用资产属性的通知 (CLI)
-
运行以下命令以检索资产属性的别名。将
asset-id
替换为资产的 ID,将property-id
替换为属性的 ID。aws iotsitewise describe-asset-property \ --asset-id
asset-id
\ --property-idproperty-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": {} } } } -
运行以下命令以启用资产属性的通知。使用上一命令响应中的属性别名替换
property-alias
,或者省略--property-alias
以更新不带别名的属性。aws iotsitewise update-asset-property \ --asset-id
asset-id
\ --property-idproperty-id
\ --property-notification-state ENABLED \ --property-aliasproperty-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 操作的规则,以将数组中的每个值重新发布到另一个主题,并设置另一个规则以查询该主题,并将每个值发布到所需的规则操作。