查詢資產屬性通知訊息 - AWS IoT SiteWise

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢資產屬性通知訊息

若要查詢資產屬性通知,請建立由SQL陳述式組成的 AWS IoT Core 規則。

AWS IoT SiteWise 以下列格式將資產性質資料更新發佈至 AWS IoT Core。

{ "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語句中使用複雜的嵌套對象查詢。如需詳細資訊,請參閱AWS IoT 開發人員指南中的巢狀物件查詢,或參閱將屬性值更新發佈 Amazon DynamoDB教學課程以取得剖析資產屬性通知訊息的特定範例。

範例 擷取值陣列的查詢範例

下列陳述式示範如何在有該屬性的所有資產上針對特定雙類型屬性查詢更新屬性值的陣列。

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 ] }
範例 擷取單一值的查詢範例

下列陳述式示範如何在有該屬性的所有資產上針對特定雙類型屬性,從屬性值的陣列查詢第一個值。

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 個值。如果您需要包含其餘的值,您必須設定更複雜的解決方案,將資產屬性值輸出到其他服務。例如,您可以設定具有 AWS Lambda 動作的規則,將陣列中的每個值重新發佈到另一個主題,並設定另一個規則來查詢該主題,並將每個值發佈至所需的規則動作。