IoT SiteWise
IoT SiteWise (iotSiteWise) 操作可将 MQTT 消息中的数据发送至 Amazon IoT SiteWise 中的资产属性。
您可以按照教程执行操作,该教程向您说明如何从 Amazon IoT 事物中提取数据。有关更多信息,请参阅 Amazon IoT SiteWise 用户指南中的从 Amazon IoT 中将数据摄取到 Amazon IoT SiteWise。
要求
此规则操作具有以下要求:
-
Amazon IoT 可以承担以执行
iotsitewise:BatchPutAssetPropertyValue操作的 IAM 角色。有关更多信息,请参阅向 Amazon IoT 规则授予所需的访问权限。您可以将下列示例信任策略附加到要代入的角色。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*" } ] }为了提高安全性,您可以在
Condition属性中指定 Amazon IoT SiteWise 资产层次结构路径。以下示例是指定资产层次结构路径的信任策略。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*", "Condition": { "StringLike": { "iotsitewise:assetHierarchyPath": [ "/root node asset ID", "/root node asset ID/*" ] } } } ] } -
在使用此操作将数据发送到 Amazon IoT SiteWise 时,数据必须满足
BatchPutAssetPropertyValue操作的要求。有关更多信息,请参阅 Amazon IoT SiteWise API 参考中的 BatchPutAssetPropertyValue。
参数
使用此操作创建 Amazon IoT 规则时,您必须指定以下信息:
putAssetPropertyValueEntries-
包含以下信息的资产属性值条目的列表:
propertyAlias-
(可选)与您的资产属性关联的属性别名。您必须指定
propertyAlias或同时指定assetId和propertyId。有关更多信息,请参阅 Amazon IoT SiteWise 用户指南中的将工业数据流映射到资产属性。支持替换模板:是
assetId-
(可选)Amazon IoT SiteWise 资产的 ID。您必须指定
propertyAlias或同时指定assetId和propertyId。支持替换模板:是
propertyId-
(可选)资产属性的 ID。您必须指定
propertyAlias或同时指定assetId和propertyId。支持替换模板:是
entryId-
(可选)此条目的唯一标识符。您可以定义
entryId,以便在出现故障时更好地跟踪哪条消息导致错误。默认为新 UUID。支持替换模板:是
propertyValues-
要插入的属性值的列表,均包含以下格式的时间戳、质量和值 (TQV):
timestamp-
包含以下信息的时间戳结构:
timeInSeconds-
包含用 Unix 纪元时间表示的时间(以秒为单位)的字符串。如果您的消息负载没有时间戳,则可使用 timestamp(),它将返回当前时间(以毫秒为单位)。要将该时间转换为秒,可以使用以下替换模板:
${floor(timestamp() / 1E3)}。支持替换模板:是
offsetInNanos-
(可选)包含与以秒为单位的时间的纳秒时间偏移量的字符串。如果您的消息负载没有时间戳,则可使用 timestamp(),它将返回当前时间(以毫秒为单位)。要计算与该时间的纳秒偏移量,可以使用以下替换模板:
${(timestamp() % 1E3) * 1E6}。支持替换模板:是
对于 Unix 纪元时间,Amazon IoT SiteWise 仅接受时间戳在过去 7 天内和将来 5 分钟内的条目。
quality-
(可选)描述值的质量的字符串。有效值:
GOOD、BAD、UNCERTAIN。支持替换模板:是
value-
包含以下值字段之一的值结构,具体取决于资产属性的数据类型:
roleArn-
授予 Amazon IoT 权限以将资产属性值发送到 Amazon IoT SiteWise 的 IAM 角色的 ARN。有关更多信息,请参阅要求。
支持替换模板:否
示例
以下 JSON 示例定义了在 Amazon IoT 规则中的基础 IoT SiteWise 操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotSiteWise": { "putAssetPropertyValueEntries": [ { "propertyAlias": "/some/property/alias", "propertyValues": [ { "timestamp": { "timeInSeconds": "${my.payload.timeInSeconds}" }, "value": { "integerValue": "${my.payload.value}" } } ] } ], "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise" } } ] } }
下面的 JSON 示例介绍了如何在 Amazon IoT 规则中定义 IoT SiteWise 操作。此示例将主题用作属性别名和 timestamp() 函数。例如,如果您将数据发布到 /company/windfarm/3/turbine/7/rpm,则此操作会将数据发送到具有与您指定的主题相同的属性别名的资产属性。
{ "topicRulePayload": { "sql": "SELECT * FROM '/company/windfarm/+/turbine/+/+'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotSiteWise": { "putAssetPropertyValueEntries": [ { "propertyAlias": "${topic()}", "propertyValues": [ { "timestamp": { "timeInSeconds": "${floor(timestamp() / 1E3)}", "offsetInNanos": "${(timestamp() % 1E3) * 1E6}" }, "value": { "doubleValue": "${my.payload.value}" } } ] } ], "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise" } } ] } }
另请参阅
-
Amazon IoT SiteWise 用户指南 中的什么是 Amazon IoT SiteWise?
-
Amazon IoT SiteWise 用户指南中的使用 Amazon IoT Core 规则摄取数据
-
Amazon IoT SiteWise 用户指南中的将数据从 Amazon IoT 摄取到 Amazon IoT SiteWise
-
Amazon IoT SiteWise 用户指南中的为 Amazon IoT SiteWise 规则操作进行故障排除