本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoT SiteWise (iotSiteWise
) 操作将MQTT消息中的数据发送到中的资产属性 AWS IoT SiteWise。
你可以遵循一个教程,向你展示如何从 AWS IoT 事物中提取数据。有关更多信息,请参阅《用户指南》中的 “ AWS IoT SiteWise 从 AWS IoT 事物中提取数据” 教程或 “使用 AWS IoT 核心规则提取数据” 部分。AWS IoT SiteWise
要求
此规则操作具有以下要求:
-
AWS IoT 可以IAM担任执行
iotsitewise:BatchPutAssetPropertyValue
操作的角色。有关更多信息,请参阅 授予 AWS IoT 规则所需的访问权限。您可以将下列示例信任策略附加到要代入的角色。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*" } ] }
为了提高安全性,您可以在
Condition
属性中指定 AWS 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
/*" ] } } } ] } -
当您通过此操作向发送数据时,您的数据必须满足
BatchPutAssetPropertyValue
操作的要求。 AWS IoT SiteWise 有关更多信息,请参阅 AWS IoT SiteWise API 参考中的 BatchPutAssetPropertyValue。
参数
使用此操作创建 AWS IoT 规则时,必须指定以下信息:
putAssetPropertyValueEntries
-
包含以下信息的资产属性值条目的列表:
propertyAlias
-
(可选)与您的资产属性关联的属性别名。指定
propertyAlias
或同时指定assetId
和propertyId
。有关更多信息,请参阅 AWS IoT SiteWise 用户指南中的将工业数据流映射到资产属性。支持替换模板:是
assetId
-
(可选) AWS 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 纪元时间,仅 AWS IoT SiteWise 接受时间戳最长为过去 7 天、将来最多 5 分钟的条目。
quality
-
(可选)描述值的质量的字符串。有效值:
GOOD
、BAD
、UNCERTAIN
。支持替换模板:是
value
-
包含以下值字段之一的值结构,具体取决于资产属性的数据类型:
roleArn
-
授予向ARN其发送资产属性值的 AWS IoT 权限的IAM角色 AWS IoT SiteWise。有关更多信息,请参阅 要求。
支持替换模板:否
示例
以下JSON示例在 AWS 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示例在 AWS 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"
}
}
]
}
}
另请参阅
-
AWS IoT SiteWise 用户指南 中的什么是 AWS IoT SiteWise?
-
《AWS IoT SiteWise 用户指南》中的 AWS IoT SiteWise 规则操作疑难解答