本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理资产财产通知
您可以启用属性通知,将资产数据更新发布到Amazon IoT Core,然后对您的数据运行查询。通过资产财产通知,Amazon IoT SiteWise提供了Amazon CloudFormation你可以用来导出的模板Amazon IoT SiteWise数据传输到亚马逊 S3。
注意
资产数据已发送至Amazon IoT Core每当被收到Amazon IoT SiteWise,无论值是否已更改。
启用资产属性通知
默认情况下,Amazon IoT SiteWise 不发布属性值更新。您可以使用 Amazon IoT SiteWise 控制台或 API 为每个资产属性启用通知。
启用资产属性通知(控制台)
您可以使用 Amazon IoT SiteWise 控制台为资产属性启用通知。
启用或禁用资产属性的通知(控制台)
-
在导航窗格中,选择 Assets (资产)。
-
选择资产以启用属性的通知。
提示
您可以选择箭头图标来展开资产层次结构以查找资产。
-
选择编辑。
-
对于资产属性的 Notification status (通知状态),选择 ENABLED。
您还可以选择 DISABLED 以禁用资产属性的通知。
-
选择保存。
启用资产属性通知 (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 Core由 SQL 语句组成的规则。
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 操作的规则,以将数组中的每个值重新发布到另一个主题,并设置另一个规则以查询该主题,并将每个值发布到所需的规则操作。