共用方式為


教學課程:使用 IoT 中樞 訊息路由將裝置數據傳送至 Azure 儲存體

使用 Azure IoT 中樞 中的訊息路由,將遙測數據從IoT裝置傳送至 Azure 服務,例如 Blob 記憶體、服務匯流排 佇列、服務匯流排 主題和事件中樞。 每個 IoT 中樞都有與事件中樞相容的預設內建端點。 您也可以藉由定義路由查詢,建立自定義端點,並將訊息路由傳送至其他 Azure 服務。 抵達IoT中樞的每個訊息都會路由傳送至其路由查詢符合的所有端點。 如果訊息不符合任何已定義的路由查詢,則會路由至預設端點。

在本教學課程中,您會執行下列工作:

  • 建立IoT中樞,並將裝置訊息傳送至該中樞。
  • 建立儲存體帳戶。
  • 建立記憶體帳戶的自定義端點,並從IoT中樞將訊息路由傳送至該端點。
  • 檢視記憶體帳戶 Blob 中的裝置訊息。

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

  • Azure 訂用帳戶中的 IoT 中樞。 如果您還沒有中樞,您可以遵循建立IoT中樞中的步驟。

  • 本教學課程使用適用於 C# 的 Azure IoT SDK 範例程式代碼

    • 將 SDK 存放庫下載或複製到您的開發電腦。
    • 在您的開發電腦上擁有 .NET Core 3.0.0 或更新版本。 視需要執行 dotnet --version下載 .NET 來檢查您的版本。
  • 請確定您的防火牆已開啟連接埠 8883。 本教學課程中的範例會使用 MQTT 通訊協定,其會透過埠 8883 進行通訊。 某些公司和教育網路環境可能會封鎖此連接埠。 如需此問題的詳細資訊和解決方法,請參閱連線至 IoT 中樞 (MQTT)

  • 或者,安裝 Azure IoT Explorer。 此工具可協助您在訊息抵達IoT中樞時觀察訊息。 本文使用 Azure IoT Explorer。

Azure 入口網站 沒有其他必要條件。

註冊裝置並將訊息傳送至 IoT 中樞

在 IoT 中樞註冊新的裝置。

  1. 登入 Azure 入口網站 並流覽至您的IoT中樞。

  2. 從功能表的 [裝置管理] 區段選取 [裝置]。

  3. 選取 [ 新增裝置]。

    顯示在 Azure 入口網站 中新增裝置的螢幕快照。

  4. 提供裝置標識碼,然後選取 [ 儲存]。

  5. 新的裝置現在應該位於裝置清單中。 如果不是,請重新整理頁面。 選取裝置標識碼以開啟裝置詳細數據頁面。

  6. 複製其中一個裝置金鑰並加以儲存。 您將使用此值來設定產生模擬裝置遙測訊息的範例程式代碼。

    顯示從裝置詳細數據頁面複製主鍵的螢幕快照。

既然您擁有裝置識別碼和金鑰,請使用範例程式代碼開始將裝置遙測訊息傳送至 IoT 中樞。

提示

如果您遵循本教學課程的 Azure CLI 步驟,請在個別會話中執行範例程式代碼。 如此一來,您就可以允許範例程式代碼繼續執行,同時遵循其餘的 CLI 步驟。

  1. 如果您不是必要條件的一部分,請立即從 GitHub 下載或複製適用於 C# 的 Azure IoT SDK 存放庫

  2. 從您下載或複製 SDK 的資料夾,瀏覽至 azure-iot-sdk-csharp\iothub\device\samples\how to guides\HubRoutingSample 資料夾。

  3. 安裝 Azure IoT C# SDK 和檔案中指定的 HubRoutingSample.csproj 必要相依性:

    dotnet restore
    
  4. 在您選擇的編輯器中,開啟 Parameters.cs 檔案。 此檔案顯示範例所支持的參數。 PrimaryConnectionString執行範例時,只會使用本文中的 參數。 檢閱此檔案中的程序代碼。 不需要變更。

  5. 使用下列命令建置並執行範例程式代碼:

    將取代<myDevicePrimaryConnectionString>為您的IoT中樞裝置的主要 連接字串。

    dotnet run --PrimaryConnectionString <myDevicePrimaryConnectionString>
    
  6. 您應該會在訊息傳送至 IoT 中樞 時,開始看到列印到輸出的訊息。 讓此程式在教學課程期間保持執行狀態。

設定 IoT Explorer 以檢視訊息

設定 IoT Explorer 以連線到 IoT 中樞,並在訊息抵達內建端點時讀取訊息。

首先,擷取IoT中樞的 連接字串。

  1. 在 Azure 入口網站中,瀏覽至您的 IoT 中樞。

  2. 從功能表的 [安全性設定] 區段中選取 [共用存取原則]。

  3. 選取 iothubowner 原則

    開啟 iothubowner 共用存取原則。

  4. 複製主要 連接字串

    複製 iothubowner 主要 連接字串。

現在,請使用該 連接字串 來設定IoT中樞的IoT總管。

  1. 在您的開發電腦上開啟IoT Explorer。

  2. 請選取新增連線

    顯示在IoT總管中新增IoT中樞連線的螢幕快照。

  3. 將中樞的 連接字串 貼到文字框中。

  4. 選取 [儲存]。

  5. 線上到 IoT 中樞之後,您應該會看到裝置清單。 選取您為此教學課程建立的裝置標識碼。

  6. 選取 [遙測]

  7. 在您的裝置仍在執行中時,選取 [ 啟動]。 如果您的裝置未執行,則不會看到遙測。

    在IoT總管中開始監視裝置遙測。

  8. 您應該會看到來自裝置的訊息,其中最上層顯示的最新訊息。

    檢視抵達內建端點上IoT中樞的訊息。

    請觀看傳入訊息片刻,確認您看到三種不同類型的訊息:一般、記憶體和重要訊息。 看到此項目之後,您可以停止您的裝置。

這些訊息都會抵達IoT中樞的預設內建端點。 在下一節中,我們將建立自定義端點,並根據訊息屬性將其中一些訊息路由傳送至記憶體。 這些訊息將會停止出現在IoT檔案總管中,因為訊息只會在訊息與IoT中樞內的任何其他路由不符時移至內建端點。

設定訊息路由

您將根據模擬裝置附加至訊息的屬性,將訊息路由傳送至不同的資源。 未自定義路由的訊息會傳送至預設端點(messages/events)。

本教學課程的範例應用程式會將 層級 屬性指派給傳送至IoT中樞的每個訊息。 每個訊息都會隨機指派一個一般記憶體重大層級

第一個步驟是設定要路由傳送數據的端點。 第二個步驟是設定使用該端點的訊息路由。 設定路由之後,您可以在入口網站中檢視端點和訊息路由。

建立儲存體帳戶

在該帳戶內建立 Azure 儲存體 帳戶和容器,這會保存路由傳送至該帳戶的裝置訊息。

  1. 在 Azure 入口網站 中,搜尋 儲存體 帳戶

  2. 選取 建立

  3. 為您的記憶體帳戶提供下列值:

    參數
    訂用帳戶 選取包含IoT中樞的相同訂用帳戶。
    資源群組 選取包含IoT中樞的相同資源群組。
    儲存體帳戶名稱 為您的記憶體帳戶提供全域唯一的名稱。
    效能 接受預設 的標準 值。

    顯示建立記憶體帳戶的螢幕快照。

  4. 您可以選取 [檢閱 + 建立],以接受所有其他預設值。

  5. 驗證完成時,選取 [建立]

  6. 部署完成後,請選取 [前往資源]

  7. 在記憶體帳戶功能表中,從 [資料記憶體] 區段選取 [容器]。

  8. 選取 [+ 容器] 以建立新的容器。

    顯示建立記憶體容器的螢幕快照

  9. 提供容器的名稱,然後選取 [ 建立]。

路由至記憶體帳戶

現在設定記憶體帳戶的路由。 在本節中,您會定義指向您所建立記憶體帳戶的新端點。 然後,建立路由以篩選層級屬性設定為記憶體訊息,並將那些路由傳送至記憶體端點。

注意

數據可以用 Apache Avro 格式寫入 Blob 記憶體,這是預設值或 JSON。

編碼格式只能在設定 Blob 記憶體端點時設定。 已設定的端點無法變更格式。 使用 JSON 編碼時,您必須將 contentType 設定為 JSON,並將訊息系統屬性中的 contentEncoding 設定為 UTF-8。

如需使用 Blob 記憶體端點的詳細資訊,請參閱 路由至記憶體的指引。

  1. Azure 入口網站 中,移至您的IoT中樞。

  2. 在 [中樞設定] 底下的 [資源] 功能表中,選取 [訊息路由],然後選取 [新增]。

    顯示 [新增] 按鈕位置的螢幕快照,以在IoT中樞中新增路由。

  3. 在 [端點] 索引標籤上,提供下列資訊來建立 儲存體 端點:

    參數
    端點類型 選取儲存體
    端點名稱 提供此端點的唯一名稱。
    Azure 儲存體容器 選取 [ 挑選容器]。 依照提示選取您在上一節中建立的記憶體帳戶和容器。
    編碼方式 選取 [ JSON]。 如果此欄位呈現灰色,則您的記憶體帳戶區域不支援 JSON。 在此情況下,請繼續進行預設 AVRO

    顯示已選取正確選項的 [新增記憶體端點] 窗格的螢幕快照。

  4. 接受其餘參數的預設值,然後選取 [ 建立 + 下一步]。

  5. 在 [路由] 索引標籤上,提供下列資訊,以建立指向您所建立 儲存體 端點的路由:

    參數
    名稱 為您的路由建立名稱。
    資料來源 確認 已從下拉式清單中選取 [裝置遙測訊息 ]。
    啟用路由 確認已核取此欄位。
    路由查詢 輸入 level="storage" 作為查詢字串。

    顯示使用路由查詢新增路由的螢幕快照。

  6. 選取 [建立 + 略過擴充]

檢視路由訊息

在 IoT 中樞 中建立路由並啟用之後,它會立即開始路由訊息,以符合其查詢條件至記憶體端點。

使用 IoT Explorer 監視內建端點

返回開發電腦上的IoT Explorer工作階段。 回想一下,IoT 總管會監視IoT中樞的內建端點。 這表示您現在應該只會看到未由我們建立的自定義路由路由所路由的訊息

執行程式代碼,再次啟動範例。 請觀看傳入訊息一會兒,您應該只會看到設定為 normalcriticallevel訊息。

檢視記憶體容器中的訊息

確認訊息已抵達記憶體容器。

  1. Azure 入口網站中,瀏覽至您的儲存體帳戶。

  2. 從功能表的 [資料儲存區] 區段中選取 [容器]。

  3. 選取您為此教學課程建立的容器。

  4. 應該會有一個具有IoT中樞名稱的資料夾。 向下切入檔案結構,直到您到達 .json 檔案為止。

    顯示在記憶體中尋找路由訊息的螢幕快照。

  5. 選取 JSON 檔案,然後選取 [ 下載 ] 以下載 JSON 檔案。 確認檔案包含裝置的訊息,該訊息已 level 將 屬性設定為 storage

  6. 停止執行範例。

清除資源

如果您想要移除您在本教學課程中使用的所有 Azure 資源,請刪除資源群組。 此動作會刪除群組中包含的所有資源。 如果您不想刪除整個資源群組,請使用 Azure 入口網站 來尋找和刪除個別資源。

如果您想要繼續進行下一個教學課程,請保留您在這裡建立的資源。

  1. 在 Azure 入口網站 中,流覽至包含本教學課程之IoT中樞和記憶體帳戶的資源群組。
  2. 檢閱資源群組中的所有資源,以判斷您要清除哪些資源。
    • 如果您想要刪除所有資源,請選取 [ 刪除資源群組]。
    • 如果您只想要刪除特定資源,請使用每個資源名稱旁邊的複選框來選取您想要刪除的資源。 接著選取刪除

下一步

在本教學課程中,您已瞭解如何建立 Azure 資源的自定義端點,然後建立路由以將裝置訊息傳送至該端點。 繼續進行下一個教學課程,瞭解如何使用額外的數據擴充訊息,以簡化下游處理