將屬性值更新發佈至 Amazon DynamoDB - AWS IoT SiteWise

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

將屬性值更新發佈至 Amazon DynamoDB

您可以將數據存儲在Amazon DynamoDB輕鬆存取歷史記錄資產資料,無須重複查詢AWS IoT SiteWiseAPI,它返回分頁值歷史記錄。完成本教學課程之後,您可以輕鬆建立使用您資產資料的自訂軟體 (例如整個風力發電廠風速和方向的即時映射)。如果您希望在不實作自訂軟體解決方案的情況下監控和視覺化您的資料,請參閱使用 AWS IoT SiteWise Monitor 來監控資料

在本教學課程中,您會在 AWS IoT SiteWise 示範上進行建置,提供一組適用於風力發電廠的資料範例。您會從風力發電廠演示設定屬性值更新,以通過AWS IoT核心規則,添加到您創建的 DynamoDB 表中。當您啟用屬性值更新時,AWS IoT SiteWise 會將資料傳送到 MQTT 訊息中的 AWS IoT Core。然後,您可以定義AWS IoT根據這些訊息的內容,執行動作的核心規則,例如 DynamoDB 動作。如需詳細資訊,請參閱 與其他 AWS 服務互動

先決條件

為了完成本教學,您需要以下項目:

  • 一個 AWS 帳戶。如果您沒有帳戶,請參閱 設定 AWS 帳戶

  • 執行 Windows、macOS、Linux 或 Unix 的開發電腦,用來存取 AWS Management Console。如需詳細資訊,請參閱 AWS Management Console 入門

  • 擁有管理員許可的 IAM 使用者。

  • 執行中的 AWS IoT SiteWise 風力發電廠示範。當您設定示範時,它會定義 AWS IoT SiteWise 中的模型和資產,並將資料串流到它們之中以呈現風力發電廠。如需詳細資訊,請參閱 使用 AWS IoT SiteWise 示範

設定 AWS IoT SiteWise 以發佈屬性值更新

在此程序中,您會在示範渦輪機資產的 Wind Speed (風速) 屬性上啟用屬性值通知。啟用屬性值通知後,AWS IoT SiteWise將 MQTT 訊息中的每個值更新發佈至AWS IoT核心。

啟用資產屬性的屬性值更新通知

  1. 登入 AWS IoT SiteWise 主控台

  2. 請參AWS區域哪裡AWS IoT SiteWise支持並切換AWS區域,如果必要的話。切換到您正在執行 AWS IoT SiteWise 示範的區域。

  3. 在左側導覽窗格中,選擇 Assets (資產)

    
            AWS IoT SiteWise "Assets" (資產) 左側窗格元素螢幕擷取畫面。
  4. 選擇 Demo Wind Farm Asset 旁的箭號,以展開發力發電廠資產的階層。

    
            AWS IoT SiteWise "Demo Wind Farm Asset「層次結構螢幕擷取畫面。
  5. 選擇一個示範渦輪機,然後選擇 Edit (編輯)

    
            AWS IoT SiteWise "Demo Turbine Asset「螢幕擷取畫面。
  6. Wind Speed 屬性的 Notification status (通知狀態) 更新為 ENABLED (啟用)

    
            AWS IoT SiteWise "Edit notification status" (編輯通知狀態) 螢幕擷取畫面。
  7. 選擇頁面底部的 Save asset (儲存資產)

  8. 針對每個示範渦輪機資產重複步驟 5 到 7。

  9. 選擇示範渦輪機 (例如 Demo Turbine Asset 1 (示範渦輪機資產))。

  10. 選擇 Measurements (衡量值)

  11. 選擇 Wind Speed 屬性旁的複製圖示,以將通知主題複製到剪貼簿。儲存通知主題,以在本教學的稍後使用。您只需要記錄一台渦輪機的通知主題。

    
            AWS IoT SiteWise "Copy notification topic" (複製通知主題) 螢幕擷取畫面。

    通知主題看起來應該會與以下範例相似。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE

在 中建立規則AWS IoT核心

在本程序中,您會在AWS IoT了解屬性值通知訊息並將資料插入 DynamoDB 資料表中。AWS IoT核心規則會針對 MQTT 訊息進行分析,並根據每個訊息的內容和主題執行動作。您可以使用 DynamoDB 動作建立規則,將資料插入到您在本教學課程過程中建立的 DynamoDB 資料表。

使用 DynamoDB 動作建立規則

  1. 導覽至 AWS IoT 主控台。如果出現 Get started (開始使用) 按鈕,請選擇此按鈕。

  2. 在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)

    
            AWS IoT核心「建立規則」螢幕擷取畫面。
  3. 如果 You don’t have any rules yet (您尚未有任何規則) 對話方塊出現,請選擇 Create a rule (建立規則)。否則,請選擇 Create (建立)。

  4. 輸入規則的名稱和描述。

    
            AWS IoT核心「建立規則」頁面的螢幕擷取畫面,並已反黃 [Name] (名稱) 和 [Description] (説明)
  5. 尋找您在本教學中稍早儲存的通知主題。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE

    將主題中的資產 ID (assets/ 之後的 ID) 取代成 +,以選取所有示範風力渦輪機資產的風速屬性。+ 主題篩選條件接受主題中單一層級的所有節點。您的主題看起來應該會如以下範例。

    $aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
  6. 輸入以下規則查詢陳述式。將 FROM 區段中的主題取代成您的通知主題。

    SELECT payload.assetId AS asset, (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed, timestamp() AS timestamp FROM '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' WHERE type = 'PropertyValueUpdate'
  7. Set one or more actions (設定一或多個動作) 下,選擇 Add action (新增動作)。

    
            AWS IoT核心「Create a action」(建立規則) 頁面的螢幕擷取畫面,並已反黃 [Add action]
  8. 選擇一個操作頁面上,選擇將消息拆分為 DynamoDB 表的多個列 (動態 ODBv2)

    
            AWS IoT核心「Select an action」(選取動作) 頁面的螢幕擷取畫面,並已反黃 DynamoDB V2 動作。
  9. 選擇頁面底部的 Configure action (設定動作)

  10. Configure action (設定動作) 頁面,選擇 Create a new resource (建立新的資源)。

    DynamoDB 主控台會在新的標籤中開啟。在您完成下列程序期間,請將規則動作標籤維持在開啟狀態。

建立 DynamoDB 資料表

在此程序中,您會建立 DynamoDB 表,從規則動作接收風速資料。

建立 DynamoDB 資料表

  1. 在 DynamoDB 主控台儀表板中,選擇建立資料表

  2. 輸入資料表的名稱。

    
            DynamoDB「建立資料表」頁面的螢幕擷取畫面。
  3. 針對 Primary key (主索引鍵),執行以下作業:

    1. 輸入 timestamp 做為分割區索引鍵。

    2. 選擇 Number (數字) 類型。

    3. 選取 Add sort key (新增排序索引鍵) 核取方塊。

    4. 輸入 asset 做為排序索引鍵,並保留預設的 String (字串) 排序索引鍵類型。

  4. 選擇 Create (建立)

    Table is being created (正在建立資料表) 通知消失時,您的資料表便已準備就緒。

  5. 返回包含 Configure action (設定動作) 頁面的標籤。在您完成下列程序期間,請將 DynamoDB 標籤維持在開啟狀態。

設定 DynamoDB 規則動作

在此程序中,您會設定 DynamoDB 規則動作,將來自屬性值更新的資料插入新的 DynamoDB 資料表。

設定 DynamoDB 規則動作

  1. 設定動作頁面上,刷新Table name (資料表名稱)列表,然後選擇新的 DynamoDB 表。

    
            AWS IoT「Configure DynamoDB Bv2 動作」(設定 DynamoodBv2 動作) 頁面的螢幕擷取畫面,並已反白表
  2. 選擇建立角色來建立 IAM 角色,授與AWS IoT用於執行規則動作的核心訪問權。

  3. 輸入角色名稱,然後選擇 Create role (建立角色)

    
            AWS IoT核心「設定 DynamoDB V2 動作」頁面的螢幕擷取畫面,並已反黃「建立角色」。
  4. 選擇 Add action (新增動作)。

  5. 選擇頁面底部的 Create rule (建立規則) 來完成建立規則。

    您的演示資產資料應該會開始出現在 DynamoDB 資料表中。

在 DynamoDB 中探索資料

在此程序中,您會在您新的 DynamoDB 資料表中探索示範資產的風速資料。

在 DynamoDB 中探索資產資料

  1. 返回 DynamoDB 資料表處於開啟狀態的標籤。

  2. 在您稍早建立的資料表中,選擇 Items (項目) 標籤,以檢視資料表中的資料。如果您在資料表中沒有看見資料列,請重新整理頁面。如果在幾分鐘之後資料列沒有出現,請參閱規則疑難排解

    
            DynamoDB 資料表頁面的螢幕擷取畫面,並已反黃「項」(項目) 標籤。
  3. 在資料表的資料列中,選擇編輯圖示以展開資料。

    
            DynamoDB 資料表頁面的螢幕擷取畫面,並已反紅行上的編輯圖標。
  4. 選擇 windspeed 結構旁邊的箭頭,展開風速資料點的清單。每個清單都反映了風力發電廠示範傳送到 AWS IoT SiteWise 的風速資料點批次。如果您為自身用途設定了規則動作,建議您使用不同的資料格式。如需詳細資訊,請參閱 查詢資產屬性通知訊息

    
            DynamoDB「編輯資料表資料列」面板的螢幕擷取畫面。

現在您已完成教學課程,您可以停用或刪除規則並刪除 DynamoDB 料表,以避免產生額外的費用。請遵循下一個程序來清理您的資源。

在完成教學課程後清除資源

完成本教學課程之後,請清除資源,以避免產生額外的費用。您的示範風力發電廠資產會在經過建立示範時選擇的持續時間後刪除,此外也能手動刪除。如需詳細資訊,請參閱 刪除 AWS IoT SiteWise 示範

您可以使用以下程序來停用屬性值更新通知 (如果您未刪除示範)、停用或刪除AWS IoT規則,然後刪除您的 DynamoDB 表。

停用資產屬性的屬性值更新通知

  1. 導覽至 AWS IoT SiteWise 主控台

  2. 在左側導覽窗格中,選擇 Assets (資產)

    
            AWS IoT SiteWise "Assets" (資產) 左側窗格元素螢幕擷取畫面。
  3. 選擇 Demo Wind Farm Asset 旁的箭號,以展開發力發電廠資產的階層。

    
            AWS IoT SiteWise "Demo Wind Farm Asset「層次結構螢幕擷取畫面。
  4. 選擇一個示範渦輪機,然後選擇 Edit (編輯)

    
            AWS IoT SiteWise "Demo Turbine Asset「螢幕擷取畫面。
  5. Wind Speed 屬性的 Notification status (通知狀態) 更新為 DISABLED (停用)

    
            AWS IoT SiteWise "Edit notification status" (編輯通知狀態) 螢幕擷取畫面。
  6. 選擇頁面底部的 Save asset (儲存資產)

  7. 針對每個示範渦輪機資產重複步驟 4 到 6。

停用或刪除 AWS IoT Core 中的規則

  1. 導覽至 AWS IoT 主控台

  2. 在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)

  3. 選擇您規則上的選單,然後選擇 Disable (停用)Delete (刪除)

    
            AWS IoT核心「Rules」(規則) 頁面的螢幕擷取畫面,並已反黃規則的菜單。

刪除 DynamoDB 資料表

  1. 導覽至 。DynamoDB 主控台

  2. 在左側導覽窗格中,選擇 Tables (資料表)

  3. 選擇您之前建立的資料表 WindSpeedData

  4. 選擇 Delete table (刪除資料表)。

    
            DynamoDB「Table」(DynamoDB 資料表) 頁面的螢幕擷取畫面,並已反紅 [
  5. Delete table (刪除資料表) 對話方塊中,選擇 Delete (刪除)

    
            DynamoDB「DynamoDB 刪除資料表」(刪除資料表) 對話框螢幕擷取畫面,

規則疑難排解

如果示範資產資料並未如預期般出現在 DynamoDB 資料表中,請遵循此程序中的步驟來針對您的規則進行故障診斷。在此程序中,您會設定重新發佈規則動作做為錯誤動作,以檢視 MQTT 測試用戶端中的錯誤訊息。您也可以將日誌記錄設定至CloudWatch進行故障診斷的日誌。如需詳細資訊,請參閱「」使用 進行監控CloudWatch日誌中的AWS IoT開發人員指南

將重新發佈錯誤動作新增到規則

  1. 導覽至 AWS IoT 主控台

  2. 在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)

  3. 選擇您稍早建立的規則。

    
            AWS IoT核心「規則」頁面的螢幕擷取畫面。
  4. Error action (錯誤動作) 下方,選擇 Add action (新增動作)

  5. 選擇將訊息重新發佈至AWS IoT話題

    
            AWS IoT[Select an action] (選取動作) 頁面的螢幕擷取畫面,並已反紅重新發佈動作。
  6. 選擇頁面底部的 Configure action (設定動作)

  7. In主題,輸入windspeed/error。AWS IoTCore 會將錯誤訊息重新發佈至本主題。

    
            AWS IoT「Configure Republish action」(設定重新發佈動作) 頁面的螢幕擷取畫面,並已反紅「Topic」
  8. 選擇選擇授予AWS IoT核心訪問權限,使用您之前建立的角色執行錯誤動作。

  9. 選擇您角色旁邊的 Select (選取)

    
            AWS IoT「Configure Republish action」(設定重新發佈動作) 頁面的螢幕擷取畫面,並已反白角色選取按
  10. 選擇 Update Role (更新角色) 以將其他許可新增到角色。

    
            AWS IoT「Configure Republish action」(設定重新發佈動作) 頁面的螢幕擷取畫面,並已反白更新角色按
  11. 選擇 Add action (新增動作) 來完成新增錯誤動作。

  12. 選擇主控台左上角的返回箭頭,以返回AWS IoT核心主控台首頁。

在您設定重新發佈錯誤動作後,您可以在AWS IoT核心。

在以下程序中,您會在 MQTT 測試用戶端中訂閱錯誤主題。

訂閱錯誤動作主題

  1. 在 中AWS IoT核心主控台的左側導覽窗格中,選擇測試

  2. Subscription topic (訂閱主題) 欄位中,輸入 windspeed/error,然後選擇 Subscribe to topic (訂閱主題)

    
            AWS IoT「MQTT 客户端」(設定 MQTT 用户端) 頁面的螢幕擷取畫面,並已反白「訂閲主題」按鈕。
  3. 注意出現的錯誤訊息,並探索錯誤訊息中的 failures 陣列,以診斷下列常見問題:

    • 規則查詢陳述式中的拼字錯誤

    • 角色許可不足

    如果沒有出現錯誤,請檢查您的規則已啟用,以及您訂閱的主題和您在重新發佈錯誤動作中設定的主題相同。如果仍然沒有出現錯誤,請檢查您的示範風力發電廠資產仍然存在,並且您已在風速屬性上啟用通知。如果您的示範資產已過期並從 AWS IoT SiteWise 中消失,您可以建立新的示範,並更新規則查詢陳述式來反映更新後的資產模型和屬性 ID。