教學課程:將在 Linux 或 Windows 上執行的範例 IoT 隨插即用裝置應用程式連線至 IoT 中樞
此教學課程示範如何建置範例 IoT 隨插即用裝置應用程式、將其連線至 IoT 中樞,然後使用 Azure IoT 總管工具檢視其傳送的遙測資料。 範例應用程式以 C 撰寫,並且包含在適用於 C 的 Azure IoT 裝置 SDK 中。解決方案建立器可使用 Azure IoT 檔案總管工具直接了解 IoT 隨插即用裝置的功能,而不需檢視任何裝置程式碼。
必要條件
在繼續之前,請確定您已設定環境,包括您的 IoT 中樞。
您可以在 Linux 或 Windows 上執行本教學課程。 本教學課程中的殼層命令會遵循路徑分隔符號 '/
' 的 Linux 慣例,如果您在 Windows 上遵循,請務必針對 '\
' 交換這些分隔符號。
必要條件會因作業系統而有所不同:
Linux
本教學課程假設您使用 Ubuntu Linux。 本教學課程中的步驟已使用 Ubuntu 18.04 進行測試。
若要在 Linux 上完成本教學課程,您必須在本機 Linux 環境上安裝下列軟體:
使用 apt-get
命令,安裝 GCC、Git、cmake 和所有必要的相依性:
sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
確認 cmake
的版本高於 2.8.12,而且 GCC 的版本高於 4.4.7。
cmake --version
gcc --version
Windows
若要在 Windows 上完成此教學課程,請在本機 Windows 環境中安裝下列軟體:
- Visual Studio (Community、Professional 或 Enterprise) - 在安裝 Visual Studio 時,請確實包含使用 C++ 的桌面開發工作負載。
- Git。
- CMake。
下載程式碼
在此教學課程中,您會準備可用來複製及建置 Azure IoT 中樞裝置 C SDK 的開發環境。
在您選擇的目錄中開啟命令提示字元。 執行下列命令,將 Azure IoT C SDK 和程式庫 GitHub 存放庫複製到下列位置:
git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init
預期此作業需要幾分鐘的時間才能完成。
建置程式碼
您可以使用 Visual Studio 或在命令列上使用 cmake
,來建立和執行程式碼。
使用 Visual Studio
開啟所複製存放庫的根資料夾。 幾秒後,Visual Studio 中的 CMake 支援就會建立執行和偵錯專案所需的所有項目。
當 Visual Studio 準備就緒時,在方案總管中,瀏覽至範例 iothub_client/samples/pnp/pnp_simple_thermostat/。
以滑鼠右鍵按一下 pnp_simple_thermostat.c 檔案,然後選取 [新增偵錯設定]。 選取 [預設]。
Visual Studio 會開啟 launch.vs.json 檔案。 編輯此檔案,以下列程式碼片段所示的方式,設定必要的環境變數。 當您完成下列程序後,您會記下範圍識別碼和註冊主要金鑰:設定 IoT 隨插即用的環境快速入門和教學課程:
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c", "projectTarget": "", "name": "pnp_simple_thermostat.c", "env": { "IOTHUB_DEVICE_SECURITY_TYPE": "DPS", "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>", "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device", "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>" } } ] }
以滑鼠右鍵按一下 pnp_simple_thermostat.c 檔案,然後選取 [設定為啟動項目]。
若要在 Visual Studio 中追蹤程式碼執行,請在 pnp_simple_thermostat.c 檔案的
main
函式新增中斷點。您現在可以從 [偵錯] 功能表中執行和偵錯範例。
裝置現在已可接收命令和屬性更新,並已開始將遙測資料傳送至中樞。 完成後續步驟後,請讓範例保持執行狀態。
使用 cmake 建置程式碼
您可以使用 cmake 命令列公用程式建置程式碼:
在裝置 SDK 根資料夾中建立 cmake 子目錄,並瀏覽至該資料夾:
cd azure-iot-sdk-c mkdir cmake cd cmake
執行下列命令,以建置 SDK 和範例:
cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF .. cmake --build .
執行裝置範例
在設定您的環境中,您建立了四個環境變數,以將範例設定為使用裝置佈建服務 (DPS) 來連線到您的 IoT 中樞:
- 值為
DPS
的 IOTHUB_DEVICE_SECURITY_TYPE - 使用 DPS 識別碼範圍的 IOTHUB_DEVICE_DPS_ID_SCOPE。
- 使用值
my-pnp-device
的 IOTHUB_DEVICE_DPS_DEVICE_ID。 - 使用註冊主要金鑰的 IOTHUB_DEVICE_DPS_DEVICE_KEY。
- 使用值
global.azure-devices-provisioning.net
的 IOTHUB_DEVICE_DPS_ENDPOINT。
若要深入了解範例設定,請參閱範例讀我檔案。
若要在 SDK 中執行範例應用程式,以模擬將遙測傳送到 IoT 中樞的 IoT 隨插即用裝置:
從 cmake 資料夾瀏覽至包含可執行檔的資料夾並且執行:
# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe
提示
若要在 Windows 上 Visual Studio 追蹤程式碼執行,請在 pnp_simple_thermostat.c 檔案中新增 main
函式的中斷點。
裝置現在已可接收命令和屬性更新,並已開始將遙測資料傳送至中樞。 完成後續步驟後,請讓範例保持執行狀態。
使用 Azure IoT 總管來驗證程式碼
當裝置用戶端範例啟動之後,請使用 Azure IoT 總管工具來驗證其是否正確運作。
開啟 Azure IoT 檔案總管。
在 [IoT 中樞] 頁面上,如果您尚未新增與 IoT 中樞的連線,請選取 [+ 新增連線]。 針對您先前建立的 IoT 中樞輸入連接字串,然後選取 [儲存]。
在 [IoT 隨插即用設定] 頁面上,選取 [+ 新增] > [本機資料夾],然後選取您用來儲存模型檔案的本機 models 資料夾。
在 [IoT 中樞] 頁面上,按一下您想要使用的中樞名稱。 您將會看見已向 IoT 中樞註冊的裝置清單。
按一下您先前建立之裝置的裝置識別碼。
左側功能表會顯示裝置可用的不同類型資訊。
選取 [IoT 隨插即用元件] 來檢視裝置的模型資訊。
您可以檢視裝置的不同元件。 預設元件和任何其他元件。 選取要使用的元件。
選取 [遙測] 頁面,然後選取 [啟動],以檢視裝置針對此元件傳送的遙測資料。
選取 [屬性 (唯讀)] 頁面,以檢視針對此元件回報的唯讀屬性。
選取 [屬性 (可寫入)] 頁面,檢視您可針對此元件更新的可寫入屬性。
依名稱選取屬性、為其輸入新的值,然後選取 [更新需要的值]。
若要看見新值顯示,請選取 [重新整理] 按鈕。
選取 [命令] 頁面,以檢視此元件的所有命令。
選取您想要測試的命令,並設定參數 (如果有的話)。 選取 [傳送命令],以便在裝置上呼叫命令。 在範例程式碼執行所在的命令提示字元視窗中,您可以看到您的裝置回應命令。
檢閱程式碼
此範例會實作一個簡單的 IoT 隨插即用控溫器裝置。 控溫器模型不會使用 IoT 隨插即用元件。 適用於控溫器裝置的 DTDL 模型檔案 \(英文\) 會定義裝置所實作的遙測、屬性和命令。
裝置程式碼會使用標準的函式連線到您的 IoT 中樞:
deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)
裝置會在連線要求中,傳送其實作之 DTDL 模型的模型識別碼。 傳送模型識別碼的裝置是 IoT 隨插即用裝置:
static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";
...
IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)
更新屬性、處理命令及傳送遙測資料的程式碼,與不使用 IoT 隨插即用慣例的裝置程式碼相同。
此程式碼會使用 Parson 程式庫來剖析從您的 IoT 中樞所傳送承載中的 JSON 物件:
// JSON parser
#include "parson.h"
清除資源
如果您已完成快速入門和教學課程,請參閱清除資源。
此教學課程示範如何建置範例 IoT 隨插即用裝置應用程式、將其連線至 IoT 中樞,然後使用 Azure IoT 總管工具檢視其傳送的遙測資料。 範例應用程式是以 C# 撰寫而成,隨附於適用於 C# 的 Azure IoT SDK 中。 解決方案建置人員可以使用 Azure IoT 總管工具來了解 IoT 隨插即用裝置的功能,而不需檢視任何裝置程式碼。
必要條件
在繼續之前,請確定您已設定環境,包括您的 IoT 中樞。
您可以在 Linux 或 Windows 上執行本教學課程。 本教學課程中的殼層命令會遵循路徑分隔符號 '/
' 的 Linux 慣例,如果您在 Windows 上遵循,請務必針對 '\
' 交換這些分隔符號。
下載程式碼
在此教學課程中,您會準備可用來複製及建置適用於 C# 的 Azure IoT SDK 存放庫的開發環境。
在您選擇的資料夾中開啟命令提示字元。 請執行下列命令,將適用於 C# (.NET) 的 Microsoft Azure IoT SDK GitHub 存放庫複製到下列位置:
git clone https://github.com/Azure/azure-iot-sdk-csharp
建置程式碼
您現在可以建置範例並加以執行。 執行下列命令以建置範例:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build
執行裝置範例
若要執行範例,請執行下列命令:
dotnet run
裝置現在已可接收命令和屬性更新,並已開始將遙測資料傳送至中樞。 完成後續步驟後,請讓範例保持執行狀態。
使用 Azure IoT 總管來驗證程式碼
當裝置用戶端範例啟動之後,請使用 Azure IoT 總管工具來驗證其是否正確運作。
開啟 Azure IoT 檔案總管。
在 [IoT 中樞] 頁面上,如果您尚未新增與 IoT 中樞的連線,請選取 [+ 新增連線]。 針對您先前建立的 IoT 中樞輸入連接字串,然後選取 [儲存]。
在 [IoT 隨插即用設定] 頁面上,選取 [+ 新增] > [本機資料夾],然後選取您用來儲存模型檔案的本機 models 資料夾。
在 [IoT 中樞] 頁面上,按一下您想要使用的中樞名稱。 您將會看見已向 IoT 中樞註冊的裝置清單。
按一下您先前建立之裝置的裝置識別碼。
左側功能表會顯示裝置可用的不同類型資訊。
選取 [IoT 隨插即用元件] 來檢視裝置的模型資訊。
您可以檢視裝置的不同元件。 預設元件和任何其他元件。 選取要使用的元件。
選取 [遙測] 頁面,然後選取 [啟動],以檢視裝置針對此元件傳送的遙測資料。
選取 [屬性 (唯讀)] 頁面,以檢視針對此元件回報的唯讀屬性。
選取 [屬性 (可寫入)] 頁面,檢視您可針對此元件更新的可寫入屬性。
依名稱選取屬性、為其輸入新的值,然後選取 [更新需要的值]。
若要看見新值顯示,請選取 [重新整理] 按鈕。
選取 [命令] 頁面,以檢視此元件的所有命令。
選取您想要測試的命令,並設定參數 (如果有的話)。 選取 [傳送命令],以便在裝置上呼叫命令。 在範例程式碼執行所在的命令提示字元視窗中,您可以看到您的裝置回應命令。
檢閱程式碼
此範例會實作一個簡單的 IoT 隨插即用控溫器裝置。 此範例實作的模型不會使用 IoT 隨插即用元件。 適用於控溫器裝置的 Digital Twins 定義語言 (DTDL) 模型檔案會定義裝置所實作的遙測、屬性和命令。
裝置程式碼會使用標準 CreateFromConnectionString
方法連線到您的 IoT 中樞。 裝置會在連線要求中,傳送其實作之 DTDL 模型的模型識別碼。 傳送模型識別碼的裝置是 IoT 隨插即用裝置:
private static void InitializeDeviceClientAsync()
{
var options = new ClientOptions
{
ModelId = ModelId,
};
s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
}
模型識別碼會儲存於程式碼中,如下列程式碼片段所示:
private const string ModelId = "dtmi:com:example:Thermostat;1";
更新屬性、處理命令及傳送遙測資料的程式碼,與不使用 IoT 隨插即用慣例的裝置程式碼相同。
此範例會使用 JSON 程式庫來剖析從您的 IoT 中樞傳送的承載中的 JSON 物件:
using Newtonsoft.Json;
...
DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);
清除資源
如果您已完成快速入門和教學課程,請參閱清除資源。
此教學課程示範如何建置範例 IoT 隨插即用裝置應用程式、將其連線至 IoT 中樞,然後使用 Azure IoT 總管工具檢視其傳送的遙測資料。 範例應用程式是以 Java 撰寫的,並隨附於適用於 Java 的 Azure IoT 裝置 SDK 中。 解決方案建置人員可以使用 Azure IoT 總管工具來了解 IoT 隨插即用裝置的功能,而不需檢視任何裝置程式碼。
必要條件
在繼續之前,請確定您已設定環境,包括您的 IoT 中樞。
您可以在 Linux 或 Windows 上執行本教學課程。 本教學課程中的殼層命令會遵循路徑分隔符號 '/
' 的 Linux 慣例,如果您在 Windows 上遵循,請務必針對 '\
' 交換這些分隔符號。
若要完成本教學課程,請在本機開發環境中安裝下列軟體:
- Java SE 開發套件 8 或更新版本 (部分機器翻譯)。
- Apache Maven 3。
下載程式碼
在此教學課程中,您會準備可用來複製及建置 Azure IoT 中樞裝置 Java SDK 的開發環境。
在您選擇的目錄中開啟命令提示字元。 執行下列命令,將 Azure IoT Java SDK 和程式庫 \(英文\) GitHub 存放庫複製到此位置:
git clone https://github.com/Azure/azure-iot-sdk-java.git
建置程式碼
在所複製 JAVA SDK 存放庫中,瀏覽至控溫器範例的根資料夾,並加以建置:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package
執行裝置範例
在設定您的環境中,您建立了四個環境變數,以將範例設定為使用裝置佈建服務 (DPS) 來連線到您的 IoT 中樞:
- 值為
DPS
的 IOTHUB_DEVICE_SECURITY_TYPE - 使用 DPS 識別碼範圍的 IOTHUB_DEVICE_DPS_ID_SCOPE。
- 使用值
my-pnp-device
的 IOTHUB_DEVICE_DPS_DEVICE_ID。 - 使用註冊主要金鑰的 IOTHUB_DEVICE_DPS_DEVICE_KEY。
- 使用值
global.azure-devices-provisioning.net
的 IOTHUB_DEVICE_DPS_ENDPOINT。
若要深入了解範例設定,請參閱範例讀我檔案。
於 /device/iot-device-samples/pnp-device-sample/thermostat-device-sample 資料夾,執行應用程式:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"
裝置現在已可接收命令和屬性更新,並已開始將遙測資料傳送至中樞。 完成後續步驟後,請讓範例保持執行狀態。
使用 Azure IoT 總管來驗證程式碼
當裝置用戶端範例啟動之後,請使用 Azure IoT 總管工具來驗證其是否正確運作。
開啟 Azure IoT 檔案總管。
在 [IoT 中樞] 頁面上,如果您尚未新增與 IoT 中樞的連線,請選取 [+ 新增連線]。 針對您先前建立的 IoT 中樞輸入連接字串,然後選取 [儲存]。
在 [IoT 隨插即用設定] 頁面上,選取 [+ 新增] > [本機資料夾],然後選取您用來儲存模型檔案的本機 models 資料夾。
在 [IoT 中樞] 頁面上,按一下您想要使用的中樞名稱。 您將會看見已向 IoT 中樞註冊的裝置清單。
按一下您先前建立之裝置的裝置識別碼。
左側功能表會顯示裝置可用的不同類型資訊。
選取 [IoT 隨插即用元件] 來檢視裝置的模型資訊。
您可以檢視裝置的不同元件。 預設元件和任何其他元件。 選取要使用的元件。
選取 [遙測] 頁面,然後選取 [啟動],以檢視裝置針對此元件傳送的遙測資料。
選取 [屬性 (唯讀)] 頁面,以檢視針對此元件回報的唯讀屬性。
選取 [屬性 (可寫入)] 頁面,檢視您可針對此元件更新的可寫入屬性。
依名稱選取屬性、為其輸入新的值,然後選取 [更新需要的值]。
若要看見新值顯示,請選取 [重新整理] 按鈕。
選取 [命令] 頁面,以檢視此元件的所有命令。
選取您想要測試的命令,並設定參數 (如果有的話)。 選取 [傳送命令],以便在裝置上呼叫命令。 在範例程式碼執行所在的命令提示字元視窗中,您可以看到您的裝置回應命令。
檢閱程式碼
此範例會實作一個簡單的 IoT 隨插即用控溫器裝置。 此範例實作的模型不會使用 IoT 隨插即用元件。 適用於控溫器裝置的 DTDL 模型檔案 \(英文\) 會定義裝置所實作的遙測、屬性和命令。
裝置程式碼會使用標準的 DeviceClient
類別連線到您的 IoT 中樞。 裝置會在連線要求中,傳送其實作之 DTDL 模型的模型識別碼。 傳送模型識別碼的裝置是 IoT 隨插即用裝置:
private static void initializeDeviceClient() throws URISyntaxException, IOException {
ClientOptions options = new ClientOptions();
options.setModelId(MODEL_ID);
deviceClient = new DeviceClient(deviceConnectionString, protocol, options);
deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);
if (throwable != null) {
log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
throwable.printStackTrace();
}
}, deviceClient);
deviceClient.open();
}
模型識別碼會儲存於程式碼中,如下列程式碼片段所示:
private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";
更新屬性、處理命令及傳送遙測資料的程式碼,與不使用 IoT 隨插即用慣例的裝置程式碼相同。
此範例會使用 JSON 程式庫來剖析從您的 IoT 中樞傳送的承載中的 JSON 物件:
import com.google.gson.Gson;
...
Date since = new Gson().fromJson(jsonRequest, Date.class);
清除資源
如果您已完成快速入門和教學課程,請參閱清除資源。
此教學課程示範如何建置範例 IoT 隨插即用裝置應用程式、將其連線至 IoT 中樞,然後使用 Azure IoT 總管工具檢視其傳送的遙測資料。 範例應用程式是專為 Node.js 所撰寫的,並且包含在適用於 Node.js 的 Azure IoT 裝置 SDK 中。 解決方案建置人員可以使用 Azure IoT 總管工具來了解 IoT 隨插即用裝置的功能,而不需檢視任何裝置程式碼。
必要條件
在繼續之前,請確定您已設定環境,包括您的 IoT 中樞。
您可以在 Linux 或 Windows 上執行本教學課程。 本教學課程中的殼層命令會遵循路徑分隔符號 '/
' 的 Linux 慣例,如果您在 Windows 上遵循,請務必針對 '\
' 交換這些分隔符號。
若要完成本教學課程,您的開發電腦上必須要有 Node.js。 您可以從 nodejs.org 下載多個平台的最新建議版本。
您可以使用下列命令,以確認開發電腦上目前的 Node.js 版本:
node --version
下載程式碼
您會在本教學課程中準備開發環境,以用來複製及建置適用於 Node.js 的 Azure IoT 中樞裝置 SDK。
在您選擇的目錄中開啟命令提示字元。 執行下列命令,將適用於 Node.js 的 Microsoft Azure IoT SDK GitHub 存放庫複製到下列位置:
git clone https://github.com/Azure/azure-iot-sdk-node
安裝必要的程式庫
您可以使用裝置 SDK 建置包含的範例程式碼。 您所建置的應用程式會模擬連線至 IoT 中樞的裝置。 應用程式會傳送遙測資料和屬性,並接收命令。
在本機終端機視窗中,移至您複製的存放庫資料夾,然後瀏覽至 /azure-iot-sdk-node/device/samples/javascript 資料夾。 然後執行下列命令來安裝必要的程式庫:
npm install
執行範例裝置
此範例會實作一個簡單的 IoT 隨插即用控溫器裝置。 此範例實作的模型不會使用 IoT 隨插即用元件。 適用於控溫器裝置的 DTDL 模型檔案 \(英文\) 會定義裝置所實作的遙測、屬性和命令。
開啟 pnp_simple_thermostat.js 檔案。 在此檔案中,您可以了解如何:
- 匯入必要的介面。
- 撰寫屬性更新處理常式和命令處理常式。
- 處理所需的屬性修補程式並傳送遙測。
- 選擇性地使用 Azure 裝置佈建服務 (DPS) 佈建您的裝置。
在 main 函式中,您可以看到其如何彙整在一起:
- 從您的連接字串建立裝置,或使用 DPS 進行佈建。)
- 使用 modelID 選項來指定 IoT 隨插即用裝置模型。
- 啟用命令處理常式。
- 將遙測資料從裝置傳送到您的中樞。
- 取得裝置對應項,並更新報告的屬性。
- 啟用所需的屬性更新處理常式。
在設定您的環境中,您建立了四個環境變數,以將範例設定為使用裝置佈建服務 (DPS) 來連線到您的 IoT 中樞:
- 值為
DPS
的 IOTHUB_DEVICE_SECURITY_TYPE - 使用 DPS 識別碼範圍的 IOTHUB_DEVICE_DPS_ID_SCOPE。
- 使用值
my-pnp-device
的 IOTHUB_DEVICE_DPS_DEVICE_ID。 - 使用註冊主要金鑰的 IOTHUB_DEVICE_DPS_DEVICE_KEY。
- 使用值
global.azure-devices-provisioning.net
的 IOTHUB_DEVICE_DPS_ENDPOINT。
若要深入了解範例設定,請參閱範例讀我檔案。
執行範例應用程式,以模擬將遙測傳送到 IoT 中樞的 IoT 隨插即用裝置。 若要執行範例應用程式,請使用下列命令:
node pnp_simple_thermostat.js
您會看到下列輸出,這表示裝置已開始將遙測資料傳送至中樞,且已可接收命令和屬性更新。
完成後續步驟後,請讓範例保持執行狀態。
使用 Azure IoT 總管來驗證程式碼
當裝置用戶端範例啟動之後,請使用 Azure IoT 總管工具來驗證其是否正確運作。
開啟 Azure IoT 檔案總管。
在 [IoT 中樞] 頁面上,如果您尚未新增與 IoT 中樞的連線,請選取 [+ 新增連線]。 針對您先前建立的 IoT 中樞輸入連接字串,然後選取 [儲存]。
在 [IoT 隨插即用設定] 頁面上,選取 [+ 新增] > [本機資料夾],然後選取您用來儲存模型檔案的本機 models 資料夾。
在 [IoT 中樞] 頁面上,按一下您想要使用的中樞名稱。 您將會看見已向 IoT 中樞註冊的裝置清單。
按一下您先前建立之裝置的裝置識別碼。
左側功能表會顯示裝置可用的不同類型資訊。
選取 [IoT 隨插即用元件] 來檢視裝置的模型資訊。
您可以檢視裝置的不同元件。 預設元件和任何其他元件。 選取要使用的元件。
選取 [遙測] 頁面,然後選取 [啟動],以檢視裝置針對此元件傳送的遙測資料。
選取 [屬性 (唯讀)] 頁面,以檢視針對此元件回報的唯讀屬性。
選取 [屬性 (可寫入)] 頁面,檢視您可針對此元件更新的可寫入屬性。
依名稱選取屬性、為其輸入新的值,然後選取 [更新需要的值]。
若要看見新值顯示,請選取 [重新整理] 按鈕。
選取 [命令] 頁面,以檢視此元件的所有命令。
選取您想要測試的命令,並設定參數 (如果有的話)。 選取 [傳送命令],以便在裝置上呼叫命令。 在範例程式碼執行所在的命令提示字元視窗中,您可以看到您的裝置回應命令。
清除資源
如果您已完成快速入門和教學課程,請參閱清除資源。
此教學課程示範如何建置範例 IoT 隨插即用裝置應用程式、將其連線至 IoT 中樞,然後使用 Azure IoT 總管工具檢視其傳送的遙測資料。 範例應用程式是以 Python 撰寫的,並隨附於適用於 Python 的 Azure IoT 中樞裝置 SDK 中。 解決方案建置人員可以使用 Azure IoT 總管工具來了解 IoT 隨插即用裝置的功能,而不需檢視任何裝置程式碼。
必要條件
在繼續之前,請確定您已設定環境,包括您的 IoT 中樞。
若要完成本教學課程,您必須在開發機器上安裝 Python。 如需目前的 Python 版本需求,請查看 Azure IoT Python SDK (英文)。 您可以使用下列命令來檢查 Python 版本:
python --version
您可以從 python.org \(英文\) 下載適用於多個平台的最新建議版本。
在本機 Python 環境中安裝套件,如下所示:
pip install azure-iot-device
複製 Python SDK IoT 存放庫:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
執行範例裝置
azure-iot-sdk-python/samples/pnp 資料夾包含適用於 IoT 隨插即用裝置的範例程式碼。 本教學課程使用 simple_thermostat.py 檔案。 此範例程式碼會實作與 IoT 隨插即用相容的裝置,並使用 Azure IoT Python 裝置用戶端程式庫。
在文字編輯器中開啟 simple_thermostat.py 檔案。 請注意該檔案如何:
定義唯一代表控溫器的單一裝置對應項模型識別碼 (DTMI)。 使用者必須知道 DTMI,並取決於裝置實作的案例。 針對目前的範例,此模型代表控溫器,具有與監視溫度相關聯的遙測、屬性和命令。
具有函式可定義命令處理常式實作。 您可以撰寫這些處理常式來定義裝置回應命令要求的方式。
具有函式可定義命令回應。 您會建立命令回應函式,以將回應傳回給您的 IoT 中樞。
定義輸入鍵盤接聽程式函式以讓您結束應用程式。
具有 main 函式。 main 函式:
使用裝置 SDK 來建立裝置用戶端,並連線到您的 IoT 中樞。
更新屬性。 控溫器模型將
targetTemperature
和maxTempSinceLastReboot
定義為控溫器的兩個屬性。 屬性會使用device_client
上定義的patch_twin_reported_properties
方法進行更新。使用 execute_command_listener 函式開始接聽命令要求。 此函式會針對來自服務的命令設定接聽程式進行接聽。 設定接聽程式時,您會提供
method_name
、user_command_handler
和create_user_response_handler
。user_command_handler
函式會定義裝置收到命令時應執行的動作。create_user_response_handler
函式會建立要在命令成功執行時傳送至 IoT 中樞的回應。 您可以在入口網站中檢視此回應。
開始傳送遙測。 pnp_send_telemetry 是在 pnp_methods.py 檔案中定義。 範例程式碼會使用迴圈,每 8 秒呼叫此函式。
停用所有接聽程式和工作,並且在您按下 Q 或 q 時結束迴圈。
在設定您的環境中,您建立了四個環境變數,以將範例設定為使用裝置佈建服務 (DPS) 來連線到您的 IoT 中樞:
- 值為
DPS
的 IOTHUB_DEVICE_SECURITY_TYPE - 使用 DPS 識別碼範圍的 IOTHUB_DEVICE_DPS_ID_SCOPE。
- 使用值
my-pnp-device
的 IOTHUB_DEVICE_DPS_DEVICE_ID。 - 使用註冊主要金鑰的 IOTHUB_DEVICE_DPS_DEVICE_KEY。
- 使用值
global.azure-devices-provisioning.net
的 IOTHUB_DEVICE_DPS_ENDPOINT。
若要深入了解範例設定,請參閱範例讀我檔案。
現在您已看過程式碼,請使用下列命令來執行範例:
python simple_thermostat.py
您會看到下列輸出,這表示裝置正在將遙測資料傳送至中樞,且現在已可接收命令和屬性更新:
Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message
完成後續步驟後,請讓範例保持執行狀態。
使用 Azure IoT 總管來驗證程式碼
當裝置用戶端範例啟動之後,請使用 Azure IoT 總管工具來驗證其是否正確運作。
開啟 Azure IoT 檔案總管。
在 [IoT 中樞] 頁面上,如果您尚未新增與 IoT 中樞的連線,請選取 [+ 新增連線]。 針對您先前建立的 IoT 中樞輸入連接字串,然後選取 [儲存]。
在 [IoT 隨插即用設定] 頁面上,選取 [+ 新增] > [本機資料夾],然後選取您用來儲存模型檔案的本機 models 資料夾。
在 [IoT 中樞] 頁面上,按一下您想要使用的中樞名稱。 您將會看見已向 IoT 中樞註冊的裝置清單。
按一下您先前建立之裝置的裝置識別碼。
左側功能表會顯示裝置可用的不同類型資訊。
選取 [IoT 隨插即用元件] 來檢視裝置的模型資訊。
您可以檢視裝置的不同元件。 預設元件和任何其他元件。 選取要使用的元件。
選取 [遙測] 頁面,然後選取 [啟動],以檢視裝置針對此元件傳送的遙測資料。
選取 [屬性 (唯讀)] 頁面,以檢視針對此元件回報的唯讀屬性。
選取 [屬性 (可寫入)] 頁面,檢視您可針對此元件更新的可寫入屬性。
依名稱選取屬性、為其輸入新的值,然後選取 [更新需要的值]。
若要看見新值顯示,請選取 [重新整理] 按鈕。
選取 [命令] 頁面,以檢視此元件的所有命令。
選取您想要測試的命令,並設定參數 (如果有的話)。 選取 [傳送命令],以便在裝置上呼叫命令。 在範例程式碼執行所在的命令提示字元視窗中,您可以看到您的裝置回應命令。
清除資源
如果您已完成快速入門和教學課程,請參閱清除資源。
如果要開發「受限裝置」,則可以使用 IoT 隨插即用搭配以下項目:
本文包含這些受限案例的連結和資源。
必要條件
下列許多範例都需要特定的硬體裝置,而且每個範例的必要條件都不同。 請遵循相關範例的連結以取得詳細的必要條件、設定和建置指示。
使用適用於內嵌 C 的 SDK
適用於內嵌 C 的 SDK 提供輕量型解決方案,包括使用 IoT 隨插即用慣例,以將受限裝置連線至 Azure IoT 服務。 下列連結包含 MCU 型裝置的範例,可作為教育及偵錯之用。
使用 MCU 型裝置
如需使用適用於內嵌 C 的 SDK、裝置佈建服務和 MCU 上 IoT 隨插即用的完整端對端教學課程,請參閱重新規劃 PIC-IoT Wx 開發面,以透過 IoT 中樞裝置佈建服務連線至 Azure。
簡介範例
適用於內嵌 C 的 SDK 存放庫包含數個範例,示範如何使用 IoT 隨插即用:
注意
這些範例會示範在 Windows 和 Linux 上執行,作為教育及偵錯之用。 在生產案例中,範例僅適用於受限裝置。
使用 Eclipse ThreadX
Eclipse ThreadX 包含輕量層,可將原生連線新增至 Azure IoT 雲端服務。 此層提供簡單的機制,可在使用 Eclipse ThreadX 的進階功能時,將限制裝置連線到 Azure IoT。 若要深入瞭解,請參閱 Eclipse ThreadX 概觀。
工具鏈
Eclipse ThreadX 範例會提供不同類型的 IDE 和工具鏈組合,例如:
- IAR:IAR 的 Embedded Workbench IDE
- GCC/CMake:在開放原始碼 CMake 建置系統和 GNU Arm Embedded 工具鏈之上進行建置。
- MCUExpresso:NXP 的 MCUXpresso IDE
- STM32Cube:STMicroelectronics 的 STM32Cube IDE
- MPLAB:Microchip 的 MPLAB X IDE
範例
下表列出示範如何使用 Eclipse ThreadX 和 IoT 隨插即用 在不同的裝置上開始使用的範例:
製造商 | 裝置 | 範例 |
---|---|---|
Microchip | ATSAME54-XPRO | GCC/CMake • IAR • MPLAB |
MXCHIP | AZ3166 | GCC/CMake |
NXP | MIMXRT1060-EVK | GCC/CMake • IAR • MCUXpresso |
STMicroelectronics | 32F746GDISCOVERY | IAR • STM32Cube |
STMicroelectronics | B-L475E-IOT01 | GCC/CMake • IAR • STM32Cube |
STMicroelectronics | B-L4S5I-IOT01 | GCC/CMake • IAR • STM32Cube |
下一步
在本教學課程中,您已了解如何將 IoT 隨插即用裝置連線至 IoT 中樞。 若要深入了解如何建置與 IoT 隨插即用裝置互動的解決方案,請參閱: