共用方式為


教學課程:使用 REST API 來管理 Azure IoT Central 應用程式

本教學課程說明如何使用 Azure IoT Central REST API 來建立 IoT Central 應用程式並與其互動。 本教學課程使用 REST API 完成許多您在快速入門中使用 Web UI 完成的步驟。 這些步驟包括使用智慧型手機上的應用程式作為連線到 IoT Central 的 IoT 裝置。

在本教學課程中,您會了解如何:

  • 授權 REST API。
  • 建立 IoT Central 應用程式。
  • 將裝置新增至您的應用程式。
  • 查詢和控制裝置。
  • 設定資料匯出。
  • 刪除應用程式。

必要條件

若要完成本教學課程中的步驟,您需要:

  • 啟用中的 Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

  • 您可以從其中一個官方應用程式市集安裝免費應用程式的 Android 或 iOS 智慧型手機。

Azure CLI

您可以使用 Azure CLI 進行 REST API 呼叫,併產生某些 REST API 用於授權的持有人令牌。

授權 REST API

您必須先設定授權,才能使用 REST API。 本教學課程中的 REST API 呼叫會使用兩種授權類型的其中一種:

  • 授權存取 https://apps.azureiotcentral.com 的持有人權杖。 您可以使用此持有人權杖在 IoT Central 應用程式中建立 API 權杖。
  • 授權存取 IoT Central 應用程式中功能的系統管理員和操作員 API 權杖。 在本教學課程中,您會針對大部分的 API 呼叫使用這些權杖。 這些權杖只會授權存取一個特定的 IoT Central 應用程式。

執行下列 Azure CLI 命令,以產生授權存取 https://apps.azureiotcentral.com的持有人令牌:

az account get-access-token --resource https://apps.azureiotcentral.com

提示

如果您已啟動殼層的新執行個體,請再次執行 az login

記下 accessToken 值,您稍後會在教學課程中使用它。

注意

持有人權杖會在一小時後到期。 如果過期,請執行相同的命令來產生新的持有人令牌。

建立資源群組

使用 Azure cli 建立資源群組,其中包含您在本教學課程中建立的 IoT Central 應用程式:

az group create --name iot-central-rest-tutorial --location eastus

建立 IoT Central 應用程式

使用下列命令,以隨機名稱產生IoT Central應用程式,以在本教學課程中使用:

appName=app-rest-$(date +%s)

az iot central app create --name $appName --resource-group iot-central-rest-tutorial --subdomain $appName

記下應用程式名稱,稍後在本教學課程中使用它。

建立 API 權杖

使用下列資料平面要求,在 IoT Central 應用程式中建立應用程式 API 權杖。 本教學課程中的某些要求需要具有系統管理員權限的 API 權杖,但大部分可以使用操作員權限:

若要使用 Azure CLI 建立呼叫 operator-token 的操作員令牌,請執行下列命令。 角色 GUID 是所有 IoT Central 應用程式中操作員角色的識別碼:

appName=<the app name generated previously>
bearerTokenApp=<the bearer token generated previously>

az rest --method put --uri https://$appName.azureiotcentral.com/api/apiTokens/operator-token?api-version=2022-07-31 --headers Authorization="Bearer $bearerTokenApp" "Content-Type=application/json" --body '{"roles": [{"role": "ae2c9854-393b-4f97-8c42-479d70ce626e"}]}'

記下命令傳回的操作員令牌,稍後在本教學課程中使用它。 權杖看起來像 SharedAccessSignature sr=2...

若要使用 Azure CLI 建立呼叫 admin-token 的管理員令牌,請執行下列命令。 角色 GUID 是所有 IoT Central 應用程式中系統管理員角色的識別碼:

$appName=<the app name generated previously>
$bearerTokenApp=<the bearer token generated previously>

az rest --method put --uri https://$appName.azureiotcentral.com/api/apiTokens/admin-token?api-version=2022-07-31 --headers Authorization="Bearer $bearerTokenApp" "Content-Type=application/json" --body '{"roles": [{"role": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4"}]}'

記下命令傳回的管理員令牌,您稍後會在教學課程中使用它。 權杖看起來像 SharedAccessSignature sr=2...

如果您想要在 IoT Central 應用程式中看到這些權杖,請開啟應用程式並瀏覽至 [安全性] > [權限] > [API 權杖]

註冊裝置

您必須先向 IoT Central 註冊裝置,才能進行連線。 使用下列要求在應用程式中註冊您的裝置,並擷取裝置認證。 第一個要求會建立具有 phone-001 作為裝置識別碼的裝置:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>

az rest --method put --uri https://$appName.azureiotcentral.com/api/devices/phone-001?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json" --body '{"displayName": "My phone app","simulated": false,"enabled": true}'

az rest --method get --uri https://$appName.azureiotcentral.com/api/devices/phone-001/credentials?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json"

記下 命令傳回的 idScopeprimaryKey 值,您會在稍後的教學課程中使用它們。

佈建和連線裝置

若要避免需要在智慧型手機上手動輸入裝置認證,您可以使用 IoT Central 所產生的 QR 代碼。 QR 代碼會編碼裝置識別碼、識別碼範圍、主索引鍵。 若要顯示 QR 代碼:

  1. 使用您先前記下的應用程式 URL 來開啟 IoT Central 應用程式。
  2. 在您的 IoT Central 應用程式中,瀏覽至 [裝置] > [我的手機應用程式] > [連線] > [QR 代碼]。 讓此頁面保持開啟,直到裝置連線為止。

顯示您用來連接裝置的 QR 代碼的螢幕擷取畫面。

為了簡化設定,本文使用 IoT 隨插即用智慧手機應用程式作為 IoT 裝置。 應用程式會傳送從智慧型手機感應器收集的遙測、回應從 IoT Central 叫用的命令,並將屬性值報告至 IoT Central。

從其中一個應用程式市集將應用程式安裝在您的智慧型手機上:

在 Google Play 上取得 Android 手機的應用程式。從 App Store 下載手機的應用程式。

若要將 IoT 隨插即用應用程式連線到 IoT Central 應用程式:

  1. 在您的智慧型手機上開啟 IoT PnP 應用程式。

  2. 在歡迎頁面上,選取 [掃描 QR 代碼]。 將智慧型手機的相機指向 QR 代碼。 然後在建立連線時等候幾秒鐘。

  3. 在應用程式的遙測資料頁面上,您可以看到應用程式正在傳送至 IoT Central 的資料。 在記錄頁面上,您可以看到連線的裝置和數則初始化訊息。

若要確認裝置現已佈建,您可以使用 REST API:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>

az rest --method get --uri https://$appName.azureiotcentral.com/api/devices/phone-001?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json"

template記下命令傳回的值,稍後在教學課程中使用它。

您可以使用 REST API 來管理應用程式中的裝置範本。 例如,若要檢視應用程式中的裝置範本:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>

az rest --method get --uri https://$appName.azureiotcentral.com/api/deviceTemplates?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json"

查詢和控制裝置

您可以使用 REST API 從您的裝置查詢遙測。 下列要求會從共用特定裝置範本識別碼的所有裝置傳回加速計資料:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>
deviceTemplateId=<the device template Id you made a note of previously>
q1='{"query": "SELECT $id as ID, $ts as timestamp, sensors.accelerometer FROM '
q2=' WHERE WITHIN_WINDOW(P1D) AND sensors.accelerometer <> NULL"}'
query="$q1 $deviceTemplateId $q2"
echo $query

az rest --method post --uri https://$appName.azureiotcentral.com/api/query?api-version=2022-10-31-preview --headers Authorization="$operatorToken" "Content-Type=application/json" --body "$query"

您可以使用 REST API 來讀取和設定裝置屬性。 下列要求會從裝置實作的裝置資訊元件傳回所有屬性值:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>

az rest --method get --uri https://$appName.azureiotcentral.com/api/devices/phone-001/components/device_info/properties?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json"

您可以使用 REST API 來呼叫裝置命令。 下列要求會呼叫一個命令,讓智慧型手機上的切換開關亮起三秒兩次。 若要讓命令執行,您的智慧型手機畫面必須開啟,且顯示 IoT 隨插即用應用程式:

appName=<the app name generated previously>
operatorToken=<the operator token generated previously>

az rest --method post --uri https://$appName.azureiotcentral.com/api/devices/phone-001/commands/lightOn?api-version=2022-07-31 --headers Authorization="$operatorToken" "Content-Type=application/json" --body '{"duration": 3, "delay": 1, "pulses": 2}'

清除資源

如果您已完成本教學課程中使用的 IoT Central 應用程式,您可以將其刪除:

appName=<the app name generated previously>

az iot central app delete --name $appName --resource-group iot-central-rest-tutorial