本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT SiteWise
AWS IoT SiteWise (iotSiteWise
) 動作會將資料從MQTT訊息傳送至其中的資產屬性 AWS IoT SiteWise。
您可以遵循教學課程,示範如何從 AWS IoT 物件擷取資料。如需詳細資訊,請參閱AWS IoT SiteWise 《 使用者指南》中的從 AWS IoT 實物教學課程擷取資料至 AWS IoT SiteWise ,或使用 AWS IoT 核心規則擷取資料一節。
要求
此規則動作具有下列需求:
-
AWS IoT 可以擔任以執行
iotsitewise:BatchPutAssetPropertyValue
操作IAM的角色。如需詳細資訊,請參閱授予 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
/*" ] } } } ] } -
當您 AWS IoT SiteWise 使用此動作將資料傳送至 時,您的資料必須符合
BatchPutAssetPropertyValue
操作的要求。如需詳細資訊,請參閱 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 epoch 時間中時間 (以秒為單位) 的字串。如果您的消息承載沒有時間戳記,可以使用 timestamp(),返回目前時間 (以毫秒為單位)。若要將該時間轉換為以秒為單位,您可以使用下列替代範本:
${floor(timestamp() / 1E3)}
。支援替代範本:是
offsetInNanos
-
(選用) 包含從該時間 (以秒為單位) 開始的奈秒時間位移的字串。如果您的消息承載沒有時間戳記,可以使用 timestamp(),返回目前時間 (以毫秒為單位)。若要計算從該時間開始的奈秒位移,可以使用下列替代範本:
${(timestamp() % 1E3) * 1E6}
。支援替代範本:是
關於 Unix epoch 時間, 只 AWS IoT SiteWise 接受過去最多 7 天內最多 5 分鐘的時間戳記項目。
quality
-
(選用) 說明數值品質的字串。有效值:
GOOD
、BAD
、UNCERTAIN
。支援替代範本:是
value
-
包含下列其中一個值欄位的值結構,視資產屬性的資料類型而定:
roleArn
-
IAM 授予 AWS IoT 許可將資產屬性值傳送至ARN其中的角色的 AWS IoT SiteWise。如需詳細資訊,請參閱要求。
支援替代範本:否
範例
下列JSON範例定義 規則中的基本 IoT SiteWise AWS IoT 動作。
{ "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 規則中的 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 Core 規則擷取資料
-
AWS IoT SiteWise 使用者指南中的AWS IoT SiteWise 從 AWS IoT 物件擷取資料至
-
AWS IoT SiteWise 使用者指南中的AWS IoT SiteWise 規則動作故障診斷