你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:将来自设备的遥测数据发送到 Azure IoT Central
适用对象:设备应用程序开发人员
本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 首先,创建适用于托管设备的 Azure IoT Central 应用程序。 然后,使用 Azure IoT 设备 SDK 示例来创建温度控制器,将此控制器安全地连接到 IoT Central,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT Central 的模拟传感器数据。
提示
开发人员有多种选项将设备连接到 Azure IoT。 若要了解连接选项,请参阅概述:面向 Azure IoT 设备开发人员的连接选项。
先决条件
本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:
- Windows 10
- Ubuntu 20.04 LTS
- 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10
为操作系统安装剩余必备组件。
Linux 或 Raspberry Pi OS
若要在 Linux 和 Raspberry Pi OS 上完成本快速入门教程,请安装以下软件:
使用 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 上完成本快速入门,请安装 Visual Studio 2019 并添加 C 和 C++ 开发所需的组件。
- 对于新用户,请安装 Visual Studio(Community、Professional 或 Enterprise)2019。 下载要安装的版本,然后启动安装程序。
注意
对于现有 Visual Studio 2019 用户,请选择 Windows“开始”,键入“Visual Studio 安装程序”,然后启动安装程序。
- 在安装程序“工作负载”选项卡中,选择“使用 C++ 的桌面开发”工作负载 。
- 在安装程序“单个组件”选项卡中,选择“适用于 Windows 的 Git” 。
- 进行安装。
创建应用程序
可以通过多种方式将设备连接到 Azure IoT。 本部分介绍如何使用 Azure IoT Central 连接设备。 IoT Central 是一个 IoT 应用程序平台,可降低管理 IoT 解决方案中的设备的成本和复杂性。
要创建新的应用程序:
浏览到 Azure IoT Central,并使用 Microsoft 个人帐户、工作帐户或学校帐户登录。
导航到“生成”,然后选择“自定义应用”。
在“应用程序名称”中,输入唯一的名称或使用已生成的名称。
在“URL”中,输入易记的应用程序 URL 前缀,或使用已生成的 URL 前缀。
将“应用程序模板”保持设置为“自定义应用程序”。
选择一个“定价计划”选项。
- 若要免费使用该应用程序 7 天,请选择“免费”。 在免费的应用程序过期之前,可将其转换为标准定价。
- 或者,可以选择标准定价计划。 如果选择标准定价,将会显示更多选项,并且你将需要设置“目录”、“Azure 订阅”和“位置”。 若要了解定价,请参阅 Azure IoT Central 定价。
- “目录”是将在其中创建应用程序的 Azure Active Directory 。 Azure Active Directory 包含用户标识、凭据和其他组织信息。 如果你没有 Azure Active Directory,则在你创建 Azure 订阅时,系统会创建一个。
- 使用 Azure 订阅可以创建 Azure 服务的实例。 IoT Central 将在订阅中预配资源。 如果你没有订阅,可免费创建一个。 如果你有订阅,可在下拉列表中选择它。
- “位置”是要在其中创建应用程序的 Azure 地理位置。 请选择实际上距离设备最近的位置以获得最佳性能。 选择一个位置后,无法将应用程序转移到其他位置。
选择“创建”。
IoT Central 在创建应用程序后,会将你重定向到应用程序仪表板。
添加设备
在本部分,你要将新设备添加到 IoT Central 应用程序。 该设备是设备模板的实例,表示要连接到应用程序的设备。
若要创建新设备,请执行以下操作:
在左窗格中,依次选择“设备”、“+新建”。
将“设备模板”设置为“未分配”,将“模拟此设备?”设置为“否”。
设置易记的“设备名称”和“设备 ID”。 或者,也可以使用生成的值。
选择“创建”。
创建的设备显示在“所有设备”列表中。
若要获取新设备的连接详细信息:
在“所有设备”列表中,单击链接设备的名称以显示详细信息。
在顶部菜单中,选择“连接”。
“设备连接”对话框显示了连接详细信息:
将“设备连接”对话框中的以下值复制到安全位置。 你要使用这些值将设备连接到 IoT Central。
ID scope
Device ID
Primary key
运行设备示例
在此部分,你将配置你的本地环境,安装 Azure IoT C 设备 SDK,并运行一个创建温度控制器的示例。
配置环境
打开控制台以安装 Azure IoT C 设备 SDK,并运行代码示例。 对于 Windows,请选择“开始”,键入“适用于 VS 2019 的开发人员命令提示”,然后打开控制台。 对于 Linux 和 Raspberry Pi OS,打开 Bash 命令终端。
使用适用于你的控制台的适当命令设置以下环境变量。 设备使用这些值连接到 IoT Central。 对于
IOTHUB_DEVICE_DPS_ID_SCOPE
、IOTHUB_DEVICE_DPS_DEVICE_KEY
和IOTHUB_DEVICE_DPS_DEVICE_ID
,请使用之前保存的设备连接值。CMD
set IOTHUB_DEVICE_SECURITY_TYPE=DPS set IOTHUB_DEVICE_DPS_ID_SCOPE=<application ID scope> set IOTHUB_DEVICE_DPS_DEVICE_KEY=<device primary key> set IOTHUB_DEVICE_DPS_DEVICE_ID=<your device ID> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net
注意
在 Windows CMD 中,请不要在变量值的两边加上引号。
Bash
export IOTHUB_DEVICE_SECURITY_TYPE='DPS' export IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' export IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' export IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' export IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
安装 SDK 和示例
导航到要用于克隆示例存储库的本地文件夹。
将 Azure IoT C 设备 SDK 复制到本地计算机。
git clone https://github.com/Azure/azure-iot-sdk-c.git
导航到 SDK 的根文件夹,并运行以下命令以更新依赖项:
cd azure-iot-sdk-c git submodule update --init
此操作需要几分钟才能完成。
要生成 SDK 和示例,请运行以下命令:
cmake -Bcmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF cmake --build cmake
运行代码
使用适用于控制台的命令运行示例代码:
CMD
cmake\iothub_client\samples\pnp\pnp_temperature_controller\Debug\pnp_temperature_controller.exe
Bash
cmake/iothub_client/samples/pnp/pnp_temperature_controller/pnp_temperature_controller
设备连接到 IoT Central 应用程序后,它会连接到你在该应用程序中创建的设备实例,并开始发送遥测数据。 控制台中显示了连接详细信息和遥测输出:
Info: Initiating DPS client to retrieve IoT Hub connection information -> 17:03:08 CONNECT | VER: 4 | KEEPALIVE: 0 | FLAGS: 194 | USERNAME: xxxxxxxxxxxxxxx/registrations/my-sdk-device/api-version=2019-03-31&ClientVersion=1.6.0 | PWD: XXXX | CLEAN: 1 <- 17:03:09 CONNACK | SESSION_PRESENT: false | RETURN_CODE: 0x0 -> 17:03:10 SUBSCRIBE | PACKET_ID: 1 | TOPIC_NAME: $dps/registrations/res/# | QOS: 1 <- 17:03:11 SUBACK | PACKET_ID: 1 | RETURN_CODE: 1 Info: Provisioning callback indicates success. iothubUri=iotc-xxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx.azure-devices.net, deviceId=my-sdk-device -> 17:03:27 DISCONNECT Info: DPS successfully registered. Continuing on to creation of IoTHub device client handle. Info: Successfully created device client. Hit Control-C to exit program Info: Sending serialNumber property to IoTHub Info: Sending device information property to IoTHub. propertyName=swVersion, propertyValue="1.0.0.0" Info: Sending device information property to IoTHub. propertyName=manufacturer, propertyValue="Sample-Manufacturer" Info: Sending device information property to IoTHub. propertyName=model, propertyValue="sample-Model-123" Info: Sending device information property to IoTHub. propertyName=osName, propertyValue="sample-OperatingSystem-name" Info: Sending device information property to IoTHub. propertyName=processorArchitecture, propertyValue="Contoso-Arch-64bit" Info: Sending device information property to IoTHub. propertyName=processorManufacturer, propertyValue="Processor Manufacturer(TM)" Info: Sending device information property to IoTHub. propertyName=totalStorage, propertyValue=10000 Info: Sending device information property to IoTHub. propertyName=totalMemory, propertyValue=200 Info: Sending maximumTemperatureSinceLastReboot property to IoTHub for component=thermostat1 Info: Sending maximumTemperatureSinceLastReboot property to IoTHub for component=thermostat2
本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 首先,创建适用于托管设备的 Azure IoT Central 应用程序。 然后,使用 Azure IoT 设备 SDK 示例来创建温度控制器,将此控制器安全地连接到 IoT Central,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT Central 的模拟传感器数据。
提示
开发人员有多种选项将设备连接到 Azure IoT。 若要了解连接选项,请参阅概述:面向 Azure IoT 设备开发人员的连接选项。
先决条件
本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:
- Windows 10
- Ubuntu 20.04 LTS
- 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10
在开发计算机上安装以下必备组件:
如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
Git。
.NET Core SDK 3.1+。 请务必安装 .NET SDK,而不只是安装运行时。 若要检查计算机上安装的 .NET SDK 和运行时的版本,请运行
dotnet --info
。- 对于 Windows 和 Linux(除了 Raspberry Pi),请按照说明在平台上安装 .NET Core SDK 3.1。
- 对于 Raspberry Pi,你需要按照说明手动安装 SDK。 这是因为在 Debian 上,.NET SDK 的包管理器安装仅支持 x64 体系结构。
创建应用程序
可以通过多种方式将设备连接到 Azure IoT。 本部分介绍如何使用 Azure IoT Central 连接设备。 IoT Central 是一个 IoT 应用程序平台,可降低管理 IoT 解决方案中的设备的成本和复杂性。
要创建新的应用程序:
浏览到 Azure IoT Central,并使用 Microsoft 个人帐户、工作帐户或学校帐户登录。
导航到“生成”,然后选择“自定义应用”。
在“应用程序名称”中,输入唯一的名称或使用已生成的名称。
在“URL”中,输入易记的应用程序 URL 前缀,或使用已生成的 URL 前缀。
将“应用程序模板”保持设置为“自定义应用程序”。
选择一个“定价计划”选项。
- 若要免费使用该应用程序 7 天,请选择“免费”。 在免费的应用程序过期之前,可将其转换为标准定价。
- 或者,可以选择标准定价计划。 如果选择标准定价,将会显示更多选项,并且你将需要设置“目录”、“Azure 订阅”和“位置”。 若要了解定价,请参阅 Azure IoT Central 定价。
- “目录”是将在其中创建应用程序的 Azure Active Directory 。 Azure Active Directory 包含用户标识、凭据和其他组织信息。 如果你没有 Azure Active Directory,则在你创建 Azure 订阅时,系统会创建一个。
- 使用 Azure 订阅可以创建 Azure 服务的实例。 IoT Central 将在订阅中预配资源。 如果你没有订阅,可免费创建一个。 如果你有订阅,可在下拉列表中选择它。
- “位置”是要在其中创建应用程序的 Azure 地理位置。 请选择实际上距离设备最近的位置以获得最佳性能。 选择一个位置后,无法将应用程序转移到其他位置。
选择“创建”。
IoT Central 在创建应用程序后,会将你重定向到应用程序仪表板。
添加设备
在本部分,你要将新设备添加到 IoT Central 应用程序。 该设备是设备模板的实例,表示要连接到应用程序的设备。
若要创建新设备,请执行以下操作:
在左窗格中,依次选择“设备”、“+新建”。
将“设备模板”设置为“未分配”,将“模拟此设备?”设置为“否”。
设置易记的“设备名称”和“设备 ID”。 或者,也可以使用生成的值。
选择“创建”。
创建的设备显示在“所有设备”列表中。
若要获取新设备的连接详细信息:
在“所有设备”列表中,单击链接设备的名称以显示详细信息。
在顶部菜单中,选择“连接”。
“设备连接”对话框显示了连接详细信息:
将“设备连接”对话框中的以下值复制到安全位置。 你要使用这些值将设备连接到 IoT Central。
ID scope
Device ID
Primary key
运行设备示例
在本部分,你将配置本地环境,安装 Azure IoT C# 示例,并运行创建温度控制器的示例。
配置环境
打开控制台,如 Windows CMD、PowerShell 或 Bash。
使用适用于你的控制台的适当命令设置以下环境变量。 设备使用这些值连接到 IoT Central。 对于
IOTHUB_DEVICE_DPS_ID_SCOPE
、IOTHUB_DEVICE_DPS_DEVICE_KEY
和IOTHUB_DEVICE_DPS_DEVICE_ID
,请使用之前保存的设备连接值。CMD (Windows)
set IOTHUB_DEVICE_SECURITY_TYPE=DPS set IOTHUB_DEVICE_DPS_ID_SCOPE=<application ID scope> set IOTHUB_DEVICE_DPS_DEVICE_KEY=<device primary key> set IOTHUB_DEVICE_DPS_DEVICE_ID=<your device ID> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net
注意
在 Windows CMD 中,请不要在变量值的两边加上引号。
PowerShell
$env:IOTHUB_DEVICE_SECURITY_TYPE='DPS' $env:IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' $env:IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' $env:IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' $env:IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
Bash
export IOTHUB_DEVICE_SECURITY_TYPE='DPS' export IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' export IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' export IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' export IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
安装 SDK 和示例
将适用于 C# (.NET) 的 Microsoft Azure IoT 示例克隆到本地计算机。
git clone https://github.com/Azure-Samples/azure-iot-samples-csharp.git
导航到示例目录。
Windows
cd azure-iot-samples-csharp\iot-hub\Samples\device\PnpDeviceSamples\TemperatureController
Linux 或 Raspberry Pi OS
cd azure-iot-samples-csharp/iot-hub/Samples/device/PnpDeviceSamples/TemperatureController
安装 Azure IoT C# SDK 和所需的依赖项:
dotnet restore
此命令安装在 TemperatureController.csproj 文件中指定的适当依赖项。
运行代码
在控制台中,运行代码示例。 此示例使用恒温器传感器创建温度控制器。
dotnet run
设备连接到 IoT Central 应用程序后,它会连接到你在该应用程序中创建的设备实例,并开始发送遥测数据。 控制台中显示了连接详细信息和遥测输出:
[10/09/2021 00:29:18]info: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Press Control+C to quit the sample. [10/09/2021 00:29:18]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Set up the device client. [10/09/2021 00:29:18]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Initializing via DPS [10/09/2021 00:29:38]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Set handler for 'reboot' command. [10/09/2021 00:29:39]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Connection status change registered - status=Connected, reason=Connection_Ok. [10/09/2021 00:29:39]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Set handler for "getMaxMinReport" command. [10/09/2021 00:29:39]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Set handler to receive 'targetTemperature' updates. [10/09/2021 00:29:39]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Property: Update - component = 'deviceInformation', properties update is complete. [10/09/2021 00:29:39]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Property: Update - { "serialNumber": "SR-123456" } is complete. [10/09/2021 00:29:40]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Telemetry: Sent - component="thermostat1", { "temperature": 23.7 } in °C. [10/09/2021 00:29:40]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Property: Update - component="thermostat1", { "maxTempSinceLastReboot": 23.7 } in °C is complete. [10/09/2021 00:29:40]dbug: Microsoft.Azure.Devices.Client.Samples.TemperatureControllerSample[0] Telemetry: Sent - component="thermostat2", { "temperature": 25.8 } in °C.
本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 首先,创建适用于托管设备的 Azure IoT Central 应用程序。 然后,使用 Azure IoT 设备 SDK 示例来创建温度控制器,将此控制器安全地连接到 IoT Central,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT Central 的模拟传感器数据。
提示
开发人员有多种选项将设备连接到 Azure IoT。 若要了解连接选项,请参阅概述:面向 Azure IoT 设备开发人员的连接选项。
先决条件
本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:
- Windows 10
- Ubuntu 20.04 LTS
- 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10
在开发计算机上安装以下必备组件:
- Git。
为操作系统安装剩余必备组件。
Windows
若要在 Windows 上完成本快速入门教程,请安装以下软件:
Java SE 开发工具包 8 或更高版本。 你可以从下载 OpenJDK 的 Zulu 版本为多个平台下载 Java 8 (LTS) JDK。 在安装程序中,选择“添加到路径”选项。
Apache Maven 3。 将下载内容提取到本地文件夹后,将 Maven /bin 文件夹的完整路径添加到 Windows
PATH
环境变量中。
Linux 或 Raspberry Pi OS
若要在 Linux 或 Raspberry Pi OS 上完成本快速入门教程,请安装以下软件:
注意
本部分中的步骤基于 Linux Ubuntu/Debian 分发版。 (Raspberry Pi OS 基于 Debian。)如果使用的是其他 Linux 分发版,需要相应修改步骤。
OpenJDK(开放式 Java 开发工具包)8 或更高版本。 可以使用 命令
java -version
验证系统上安装的 Java 版本。 请确保已安装 JDK,而不只是 Java 运行时 (JRE)。若要为系统安装 OpenJDK,请输入以下命令:
为系统安装默认版本的 OpenJDK(在撰写本文时,为 Ubuntu 20.04 和 Raspberry Pi OS 10 使用的是 OpenJDK 11):
sudo apt update sudo apt install default-jdk
或者可以指定要安装的 JDK 版本。 例如:
sudo apt update sudo apt install openjdk-8-jdk
如果系统安装了多个 Java 版本,可以使用以下命令配置 Java 和 Java 编译器的默认(自动)版本。
update-java-alternatives --list #list the Java versions installed sudo update-alternatives --config java #set the default Java version sudo update-alternatives --config javac #set the default Java compiler version
将
JAVA_HOME
环境变量设置为 JDK 安装的路径。 (这通常是 /usr/lib/jvm 目录中的一个版本化子目录。)export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
重要
此命令在当前 shell 环境中设置
JAVA_HOME
变量。 建议将该命令添加到~/.bashrc
或/etc/profile
文件中,以便在打开新 shell 时可随时使用。验证安装的 Java JDK(和 JRE)版本,以及 Java 编译器版本是否与 JDK 版本匹配,
JAVA_HOME
环境变量是否设置正确。java -version javac -version echo $JAVA_HOME
Apache Maven 3。 可以使用
mvn --version
命令验证系统上安装的 Maven 版本。若要安装 Maven,请输入以下命令:
sudo apt-get update sudo apt-get install maven
输入以下命令以验证安装。
mvn --version
创建应用程序
可以通过多种方式将设备连接到 Azure IoT。 本部分介绍如何使用 Azure IoT Central 连接设备。 IoT Central 是一个 IoT 应用程序平台,可降低管理 IoT 解决方案中的设备的成本和复杂性。
要创建新的应用程序:
浏览到 Azure IoT Central,并使用 Microsoft 个人帐户、工作帐户或学校帐户登录。
导航到“生成”,然后选择“自定义应用”。
在“应用程序名称”中,输入唯一的名称或使用已生成的名称。
在“URL”中,输入易记的应用程序 URL 前缀,或使用已生成的 URL 前缀。
将“应用程序模板”保持设置为“自定义应用程序”。
选择一个“定价计划”选项。
- 若要免费使用该应用程序 7 天,请选择“免费”。 在免费的应用程序过期之前,可将其转换为标准定价。
- 或者,可以选择标准定价计划。 如果选择标准定价,将会显示更多选项,并且你将需要设置“目录”、“Azure 订阅”和“位置”。 若要了解定价,请参阅 Azure IoT Central 定价。
- “目录”是将在其中创建应用程序的 Azure Active Directory 。 Azure Active Directory 包含用户标识、凭据和其他组织信息。 如果你没有 Azure Active Directory,则在你创建 Azure 订阅时,系统会创建一个。
- 使用 Azure 订阅可以创建 Azure 服务的实例。 IoT Central 将在订阅中预配资源。 如果你没有订阅,可免费创建一个。 如果你有订阅,可在下拉列表中选择它。
- “位置”是要在其中创建应用程序的 Azure 地理位置。 请选择实际上距离设备最近的位置以获得最佳性能。 选择一个位置后,无法将应用程序转移到其他位置。
选择“创建”。
IoT Central 在创建应用程序后,会将你重定向到应用程序仪表板。
添加设备
在本部分,你要将新设备添加到 IoT Central 应用程序。 该设备是设备模板的实例,表示要连接到应用程序的设备。
若要创建新设备,请执行以下操作:
在左窗格中,依次选择“设备”、“+新建”。
将“设备模板”设置为“未分配”,将“模拟此设备?”设置为“否”。
设置易记的“设备名称”和“设备 ID”。 或者,也可以使用生成的值。
选择“创建”。
创建的设备显示在“所有设备”列表中。
若要获取新设备的连接详细信息:
在“所有设备”列表中,单击链接设备的名称以显示详细信息。
在顶部菜单中,选择“连接”。
“设备连接”对话框显示了连接详细信息:
将“设备连接”对话框中的以下值复制到安全位置。 你要使用这些值将设备连接到 IoT Central。
ID scope
Device ID
Primary key
运行设备示例
在本部分,你将配置本地环境,安装 Azure IoT Java 设备 SDK,并运行创建温度控制器的示例。
配置环境
打开控制台,例如 Windows CMD 或 Bash。
Linux 和 Raspberry Pi OS
确认已设置 JAVA_HOME (
echo $JAVA_HOME
) 环境变量。 必须设置此环境变量,才能成功生成 SDK 和示例。 有关如何设置 JAVA_HOME,请参阅 Linux/Raspberry Pi 先决条件。使用适用于你的控制台的适当命令设置以下环境变量。 设备使用这些值连接到 IoT Central。 对于
IOTHUB_DEVICE_DPS_ID_SCOPE
、IOTHUB_DEVICE_DPS_DEVICE_KEY
和IOTHUB_DEVICE_DPS_DEVICE_ID
,请使用之前保存的设备连接值。Windows CMD
set IOTHUB_DEVICE_SECURITY_TYPE=DPS set IOTHUB_DEVICE_DPS_ID_SCOPE=<application ID scope> set IOTHUB_DEVICE_DPS_DEVICE_KEY=<device primary key> set IOTHUB_DEVICE_DPS_DEVICE_ID=<your device ID> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net
注意
在 Windows CMD 中,请不要在变量值的两边加上引号。
Bash
export IOTHUB_DEVICE_SECURITY_TYPE='DPS' export IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' export IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' export IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' export IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
生成并运行代码
将 Azure IoT Java 设备 SDK 克隆到本地计算机。
git clone https://github.com/Azure/azure-iot-sdk-java.git
导航到 SDK 的根文件夹,然后运行以下命令以生成 SDK 并更新示例。
cd azure-iot-sdk-java mvn install -T 2C -DskipTests
此操作需要几分钟才能完成。
导航到示例目录。
Windows
cd device\iot-device-samples\pnp-device-sample\temperature-controller-device-sample
Linux 或 Raspberry Pi OS
cd device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample
从 SDK 运行以下代码示例。 此示例使用恒温器传感器创建温度控制器。
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.TemperatureController"
设备连接到 IoT Central 应用程序后,它会连接到你在该应用程序中创建的设备实例,并开始发送遥测数据。 在发送一些初始预配详细信息后,控制台会开始输出温度控制器的遥测数据。
2021-05-13 15:39:26.411 DEBUG Mqtt:253 - Sending MQTT SUBSCRIBE packet for topic $iothub/twin/res/# 2021-05-13 15:39:26.428 INFO IotHubTransport:540 - Message was queued to be sent later ( Message details: Correlation Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Message Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Request Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Device Operation Type [DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST] ) 2021-05-13 15:39:26.432 DEBUG TemperatureController:427 - Property: Update - component = "deviceInformation" is COMPLETED. 2021-05-13 15:39:26.436 INFO IotHubTransport:540 - Message was queued to be sent later ( Message details: Correlation Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Message Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] ) 2021-05-13 15:39:26.438 DEBUG TemperatureController:438 - Telemetry: Sent - {"workingSet": 1024.0KiB } 2021-05-13 15:39:26.439 INFO IotHubTransport:540 - Message was queued to be sent later ( Message details: Correlation Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Message Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Request Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Device Operation Type [DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST] ) 2021-05-13 15:39:26.439 DEBUG TemperatureController:446 - Property: Update - {"serialNumber": SR-123456} is COMPLETED 2021-05-13 15:39:26.447 INFO IotHubTransport:540 - Message was queued to be sent later ( Message details: Correlation Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Message Id [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] ) 2021-05-13 15:39:26.447 DEBUG TemperatureController:465 - Telemetry: Sent - {"temperature": 44.4░C} with message Id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 首先,创建适用于托管设备的 Azure IoT Central 应用程序。 然后,使用 Azure IoT 设备 SDK 示例来创建温度控制器,将此控制器安全地连接到 IoT Central,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT Central 的模拟传感器数据。
提示
开发人员有多种选项将设备连接到 Azure IoT。 若要了解连接选项,请参阅概述:面向 Azure IoT 设备开发人员的连接选项。
先决条件
本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:
- Windows 10
- Ubuntu 20.04 LTS
- 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10
在开发计算机上安装以下必备组件:
创建应用程序
可以通过多种方式将设备连接到 Azure IoT。 本部分介绍如何使用 Azure IoT Central 连接设备。 IoT Central 是一个 IoT 应用程序平台,可降低管理 IoT 解决方案中的设备的成本和复杂性。
要创建新的应用程序:
浏览到 Azure IoT Central,并使用 Microsoft 个人帐户、工作帐户或学校帐户登录。
导航到“生成”,然后选择“自定义应用”。
在“应用程序名称”中,输入唯一的名称或使用已生成的名称。
在“URL”中,输入易记的应用程序 URL 前缀,或使用已生成的 URL 前缀。
将“应用程序模板”保持设置为“自定义应用程序”。
选择一个“定价计划”选项。
- 若要免费使用该应用程序 7 天,请选择“免费”。 在免费的应用程序过期之前,可将其转换为标准定价。
- 或者,可以选择标准定价计划。 如果选择标准定价,将会显示更多选项,并且你将需要设置“目录”、“Azure 订阅”和“位置”。 若要了解定价,请参阅 Azure IoT Central 定价。
- “目录”是将在其中创建应用程序的 Azure Active Directory 。 Azure Active Directory 包含用户标识、凭据和其他组织信息。 如果你没有 Azure Active Directory,则在你创建 Azure 订阅时,系统会创建一个。
- 使用 Azure 订阅可以创建 Azure 服务的实例。 IoT Central 将在订阅中预配资源。 如果你没有订阅,可免费创建一个。 如果你有订阅,可在下拉列表中选择它。
- “位置”是要在其中创建应用程序的 Azure 地理位置。 请选择实际上距离设备最近的位置以获得最佳性能。 选择一个位置后,无法将应用程序转移到其他位置。
选择“创建”。
IoT Central 在创建应用程序后,会将你重定向到应用程序仪表板。
添加设备
在本部分,你要将新设备添加到 IoT Central 应用程序。 该设备是设备模板的实例,表示要连接到应用程序的设备。
若要创建新设备,请执行以下操作:
在左窗格中,依次选择“设备”、“+新建”。
将“设备模板”设置为“未分配”,将“模拟此设备?”设置为“否”。
设置易记的“设备名称”和“设备 ID”。 或者,也可以使用生成的值。
选择“创建”。
创建的设备显示在“所有设备”列表中。
若要获取新设备的连接详细信息:
在“所有设备”列表中,单击链接设备的名称以显示详细信息。
在顶部菜单中,选择“连接”。
“设备连接”对话框显示了连接详细信息:
将“设备连接”对话框中的以下值复制到安全位置。 你要使用这些值将设备连接到 IoT Central。
ID scope
Device ID
Primary key
运行设备示例
在本部分,你将配置本地环境,安装 Azure IoT Node.js 设备 SDK,并运行创建温度控制器的示例。
配置环境
打开控制台,如 Windows CMD、PowerShell 或 Bash。
使用适用于你的控制台的适当命令设置以下环境变量。 设备使用这些值连接到 IoT Central。 对于
IOTHUB_DEVICE_DPS_ID_SCOPE
、IOTHUB_DEVICE_DPS_DEVICE_KEY
和IOTHUB_DEVICE_DPS_DEVICE_ID
,请使用之前保存的设备连接值。CMD (Windows)
set IOTHUB_DEVICE_SECURITY_TYPE=DPS set IOTHUB_DEVICE_DPS_ID_SCOPE=<application ID scope> set IOTHUB_DEVICE_DPS_DEVICE_KEY=<device primary key> set IOTHUB_DEVICE_DPS_DEVICE_ID=<your device ID> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net
注意
在 Windows CMD 中,请不要在变量值的两边加上引号。
PowerShell
$env:IOTHUB_DEVICE_SECURITY_TYPE='DPS' $env:IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' $env:IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' $env:IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' $env:IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
Bash
export IOTHUB_DEVICE_SECURITY_TYPE='DPS' export IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' export IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' export IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' export IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
安装 SDK 和示例
将 Azure IoT Node.js 设备 SDK 复制到本地计算机。
git clone https://github.com/Azure/azure-iot-sdk-node
导航到示例目录。
Windows
cd azure-iot-sdk-node\device\samples\javascript
Linux 或 Raspberry Pi OS
cd azure-iot-sdk-node/device/samples/javascript
安装 Azure IoT Node.js SDK 和所需的依赖项:
npm install
运行代码
在控制台中,从 SDK 运行以下代码示例。 此示例使用恒温器传感器创建温度控制器。
node pnp_temperature_controller.js
设备连接到 IoT Central 应用程序后,它会连接到你在该应用程序中创建的设备实例,并开始发送遥测数据。 控制台中显示了连接详细信息和遥测输出:
registration succeeded assigned hub=iotc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx.azure-devices.net deviceId=my-sdk-device payload=undefined Connecting using connection string: HostName=iotc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx.azure-devices.net;DeviceId=my-sdk-device;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxx Enabling the commands on the client Please enter q or Q to exit sample. The following properties will be updated for root interface. { serialNumber: 'alwinexlepaho8329' } The following properties will be updated for component: thermostat1 { thermostat1: { maxTempSinceLastReboot: 40.53506261527863, __t: 'c' } } The following properties will be updated for component: thermostat2 { thermostat2: { maxTempSinceLastReboot: 89.55136974144273, __t: 'c' } } The following properties will be updated for component: deviceInformation { deviceInformation: { manufacturer: 'Contoso Device Corporation', model: 'Contoso 47-turbo', swVersion: '10.89', osName: 'Contoso_OS', processorArchitecture: 'Contoso_x86', processorManufacturer: 'Contoso Industries', totalStorage: 65000, totalMemory: 640, __t: 'c' } } executed sample Received an update for device with value: {"$version":1} Properties have been reported for root interface. Properties have been reported for component: thermostat1 Properties have been reported for component: thermostat2 Properties have been reported for component: deviceInformation Sending telemetry message 0 from component: thermostat1 Sending telemetry message 0 from component: thermostat2
本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 首先,创建适用于托管设备的 Azure IoT Central 应用程序。 然后,使用 Azure IoT 设备 SDK 示例来创建温度控制器,将此控制器安全地连接到 IoT Central,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT Central 的模拟传感器数据。
提示
开发人员有多种选项将设备连接到 Azure IoT。 若要了解连接选项,请参阅概述:面向 Azure IoT 设备开发人员的连接选项。
先决条件
本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:
- Windows 10
- Ubuntu 20.04 LTS
- 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10
在开发计算机上安装以下必备组件:
创建应用程序
可以通过多种方式将设备连接到 Azure IoT。 本部分介绍如何使用 Azure IoT Central 连接设备。 IoT Central 是一个 IoT 应用程序平台,可降低管理 IoT 解决方案中的设备的成本和复杂性。
要创建新的应用程序:
浏览到 Azure IoT Central,并使用 Microsoft 个人帐户、工作帐户或学校帐户登录。
导航到“生成”,然后选择“自定义应用”。
在“应用程序名称”中,输入唯一的名称或使用已生成的名称。
在“URL”中,输入易记的应用程序 URL 前缀,或使用已生成的 URL 前缀。
将“应用程序模板”保持设置为“自定义应用程序”。
选择一个“定价计划”选项。
- 若要免费使用该应用程序 7 天,请选择“免费”。 在免费的应用程序过期之前,可将其转换为标准定价。
- 或者,可以选择标准定价计划。 如果选择标准定价,将会显示更多选项,并且你将需要设置“目录”、“Azure 订阅”和“位置”。 若要了解定价,请参阅 Azure IoT Central 定价。
- “目录”是将在其中创建应用程序的 Azure Active Directory 。 Azure Active Directory 包含用户标识、凭据和其他组织信息。 如果你没有 Azure Active Directory,则在你创建 Azure 订阅时,系统会创建一个。
- 使用 Azure 订阅可以创建 Azure 服务的实例。 IoT Central 将在订阅中预配资源。 如果你没有订阅,可免费创建一个。 如果你有订阅,可在下拉列表中选择它。
- “位置”是要在其中创建应用程序的 Azure 地理位置。 请选择实际上距离设备最近的位置以获得最佳性能。 选择一个位置后,无法将应用程序转移到其他位置。
选择“创建”。
IoT Central 在创建应用程序后,会将你重定向到应用程序仪表板。
添加设备
在本部分,你要将新设备添加到 IoT Central 应用程序。 该设备是设备模板的实例,表示要连接到应用程序的设备。
若要创建新设备,请执行以下操作:
在左窗格中,依次选择“设备”、“+新建”。
将“设备模板”设置为“未分配”,将“模拟此设备?”设置为“否”。
设置易记的“设备名称”和“设备 ID”。 或者,也可以使用生成的值。
选择“创建”。
创建的设备显示在“所有设备”列表中。
若要获取新设备的连接详细信息:
在“所有设备”列表中,单击链接设备的名称以显示详细信息。
在顶部菜单中,选择“连接”。
“设备连接”对话框显示了连接详细信息:
将“设备连接”对话框中的以下值复制到安全位置。 你要使用这些值将设备连接到 IoT Central。
ID scope
Device ID
Primary key
运行设备示例
在此部分,你将配置本地环境,安装 Azure IoT Python 设备 SDK,并运行创建温度控制器的示例。
配置环境
打开控制台,如 Windows CMD、PowerShell 或 Bash。
使用适用于你的控制台的适当命令设置以下环境变量。 设备使用这些值连接到 IoT Central。 对于
IOTHUB_DEVICE_DPS_ID_SCOPE
、IOTHUB_DEVICE_DPS_DEVICE_KEY
和IOTHUB_DEVICE_DPS_DEVICE_ID
,请使用之前保存的设备连接值。CMD (Windows)
set IOTHUB_DEVICE_SECURITY_TYPE=DPS set IOTHUB_DEVICE_DPS_ID_SCOPE=<application ID scope> set IOTHUB_DEVICE_DPS_DEVICE_KEY=<device primary key> set IOTHUB_DEVICE_DPS_DEVICE_ID=<your device ID> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net
注意
在 Windows CMD 中,请不要在变量值的两边加上引号。
PowerShell
$env:IOTHUB_DEVICE_SECURITY_TYPE='DPS' $env:IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' $env:IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' $env:IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' $env:IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
Bash
export IOTHUB_DEVICE_SECURITY_TYPE='DPS' export IOTHUB_DEVICE_DPS_ID_SCOPE='<application ID scope>' export IOTHUB_DEVICE_DPS_DEVICE_KEY='<device primary key>' export IOTHUB_DEVICE_DPS_DEVICE_ID='<your device ID>' export IOTHUB_DEVICE_DPS_ENDPOINT='global.azure-devices-provisioning.net'
安装 SDK 和示例
将 Azure IoT Python 设备 SDK 复制到本地计算机。
git clone https://github.com/Azure/azure-iot-sdk-python
导航到示例目录。
Windows
cd azure-iot-sdk-python\azure-iot-device\samples\pnp
Linux 或 Raspberry Pi OS
cd azure-iot-sdk-python/azure-iot-device/samples/pnp
安装 Azure IoT Python SDK。
pip3 install azure-iot-device
运行代码
在控制台中,从 SDK 运行以下代码示例。 此示例使用恒温器传感器创建温度控制器。
python3 temp_controller_with_thermostats.py
设备连接到 IoT Central 应用程序后,它会连接到你在该应用程序中创建的设备实例,并开始发送遥测数据。 控制台中显示了连接详细信息和遥测输出:
Device was assigned iotc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azure-devices.net my-sdk-device Updating pnp properties for root interface {'serialNumber': 'alohomora'} Updating pnp properties for thermostat1 {'thermostat1': {'maxTempSinceLastReboot': 98.34, '__t': 'c'}} Updating pnp properties for thermostat2 {'thermostat2': {'maxTempSinceLastReboot': 48.92, '__t': 'c'}} Updating pnp properties for deviceInformation {'deviceInformation': {'swVersion': '5.5', 'manufacturer': 'Contoso Device Corporation', 'model': 'Contoso 4762B-turbo', 'osName': 'Mac Os', 'processorArchitecture': 'x86-64', 'processorManufacturer': 'Intel', 'totalStorage': 1024, 'totalMemory': 32, '__t': 'c'}} Listening for command requests and property updates Press Q to quit Sending telemetry from various components Sent message {"temperature": 33}
查看遥测数据
设备在连接到 IoT Central 之后,将开始发送遥测数据。 你可以在 IoT Central 中查看有关连接的设备的遥测数据和其他详细信息。
在 IoT Central 中,选择设备,单击设备名称,然后选择概述选项卡。此视图显示两个恒温器设备的温度图。
选择原始数据选项卡。此视图显示每次发送恒温器读数时的遥测数据。
设备现已建立安全连接,并在向 Azure IoT 发送遥测数据。
清理资源
如果不再需要本快速入门中创建的 IoT Central 资源,可以将其删除。 或者,如果你打算继续学习本指南中的文档,可以保留你创建的应用程序,以将其重复用于其他示例。
若要删除 Azure IoT Central 示例应用程序及其所有设备和资源,请执行以下操作:
- 选择“管理”>“你的应用程序”。
- 选择“删除”。
后续步骤
在本快速入门中,你已了解一个可将设备安全连接到云并发送设备到云的遥测数据的基本 Azure IoT 应用程序工作流。 你使用 Azure IoT Central 来创建应用程序和设备实例。 接着,使用 Azure IoT 设备 SDK 创建一个温度控制器,连接到 IoT Central,然后发送遥测数据。 你还使用了 IoT Central 来监视遥测数据。
接下来,请浏览以下这些文章,以详细了解如何使用 Azure IoT 构建设备解决方案。