Share via


開始使用裝置管理 (Azure CLI)

後端應用程式可使用 Azure IoT 中樞基元 (例如裝置對應項直接方法),從遠端啟動並監視裝置上的裝置管理動作。 本文說明 Azure CLI 和裝置如何共同合作使用 IoT 中樞為裝置叫用直接方法。

注意

本文中所述的功能僅適用於 IoT 中樞的標準層。 如需有關基本和標準/免費 Azure IoT 中樞階層的詳細資訊,請參閱為您的解決方案選擇適合的 IoT 中樞階層

使用直接方法從 Azure CLI 工作階段起始裝置管理動作 (例如重新啟動、恢復出廠預設值,以及韌體更新)。 該裝置將負責:

  • 處理從 IoT 中樞傳送的方法要求。

  • 在裝置上起始對應的裝置專有動作。

  • 透過針對 IoT 中樞的報告屬性提供狀態更新。

您可以使用 Azure CLI 來執行裝置對應項查詢,以報告裝置管理動作的進度。 如需使用直接方法的詳細資訊,請參閱雲端到裝置的通訊指導

本文說明如何建立兩個 Azure CLI 工作階段:

  • 建立模擬裝置的工作階段。 模擬裝置設定為當叫用任何直接方法時傳回狀態程式碼和 JSON 承載。

  • 在另一個工作階段中建立的模擬裝置上叫用直接方法的工作階段。

必要條件

  • Azure CLI。 您也可使用 Azure Cloud Shell (在瀏覽器或 Windows 終端這類應用程式中執行的互動式 CLI 殼層),執行本文中的命令。 如果您使用 Cloud Shell,就不需要安裝任何項目。 如果您偏好在本機使用 CLI,本文需要有 Azure CLI 2.36 版或更新版本。 執行 az --version 以尋找版本。 若要在本機安裝或升級 Azure CLI,請參閱安裝 Azure CLI

  • IoT 中樞。 使用 CLIAzure 入口網站建立一個。

  • 請確定您的防火牆已開啟連接埠 8883。 本文中的裝置範例會使用 MQTT 通訊協定,其會透過連接埠 8883 進行通訊。 某些公司和教育網路環境可能會封鎖此連接埠。 如需此問題的詳細資訊和解決方法,請參閱連線至 IoT 中樞 (MQTT)

準備 Cloud Shell

如果您想要使用 Azure Cloud Shell,您必須先啟動並設定它。 如果您在本機使用 CLI,請跳至準備兩個 CLI 工作階段一節。

  1. 從 Microsoft Azure 入口網站中的分頁標頭選取 Cloud Shell 圖示。

    Screenshot of the global controls from the page header of the Azure portal, highlighting the Cloud Shell icon.

    注意

    如果這是您第一次使用 Cloud Shell,它將會提示您建立使用 Cloud Shell 所需的儲存體。 選取用來建立儲存體帳戶和 Microsoft Azure 檔案共用的訂用帳戶。

  2. 使用 Cloud Shell 工具列中的環境選取器來選取您慣用的 CLI 環境。 本文使用 Bash 環境。 您也可以使用 PowerShell 環境。

    注意

    某些命令在 BashPowerShell 環境中需要不同的語法或格式設定。 如需詳細資訊,請參閱成功使用 Azure CLI 的秘訣

    Screenshot of an Azure Cloud Shell window, highlighting the environment selector in the toolbar.

準備兩個 CLI 工作階段

接著,您必須準備兩個 Azure CLI 工作階段。 若使用 Cloud Shell,這些工作階段將會在個別的 Cloud Shell 索引標籤中執行。 若使用本機 CLI 用戶端,則會執行個別的 CLI 執行個體。 針對下列工作,請使用個別的 CLI 工作階段:

  • 第一個工作階段會模擬與 IoT 中樞通訊的 IoT 裝置。
  • 第二個工作階段會使用 IoT 中樞從模擬裝置叫用直接方法。

注意

使用 Azure CLI 時,您必須登入 Azure 帳戶。 如果您使用 Cloud Shell,則會自動登入您的 Azure 帳戶。 如果您使用本機 CLI 用戶端,則必須登入每個 CLI 工作階段。 您的 Azure CLI Shell 工作階段與 IoT 中樞之間的所有通訊都會經過驗證和加密。 因此,本文不需要搭配實際裝置使用的額外驗證 (如連接字串)。 如需關於使用 Azure CLI 登入的詳細資訊,請參閱使用 Azure CLI 登入

  1. 在第一個 CLI 工作階段中,執行 az extension add 命令。 該命令會將適用於 Azure CLI 的 Microsoft Azure IoT 延伸模組新增至 CLI Shell。 延伸模組可將 IoT 中樞、IoT Edge 和 IoT 裝置佈建服務 (DPS) 的特定命令新增至 Azure CLI。 安裝延伸模組後,您不需要在任何 Cloud Shell 工作階段中再次安裝。

    az extension add --name azure-iot
    

    注意

    本文使用最新版的 Azure IoT 擴充功能,稱為 azure-iot。 舊版則稱為 azure-cli-iot-ext。您一次只能安裝一個版本。 您可以使用 az extension list 命令來驗證目前安裝的延伸模組。

    使用 az extension remove --name azure-cli-iot-ext 移除舊版的擴充功能。

    使用 az extension add --name azure-iot 新增新版的擴充功能。

    若要查看您已安裝的擴充功能,請使用 az extension list

  2. 開啟第二個 CLI 工作階段。 如果您在瀏覽器中使用 Cloud Shell,請選取第一個 CLI 工作階段工具列上的 [開啟新工作階段] 圖示。 若在本機使用 CLI,請開啟第二個執行個體。

    Screenshot of an Azure Cloud Shell window, highlighting the Open New Session icon in the toolbar.

建立和模擬裝置

在本節中,您會在第一個 CLI 工作階段中為您的 IoT 中樞建立裝置身分識別,然後使用該裝置身分識別來模擬裝置。 模擬裝置會回應您在第二個 CLI 工作階段中叫用的直接方法。

若要建立並啟動模擬裝置:

  1. 在第一個 CLI 工作階段中,執行 az iot hub device-identity create 命令,以其對應的值取代下列預留位置。 此命令會建立模擬裝置的裝置身分識別。

    {DeviceName}。 模擬裝置的名稱。

    {HubName}。 IoT 中樞的名稱。

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. 在第一個 CLI 工作階段中,執行 az iot device simulate 命令,以其對應的值取代下列預留位置。 此命令使用您在上一個步驟中建立的裝置身分識別來模擬裝置。 模擬裝置設定為在任何時候叫用直接方法時傳回狀態程式碼和承載。

    {DeviceName}。 模擬裝置的名稱。

    {HubName}。 IoT 中樞的名稱。

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    提示

    根據預設,az iot device simulate 命令會傳送 100 個裝置到雲端的訊息,訊息之間的間隔為 3 秒。 模擬會在傳送所有訊息之後結束。 如果您想要讓模擬執行更長的時間,您可以使用--msg-count參數來指定更多訊息,或使用--msg-interval參數來指定訊息之間的較長間隔。 您也可以再次執行命令,以重新啟動模擬裝置。

叫用直接方法

在本節中,您使用第二個 CLI 工作階段,在第一個 CLI 工作階段中執行的模擬裝置上叫用直接方法。

  1. 確認第一個 CLI 工作階段中的模擬裝置正在執行中。 如果沒有,請再次從建立並模擬裝置執行 az iot device simulate 命令來重新啟動它。

  2. 在第二個 CLI 工作階段中,執行 az iot hub invoke-device-method 命令,以其對應的值取代下列預留位置。 在此範例中,該裝置沒有預先存在的方法。 該命令會在模擬裝置上呼叫範例方法名稱。 該方法會在其回應中提供狀態程式碼和承載。

    {DeviceName}。 模擬裝置的名稱。

    {HubName}。 IoT 中樞的名稱。

    {MethodName}。 直接方法的名稱。 模擬裝置沒有預先存在的方法,因此您可以針對此命令選擇任何您想要的名稱。

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. 在第一個 CLI 工作階段中,確認輸出會顯示方法引動過程。 在下列螢幕擷取畫面中,我們在 az iot hub invoke-device-methodCLI 命令中分別針對{DeviceName}{MethodName}預留位置使用SampleDeviceSampleMethod

    Screenshot of a simulated device displaying output after a method was invoked.

  4. 在第二個 CLI 工作階段中,確認輸出會顯示從叫用方法接收的狀態程式碼和承載。

    Screenshot of an Azure Cloud Shell window displaying the status code and payload of an invoked direct method.

使用承載叫用直接方法

在本節中,您使用第二個 CLI 工作階段叫用直接方法,並提供承載給在第一個 CLI 工作階段中執行的模擬裝置。

  1. 確認第一個 CLI 工作階段中的模擬裝置正在執行中。 如果沒有,請再次從建立並模擬裝置執行 az iot device simulate 命令來重新啟動它。

  2. 在第二個 CLI 工作階段中,執行 az iot hub invoke-device-method 命令,以其對應的值取代下列預留位置。 在此範例中,該裝置沒有預先存在的方法。 該命令會在模擬裝置上呼叫範例方法名稱,並提供該方法的承載。 該方法會在其回應中提供狀態程式碼和承載。

    {DeviceName}。 模擬裝置的名稱。

    {HubName}。 IoT 中樞的名稱。

    {MethodName}。 直接方法的名稱。 模擬裝置沒有預先存在的方法,因此您可以針對此命令選擇任何您想要的名稱。

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. 在第一個 CLI 工作階段中,確認輸出會顯示方法引動過程。 在下列螢幕擷取畫面中,我們在 az iot hub invoke-device-methodCLI 命令中分別針對{DeviceName}{MethodName}預留位置使用SampleDeviceSampleMethod

    Screenshot of a simulated device displaying output after a method was invoked with a payload.

  4. 在第二個 CLI 工作階段中,確認輸出會顯示從叫用方法接收的狀態程式碼和承載。

    Screenshot of an Azure Cloud Shell window displaying the status code and payload of an invoked direct method.

下一步

若要了解如何使用 Azure CLI 擴充 IoT 解決方案,以及在裝置上排程方法引動過程,請參閱排程及廣播作業

若要繼續開始使用 IoT 中樞和裝置管理模式,例如端對端映像式更新,請參閱 Azure IoT 中樞裝置更新文章,使用 Raspberry Pi 3 B+ 參照映像