您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

快速入门:将 Linux 或 Windows 上运行的示例 IoT 即插即用设备应用程序连接到 IoT 中心

本快速入门介绍如何生成示例 IoT 即插即用设备应用程序,将其连接到 IoT 中心,并使用 Azure IoT 资源管理器工具来查看它发送的遥测数据。 该示例应用程序以 C 编写,包含在适用于 C 的 Azure IoT 设备 SDK 中。解决方案构建者可以使用 Azure IoT 资源管理器工具来了解 IoT 即插即用设备的功能,而无需查看任何设备代码。

浏览代码

先决条件

请确保设置环境(包括 IoT 中心)后再继续。

可以在 Linux 或 Windows 上运行此快速入门。 本快速入门中的 shell 命令遵循适用于路径分隔符“/”的 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 环境上安装以下软件:

下载代码

在本快速入门中,你将准备一个用于克隆和生成 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

此操作需要几分钟才能完成。

生成代码

使用设备 SDK 生成包含的示例代码:

  1. 在设备 SDK 根文件夹中创建一个 cmake 子目录,并导航到该文件夹:

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. 运行以下命令以生成 SDK 和示例:

    cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF ..
    cmake --build .
    

提示

在 Windows 上,可以在 Visual Studio 2019 中打开 cmake 命令生成的解决方案。 打开 cmake 目录中的 azure_iot_sdks .sln 项目文件,并在解决方案中将 pnp_simple_thermostat 项目设置为“启动项目”。 现在可以在 Visual Studio 中生成示例,并在调试模式下运行它。

运行设备示例

设置环境部分创建了四个环境变量来配置示例,以使用设备预配服务 (DPS) 连接到 IoT 中心:

  • 具有值 DPS 的 IOTHUB_DEVICE_SECURITY_TYPE
  • 包含 DPS ID 范围的 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 资源管理器工具验证它是否正常工作。

  1. 打开 Azure IoT 资源管理器。

  2. 在“IoT 中心”页上,如果尚未将连接添加到 IoT 中心,请选择“+ 添加连接”。 输入先前创建的 IoT 中心的连接字符串,然后选择“保存”。

  3. 在“IoT 即插即用设置”页上,选择“+ 添加”>“本地文件夹”,然后选择在其中保存了模型文件的本地“模型”文件夹。

  4. 在“IoT 中心”页上,单击要使用的中心的名称。 你将看到已注册到 IoT 中心的设备的列表。

  5. 单击前面创建的设备的“设备 ID”。

  6. 左侧菜单显示了可用于设备的不同类型的信息。

  7. 选择“IoT 即插即用组件”以查看设备的模型信息。

  8. 可以查看设备的不同组件。 默认组件和任何其他组件。 选择要使用的组件。

  9. 选择“遥测”页,然后选择“开始”,查看设备正在为此组件发送的遥测数据。

  10. 选择“属性(只读)”页以查看为此组件报告的只读属性。

  11. 选择“属性(可写)”页以查看可以为此组件更新的可写属性。

  12. 按名称选择属性,为其输入新值,然后选择“更新所需值”。

  13. 若要查看显示的新值,请选择“刷新”按钮。

  14. 选择“命令”页以查看此组件的所有命令。

  15. 选择要测试参数的命令(如果有)。 选择“发送命令”以调用设备上的命令。 可以在正在运行示例代码的命令提示符窗口中看到你的设备响应命令。

查看代码

此示例实现了一个简单的 IoT 即插即用恒温器设备。 此示例实现的模型不使用 IoT 即插即用组件设备的 DTDL 模型文件定义了设备实现的遥测、属性和命令。

设备代码使用标准函数连接到 IoT 中心:

deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)

设备发送在连接请求中实现的 DTDL 模型的模型 ID。 发送模型 ID 的设备是 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 示例中。 解决方案构建者可以使用 Azure IoT 资源管理器工具来了解 IoT 即插即用设备的功能,而无需查看任何设备代码。

浏览代码

先决条件

请确保设置环境(包括 IoT 中心)后再继续。

若要在 Windows 上完成本快速入门,需要在开发计算机上安装以下软件:

下载代码

在本快速入门中,你将准备一个用于克隆和构建用于 C# 的 Azure IoT 示例存储库的开发环境。

在所选文件夹中打开命令提示符。 运行以下命令,将用于 C# (.NET) 的 Microsoft Azure IoT 示例 GitHub 存储库克隆到此位置:

git clone  https://github.com/Azure-Samples/azure-iot-samples-csharp.git

生成代码

现在可以在 Visual Studio 中生成示例,并在调试模式下运行它。

  1. 在 Visual Studio 2019 中打开“azure-iot-samples-csharp\iot-hub\Samples\device\PnpDeviceSamples\Thermostat\Thermostat.csproj”项目文件。

  2. 在 Visual Studio 中,导航到“项目”>“恒温器属性”>“调试”。 然后,将以下环境变量添加到项目:

    名称
    IOTHUB_DEVICE_SECURITY_TYPE DPS
    IOTHUB_DEVICE_DPS_ENDPOINT global.azure-devices-provisioning.net
    IOTHUB_DEVICE_DPS_ID_SCOPE 在完成设置环境时记下的值
    IOTHUB_DEVICE_DPS_DEVICE_ID my-pnp-device
    IOTHUB_DEVICE_DPS_DEVICE_KEY 在完成设置环境时记下的值

现在可以在 Visual Studio 中生成示例,并在调试模式下运行它。

运行设备示例

若要在 Windows 上的 Visual Studio 中跟踪代码执行,请在 program.cs 文件中向 main 函数添加一个断点。

设备现在可以接收命令和属性更新,并已开始向中心发送遥测数据。 在执行后续步骤时,保持示例处于运行状态。

使用 Azure IoT 资源管理器验证代码

设备客户端示例启动后,使用 Azure IoT 资源管理器工具验证它是否正常工作。

  1. 打开 Azure IoT 资源管理器。

  2. 在“IoT 中心”页上,如果尚未将连接添加到 IoT 中心,请选择“+ 添加连接”。 输入先前创建的 IoT 中心的连接字符串,然后选择“保存”。

  3. 在“IoT 即插即用设置”页上,选择“+ 添加”>“本地文件夹”,然后选择在其中保存了模型文件的本地“模型”文件夹。

  4. 在“IoT 中心”页上,单击要使用的中心的名称。 你将看到已注册到 IoT 中心的设备的列表。

  5. 单击前面创建的设备的“设备 ID”。

  6. 左侧菜单显示了可用于设备的不同类型的信息。

  7. 选择“IoT 即插即用组件”以查看设备的模型信息。

  8. 可以查看设备的不同组件。 默认组件和任何其他组件。 选择要使用的组件。

  9. 选择“遥测”页,然后选择“开始”,查看设备正在为此组件发送的遥测数据。

  10. 选择“属性(只读)”页以查看为此组件报告的只读属性。

  11. 选择“属性(可写)”页以查看可以为此组件更新的可写属性。

  12. 按名称选择属性,为其输入新值,然后选择“更新所需值”。

  13. 若要查看显示的新值,请选择“刷新”按钮。

  14. 选择“命令”页以查看此组件的所有命令。

  15. 选择要测试参数的命令(如果有)。 选择“发送命令”以调用设备上的命令。 可以在正在运行示例代码的命令提示符窗口中看到你的设备响应命令。

查看代码

此示例实现了一个简单的 IoT 即插即用恒温器设备。 此示例实现的模型不使用 IoT 即插即用组件恒温器设备的数字孪生定义语言 (DTDL) 模型文件定义了设备实现的遥测、属性和命令。

设备代码使用标准 CreateFromConnectionString 方法连接到 IoT 中心。 设备发送在连接请求中实现的 DTDL 模型的模型 ID。 发送模型 ID 的设备是 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}.");
  });
}

模型 ID 存储在代码中,如以下代码片段所示:

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 中心)后再继续。

要完成本快速入门,需在本地 Windows 环境上安装以下软件:

下载代码

在本快速入门中,你将准备一个用于克隆和生成 Azure IoT 中心设备 Java SDK 的开发环境。

在所选目录中打开命令提示符。 执行以下命令将 Azure IoT Java SDK 和库 GitHub 存储库克隆到此位置:

git clone https://github.com/Azure/azure-iot-sdk-java.git

生成代码

在 Windows 上,导航到克隆的 Java SDK 存储库的根文件夹。

运行以下命令以生成示例应用程序:

mvn install -T 2C -DskipTests

运行设备示例

设置环境部分创建了四个环境变量来配置示例,以使用设备预配服务 (DPS) 连接到 IoT 中心:

  • 具有值 DPS 的 IOTHUB_DEVICE_SECURITY_TYPE
  • 包含 DPS ID 范围的 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 资源管理器工具验证它是否正常工作。

  1. 打开 Azure IoT 资源管理器。

  2. 在“IoT 中心”页上,如果尚未将连接添加到 IoT 中心,请选择“+ 添加连接”。 输入先前创建的 IoT 中心的连接字符串,然后选择“保存”。

  3. 在“IoT 即插即用设置”页上,选择“+ 添加”>“本地文件夹”,然后选择在其中保存了模型文件的本地“模型”文件夹。

  4. 在“IoT 中心”页上,单击要使用的中心的名称。 你将看到已注册到 IoT 中心的设备的列表。

  5. 单击前面创建的设备的“设备 ID”。

  6. 左侧菜单显示了可用于设备的不同类型的信息。

  7. 选择“IoT 即插即用组件”以查看设备的模型信息。

  8. 可以查看设备的不同组件。 默认组件和任何其他组件。 选择要使用的组件。

  9. 选择“遥测”页,然后选择“开始”,查看设备正在为此组件发送的遥测数据。

  10. 选择“属性(只读)”页以查看为此组件报告的只读属性。

  11. 选择“属性(可写)”页以查看可以为此组件更新的可写属性。

  12. 按名称选择属性,为其输入新值,然后选择“更新所需值”。

  13. 若要查看显示的新值,请选择“刷新”按钮。

  14. 选择“命令”页以查看此组件的所有命令。

  15. 选择要测试参数的命令(如果有)。 选择“发送命令”以调用设备上的命令。 可以在正在运行示例代码的命令提示符窗口中看到你的设备响应命令。

查看代码

此示例实现了一个简单的 IoT 即插即用恒温器设备。 此示例实现的模型不使用 IoT 即插即用组件调温器设备的 DTDL 模型文件定义了设备实现的遥测、属性和命令。

设备代码使用标准 DeviceClient 类连接到 IoT 中心。 设备发送在连接请求中实现的 DTDL 模型的模型 ID。 发送模型 ID 的设备是 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();
}

模型 ID 存储在代码中,如以下代码片段所示:

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 中心)后再继续。

若要完成本快速入门,需要在开发计算机上使用 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 中心的设备。 应用程序将发送遥测数据和属性,并接收命令。

  1. 在本地终端窗口中,前往克隆存储库的文件夹,导航到 /azure-iot-sdk-node/device/samples/pnp 文件夹。 然后运行以下命令以安装所需的库:

    npm install
    
  2. 使用之前记下的设备连接字符串配置环境变量:

    set IOTHUB_DEVICE_CONNECTION_STRING=<YourDeviceConnectionString>
    

运行示例设备

此示例实现了一个简单的 IoT 即插即用恒温器设备。 此示例实现的模型不使用 IoT 即插即用组件设备的 DTDL 模型文件定义了设备实现的遥测、属性和命令。

打开“simple_thermostat .js”文件。 在此文件中,可以了解如何:

  1. 导入所需的接口。
  2. 编写属性更新处理程序和命令处理程序。
  3. 处理所需的属性修补程序并发送遥测数据。
  4. 选择性地使用 Azure 设备预配服务 (DPS) 预配设备。

在 main 函数中,可以了解如何逐步执行以下步骤:

  1. 通过连接字符串创建设备,或使用 DPS 对其进行预配。
  2. 使用 modelID 选项指定 IoT 即插即用设备型号。
  3. 启用命令处理程序。
  4. 将遥测数据从设备发送到中心。
  5. 获取设备孪生,并更新已报告的属性。
  6. 启用所需的属性更新处理程序。

设置环境部分创建了四个环境变量来配置示例,以使用设备预配服务 (DPS) 连接到 IoT 中心:

  • 具有值 DPS 的 IOTHUB_DEVICE_SECURITY_TYPE
  • 包含 DPS ID 范围的 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 simple_thermostat.js

将显示以下输出,这表明设备已开始向中心发送遥测数据,现在可以接收命令和属性更新。

设备确认消息

在执行后续步骤时,保持示例处于运行状态。

使用 Azure IoT 资源管理器验证代码

设备客户端示例启动后,使用 Azure IoT 资源管理器工具验证它是否正常工作。

  1. 打开 Azure IoT 资源管理器。

  2. 在“IoT 中心”页上,如果尚未将连接添加到 IoT 中心,请选择“+ 添加连接”。 输入先前创建的 IoT 中心的连接字符串,然后选择“保存”。

  3. 在“IoT 即插即用设置”页上,选择“+ 添加”>“本地文件夹”,然后选择在其中保存了模型文件的本地“模型”文件夹。

  4. 在“IoT 中心”页上,单击要使用的中心的名称。 你将看到已注册到 IoT 中心的设备的列表。

  5. 单击前面创建的设备的“设备 ID”。

  6. 左侧菜单显示了可用于设备的不同类型的信息。

  7. 选择“IoT 即插即用组件”以查看设备的模型信息。

  8. 可以查看设备的不同组件。 默认组件和任何其他组件。 选择要使用的组件。

  9. 选择“遥测”页,然后选择“开始”,查看设备正在为此组件发送的遥测数据。

  10. 选择“属性(只读)”页以查看为此组件报告的只读属性。

  11. 选择“属性(可写)”页以查看可以为此组件更新的可写属性。

  12. 按名称选择属性,为其输入新值,然后选择“更新所需值”。

  13. 若要查看显示的新值,请选择“刷新”按钮。

  14. 选择“命令”页以查看此组件的所有命令。

  15. 选择要测试参数的命令(如果有)。 选择“发送命令”以调用设备上的命令。 可以在正在运行示例代码的命令提示符窗口中看到你的设备响应命令。

清理资源

如果已完成快速入门和教程,请参阅清理资源

本快速入门介绍如何生成示例 IoT 即插即用设备应用程序,将其连接到 IoT 中心,并使用 Azure IoT 资源管理器工具来查看它发送的遥测数据。 该示例应用程序针对 Python 编写,包含在用于 Python 的 Azure IoT 中心设备 SDK 中。 解决方案构建者可以使用 Azure IoT 资源管理器工具来了解 IoT 即插即用设备的功能,而无需查看任何设备代码。

浏览代码

先决条件

请确保设置环境(包括 IoT 中心)后再继续。

若要完成本快速入门,需要在开发计算机上使用 Python 3.7。 可以从 python.org 下载适用于多个平台的最新推荐版本。可以使用以下命令检查 Python 版本:

python --version

在本地 python 环境中安装该包,如下所示:

pip install azure-iot-device

克隆 Python SDK IoT 存储库,并查看 master:

git clone https://github.com/Azure/azure-iot-sdk-python

运行示例设备

azure-iot-sdk-python\azure-iot-device\samples\pnp 文件夹包含 IoT 即插即用设备的示例代码。 此快速入门使用 simple_thermostat.py 文件。 此示例代码实现 IoT 即插即用兼容设备,并使用 Azure IoT Python 设备客户端库。

在文本编辑器中打开 simple_thermostat.py 文件。 请注意操作方式:

  1. 定义唯一表示调温器的单一设备孪生模型标识符 (DTMI)。 DTMI 必须为用户所熟知,并且根据设备实现方案而异。 对于当前示例,该模型表示调温器,其具有与监视温度关联的遥测、属性和命令。

  2. 具有用于定义命令处理程序实现的函数。 你可编写这些处理程序以定义设备对命令请求的响应方式。

  3. 具有用于定义命令响应的函数。 你可创建命令响应函数以将响应发送回 IoT 中心。

  4. 定义输入键盘侦听器函数,以便退出应用程序。

  5. 具有 main 函数。 main 函数:

    1. 使用设备 SDK 创建设备客户端并连接到 IoT 中心。

    2. 更新属性。 使用的模型(调温器)将 targetTemperaturemaxTempSinceLastReboot 定义为调温器的两个属性,这就是我们将使用的内容。 使用 device_client 上定义的 patch_twin_reported_properties 方法更新属性。

    3. 使用 execute_command_listener 函数开始侦听命令请求。 该函数设置侦听器以侦听来自服务的命令。 设置侦听器时,提供 method_nameuser_command_handlercreate_user_response_handler

      • user_command_handler 函数定义设备在收到命令时应执行的操作。 例如,如果闹钟响了,接收此命令的效果是你该醒了。 将此视为所调用命令的“效果”。
      • 命令成功执行时,create_user_response_handler 函数将创建要发送到 IoT 中心的响应。 例如,如果你的闹钟响了,则按下推迟以作为响应,这是对服务的反馈。 将此视为你给服务的答复。 可以在门户中查看此响应。
    4. 开始发送遥测。 pnp_methods.py 文件中定义了 pnp_send_telemetry。 示例代码使用循环每隔 8 秒调用此函数。

    5. 禁用所有侦听器和任务,并在按 Q 或 q 时退出循环 。

设置环境部分创建了四个环境变量来配置示例,以使用设备预配服务 (DPS) 连接到 IoT 中心:

  • 具有值 DPS 的 IOTHUB_DEVICE_SECURITY_TYPE
  • 包含 DPS ID 范围的 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 资源管理器工具验证它是否正常工作。

  1. 打开 Azure IoT 资源管理器。

  2. 在“IoT 中心”页上,如果尚未将连接添加到 IoT 中心,请选择“+ 添加连接”。 输入先前创建的 IoT 中心的连接字符串,然后选择“保存”。

  3. 在“IoT 即插即用设置”页上,选择“+ 添加”>“本地文件夹”,然后选择在其中保存了模型文件的本地“模型”文件夹。

  4. 在“IoT 中心”页上,单击要使用的中心的名称。 你将看到已注册到 IoT 中心的设备的列表。

  5. 单击前面创建的设备的“设备 ID”。

  6. 左侧菜单显示了可用于设备的不同类型的信息。

  7. 选择“IoT 即插即用组件”以查看设备的模型信息。

  8. 可以查看设备的不同组件。 默认组件和任何其他组件。 选择要使用的组件。

  9. 选择“遥测”页,然后选择“开始”,查看设备正在为此组件发送的遥测数据。

  10. 选择“属性(只读)”页以查看为此组件报告的只读属性。

  11. 选择“属性(可写)”页以查看可以为此组件更新的可写属性。

  12. 按名称选择属性,为其输入新值,然后选择“更新所需值”。

  13. 若要查看显示的新值,请选择“刷新”按钮。

  14. 选择“命令”页以查看此组件的所有命令。

  15. 选择要测试参数的命令(如果有)。 选择“发送命令”以调用设备上的命令。 可以在正在运行示例代码的命令提示符窗口中看到你的设备响应命令。

清理资源

如果已完成快速入门和教程,请参阅清理资源

如果要针对受限制设备进行开发,可以将 IoT 即插即用与以下内容一起使用:

本文包括这些受限制方案的链接和资源。

先决条件

下面的许多示例都需要特定的硬件设备,每个示例的先决条件各不相同。 有关详细的先决条件、配置和构建说明,请访问相关示例的链接。

使用 SDK for Embedded C

SDK for Embedded C 提供了一种将受限制设备连接到 Azure IoT 服务的轻量级解决方案,包括使用 IoT 即插即用约定。 以下链接包括基于 MCU 的设备的示例,用于教育和调试目的。

使用基于 MCU 的设备

有关在 MCU 上使用 SDK for Embedded C、设备预配服务和 IoT 即插即用的完整端到端教程,请参阅改造 PIC-IoT Wx 开发板以通过 IoT 中心设备预配服务连接到 Azure

介绍性示例

SDK for Embedded C 存储库包含几个示例,演示如何使用 IoT 即插即用:

备注

这些示例在 Windows 和 Linux 上演示运行,用于教育和调试目的。 在生产方案中,这些示例仅适用于受限制设备。

使用 Azure RTOS

Azure RTOS 包含一个轻量层,可将本机连接添加到 Azure IoT 云服务。 该层提供一种简单的机制,用于将受限制设备连接到 Azure IoT,同时使用 Azure RTOS 的高级功能。 要了解更多信息,请参阅什么是 Microsoft Azure RTOS

工具链

Azure RTOS 示例包含了各种类型的 IDE 和工具链组合,例如:

示例

下表列出了有关演示采用 Azure RTOS 和 IoT 即插即用的不同设备的入门示例:

制造商 设备 示例
Microchip ATSAME54-XPRO GCC/CMakeIARMPLAB
MXCHIP AZ3166 GCC/CMake
NXP MIMXRT1060-EVK GCC/CMakeIARMCUXpresso
STMicroelectronics 32F746GDISCOVERY IARSTM32Cube
STMicroelectronics B-L475E-IOT01 GCC/CMakeIARSTM32Cube
STMicroelectronics B-L4S5I-IOT01 GCC/CMakeIARSTM32Cube

后续步骤

本快速入门已介绍如何将 IoT 即插即用设备连接到 IoT 中心。 若要详细了解如何生成可与 IoT 即插即用设备交互的解决方案,请参阅: