使用 Azure Cosmos DB 排序來自 Azure IoT 中樞的裝置連線事件
Azure 事件方格可協助您建置以事件為基礎的應用程式,並輕鬆將 IoT 事件整合至商業解決方案中。 本文將逐步引導您使用 Cosmos DB、邏輯應用程式、IoT 中樞事件和模擬 Raspberry Pi,來收集和儲存裝置的連線和中斷連線事件。
從裝置執行時起,作業順序就會啟動:
使用 IoT 中樞裝置金鑰的 Pi 裝置已啟動並停止
IoT 中樞事件會擷取裝置活動,然後將 HTTP 要求傳送至邏輯應用程式
邏輯應用程式會根據您設定的條件來處理 HTTP 要求
邏輯應用程式會將連線或中斷連線事件記錄到 Cosmos DB 中的新文件
必要條件
作用中的 Azure Cosmos DB for NoSQL 帳戶。 如果您尚未建立此帳戶,請參閱建立資料庫帳戶以取得逐步解說。
您資料庫中的集合。 請參閱新增集合以取得逐步解說。 當您建立集合時,請使用
/id
作為分割區索引鍵。Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前建立免費帳戶。
Azure 訂用帳戶中的 IoT 中樞。 如果您還沒有中樞,可遵循建立 IoT 中樞中的步驟。
建立邏輯應用程式
讓我們建立邏輯應用程式,並新增可監視您虛擬機器資源群組的事件方格觸發程序。
建立邏輯應用程式資源
在 Azure 入口網站中,依序選取 [+建立資源]、[整合] 和 [邏輯應用程式]。
完成表單以建立新的邏輯應用程式,其中包含:
您的訂用帳戶
您的資源群組 (或建立新的資源群組)
訂用帳戶中唯一的邏輯應用程式名稱
IoT 中樞的區域
啟用記錄分析的 [否]
使用量的方案類型
注意
使用量方案類型是在 UI 中啟用邏輯應用程式設計工具的選項。 如果您選擇 [標準] (預設),則必須建立新的工作流程,邏輯應用程式設計工具才會變成可用。
選取 [檢閱 + 建立] 以檢閱設定,然後選取 [建立] 以建立邏輯應用程式。
您現在已經為您的應用程式邏輯建立一項 Azure 資源。 在 Azure 部署您的邏輯應用程式之後,請選取 [移至資源]。 邏輯應用程式設計工具會顯示常見模式的範本,以便您更快開始使用。
在邏輯應用程式設計工具中,捲動直到您看到 [範本] 區段,然後選擇 [空白邏輯應用程式],以便從頭開始建置邏輯應用程式。
選取觸發程序
觸發程序是啟動邏輯應用程式的特定事件。 在本教學課程中,啟動工作流程的觸發程序會透過 HTTP 接收要求。
在連接器和觸發程序搜尋列中,輸入 HTTP 並且按 Enter 鍵。
選取要求 [收到 HTTP 要求時] 作為觸發程序。
選取使用範例承載產生結構描述。
將下列 JSON 程式碼範例貼到文字方塊中,然後選取 [完成]。
此 JSON 僅用於範本,因此確切的值並不重要。
[{ "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd", "topic": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB", "subject": "devices/Demo-Device-1", "eventType": "Microsoft.Devices.DeviceConnected", "eventTime": "2018-07-03T23:20:11.6921933+00:00", "data": { "deviceConnectionStateEventInfo": { "sequenceNumber": "000000000000000001D4132452F67CE200000002000000000000000000000001" }, "hubName": "MYIOTHUB", "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e", "moduleId": "" }, "dataVersion": "1", "metadataVersion": "1" }]
建立條件
條件有助於在特定條件通過後,執行特定動作。 在本文中,條件是要檢查 eventType 是裝置連線還是中斷連線。 當 eventType 為 true 時所執行的動作,是在 Azure Cosmos DB 中建立的文件。 此條件是在邏輯應用程式設計工具中建立。
依序選取 [+ 新增步驟]、[內建] 索引標籤,接著尋找和選取名為 [條件] 的控制項。
在條件中,將 And 變更為 Or,因為我們想要在單一剖析中擷取連線事件或中斷連線事件。
在 [選擇一個值] 方塊內選取,將會出現快顯,其中顯示動態內容 -- 可以選取的欄位。
在 [若為 true] 對話方塊中,按一下 [新增動作]。
搜尋 Cosmos DB 並選取 [Azure Cosmos DB - 建立或更新文件 (V3)]
您會看到 [建立或更新文件 (V3)] 面板。 輸入欄位的這些值:
Azure Cosmos DB 帳戶名稱:{新增帳戶名稱}
資料庫識別碼:ToDoList
集合識別碼:項目
文件:從動態內容參數清單中選擇
Current item
儲存邏輯應用程式。
複製 HTTP URL
離開 Logic Apps 設計工具之前,為觸發程序複製邏輯應用程式正在接聽的 URL。 您可以使用此 URL 來設定 Event Grid。
設定 IoT 中樞事件的訂用帳戶
在本節中,您可將 IoT 中樞設定為在事件發生時進行發佈。
在 Azure 入口網站中,瀏覽至您的 IoT 中樞。
選取事件。
選取 [+ 事件訂用帳戶]。
填寫 [事件訂閱詳細資料]:提供描述性的 [名稱],然後選取 [事件方格結構描述] 作為 [事件結構描述]。
為 IoT 中樞資源建立系統主題名稱。
填妥 [事件種類] 欄位。 在下拉式清單中,僅從功能表中選取 [已連線的裝置] 和 [已中斷連線的裝置]。 按一下畫面上的任意處,以關閉清單並儲存您的選取項目。
針對 [端點詳細資料],選取 [Web Hook] 作為 [端點類型],然後點選端點,再貼上您從邏輯應用程式複製的 URL,並確認您的選取。
表單現在看起來應該會類似下列範例:
選取 [建立] 以儲存事件訂用帳戶。
執行裝置並觀察事件
現在您已設定事件訂用帳戶,接下來我們將連接裝置以進行測試。
在 IoT 中樞登錄裝置
從 IoT 中樞選取 [裝置]。
在窗格頂端選取 [+新增裝置]。
在 [裝置識別碼] 中,輸入
Demo-Device-1
。選取 [儲存]。
再次按一下裝置;現在會填入連接字串和索引鍵。 複製並儲存 [主要連接字串] 以供稍後使用。
啟動 Raspberry Pi 模擬器
我們將使用 Raspberry Pi Web 模擬器來模擬裝置連線。
在 Raspberry Pi Web 模擬器上執行範例應用程式
此樣本應用程式將會觸發裝置連線事件。
在編碼區域中,將行 15 中的預留位置取代為您在上一節結尾儲存的 Azure IoT 中樞裝置連接字串。
選取 [執行] 以執行應用程式。
您會看見如下所示的輸出,其中顯示傳送至 IoT 中樞的感應器資料和訊息。
您可以檢查邏輯應用程式 [概觀] 頁面,以檢查邏輯是否已觸發。 其會表示已成功或已失敗。 如果需要疑難排解,查看這裡可讓您知道邏輯應用程式的狀態。 當觸發程序執行時,預期會有 15-30 秒的延遲。 如果您需要針對邏輯應用程式進行疑難排解,請檢視此疑難排解錯誤一文。
選取 [停止] 以停止模擬器,其會觸發 [裝置中斷連線] 事件。 此事件將會記錄在邏輯應用程式 [概觀] 頁面上,就像記錄在該處的連線事件一樣。
您現在已執行應用程式範例來收集裝置的連線和中斷連線事件,這些事件會移至 IoT 中樞。
觀察 Azure Cosmos DB 中的事件
您可以在 Cosmos DB 文件中查看執行邏輯應用程式的結果。 當您重新整理頁面時,該文件會出現在 Items 集合中。 每個連線狀態事件都會產生新的文件,該文件會被指派唯一 id
。 下圖顯示裝置啟動 (連線) 時所建立的文件。 連接的事件類型會列在 JSON 輸出中。
使用 Azure CLI
您不必使用 Azure 入口網站,可改用 Azure CLI 來完成 IoT 中樞步驟。 如需詳細資訊,請參閱 Azure CLI 頁面:建立事件訂用帳戶和建立 IoT 裝置。
清除資源
本教學課程使用了會使您的 Azure 訂用帳戶產生費用的資源。 完成教學課程試用和結果測試時,請停用或刪除不想保留的資源。
邏輯應用程式
如果不想遺失您在應用程式邏輯上所做的工作,請將它停用,而非刪除它。
瀏覽至您的邏輯應用程式。
在 [概觀] 刀鋒刀鋒視窗上選取 [刪除] 或 [停用]。
每個訂用帳戶都可以有一個免費的 IoT 中樞。 如果您為本教學課程建立了免費中樞,則不必為了避免費用而將它刪除。
IoT 中樞或事件方格
瀏覽至您的 IoT 中樞。
在 [概觀] 刀鋒視窗上選取 [刪除]。
即使要保留 IoT 中樞,您也可以刪除您所建立的事件訂用帳戶。 在 IoT 中樞中,選取 [Event Grid]。
選取您想要移除的事件訂閱,然後選取 [刪除]。
Cosmos DB
若要從 Azure 入口網站中移除 Azure Cosmos DB 帳戶,請移至資源,然後從頂端功能表列選取 [刪除帳戶]。 請參閱刪除 Azure Cosmos DB 帳戶中的詳細指示。
下一步
了解您還可使用事件方格執行哪些作業
了解如何使用事件方格和 Azure 監視器來監視、診斷和疑難排解針對 IoT 中樞的裝置連線能力