你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:将遥测从 IoT 即插即用发送到 Azure IoT 中心

适用对象一般设备开发人员

Browse code

本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 使用 Azure CLI 和 IoT 资源管理器创建 Azure IoT 中心和设备。 然后,使用 Azure IoT 设备 SDK 示例来运行温度控制器,将此控制器安全地连接到中心,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT 中心的模拟传感器数据。

先决条件

本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:

  • Windows 10
  • Ubuntu 20.04 LTS
  • 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10

在开发计算机上安装以下必备组件(对 Raspberry Pi 另有注明的情况除外):

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • Git
  • Azure IoT Explorer:用于监视和管理 Azure IoT 的基于 GUI 的跨平台实用工具。 如果使用 Raspberry Pi 作为开发平台,建议在另一台计算机上安装 IoT 资源管理器。 如果不想安装 IoT 资源管理器,可使用 Azure CLI 执行相同的步骤。
  • Azure CLI。 在本快速入门中,有两个选项可用于运行 Azure CLI 命令:
    • 使用 Azure Cloud Shell,这是一个交互式 Shell,可在浏览器中运行 CLI 命令。 建议使用此选项,因为无需安装任何插件。 如果是首次使用 Cloud Shell,请登录到 Azure 门户。 按照 Azure Cloud Shell 入门中的步骤启动 Cloud Shell 并选择 Bash 环境
    • (可选)在本地计算机上运行 Azure CLI。 如果已安装 Azure CLI,请运行 az upgrade 以将 CLI 和扩展升级到当前版本。 要安装 Azure CLI,请参阅安装 Azure CLI。 如果使用 Raspberry Pi 作为开发平台,建议使用 Azure Cloud Shell 或在另一台计算机上安装 Azure CLI。

为操作系统安装剩余必备组件。

Linux 或 Raspberry Pi OS

若要在 Linux 或 Raspberry Pi OS 上完成本快速入门教程,请安装以下软件:

使用 apt-get 命令安装 GCCGitCMake 和必要的依赖项:

sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev

验证 CMake 的版本为 3.13 或更高版本,GCC 的版本为 4.4.7 或更高。

cmake --version
gcc --version

Windows

若要在 Windows 上完成本快速入门,请安装 Visual Studio 2022 并添加 C 和 C++ 开发所需的组件。

  1. 对于新用户,请安装 Visual Studio(Community、Professional 或 Enterprise)2022。 下载要安装的版本,然后启动安装程序。

    注意

    对于现有 Visual Studio 2022 用户,请选择 Windows 开始,输入“Visual Studio 安装程序”,运行安装程序然后选择“修改”。

  2. 在安装程序工作负载选项卡中,选择使用 C++ 的桌面开发工作负载。
  3. 进行安装。

创建 IoT 中心

在本部分中,使用 Azure CLI 创建 IoT 中心和资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。

创建 IoT 中心和资源组:

  1. 启动 Azure CLI:

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果你在本地使用 Azure CLI,请打开控制台(例如 Windows CMD、PowerShell 或 Bash),并登录到 Azure CLI

    若要在本快速入门的其余部分运行 CLI 命令:请复制命令语法,将其粘贴到 Cloud Shell 窗口或 CLI 控制台中,编辑变量值,然后按 Enter。

  2. 运行 az extension add,将“azure-iot”扩展安装或升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 运行 az group create 命令创建资源组。 以下命令在“eastus” 位置创建名为“MyResourceGroup”的资源组 。

    注意

    可以选择设置备用位置。 若要查看可用位置,请运行 az account list-locations。 本教程使用示例命令中所示的 eastus。

    az group create --name MyResourceGroup --location eastus
    
  4. 运行 az iot hub create 命令创建 IoT 中心。 创建 IoT 中心可能需要数分钟的时间。

    YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

    提示

    创建 IoT 中心后,你将在本快速入门的其余部分使用 Azure IoT Explorer 与 IoT 中心进行交互。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器。 或者,你可以继续使用 CLI 命令。

配置 IoT Explorer

在本快速入门的其余部分中,你将使用 IoT Explorer 将设备注册到 IoT 中心并查看设备遥测数据。 在本部分中,将配置 IoT Explorer 以连接到刚创建的 IoT 中心,并从公共模型存储库中读取即插即用模型。

注意

也可使用 Azure CLI 来注册设备。 使用 az iot hub device-identity create --device-id mydevice --hub-name {YourIoTHubName} 命令注册新设备,使用 az iot hub device-identity connection-string show --device-id mydevice --hub-name {YourIoTHubName} 命令获取设备的主连接字符串 。 记下设备连接字符串后,可直接跳到运行设备示例

若要添加与 IoT 中心的连接:

  1. 运行 az iot hub connection-string show 命令来获取用于 IoT 中心的连接字符串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  2. 复制不带两旁引号字符的连接字符串。

  3. 在 Azure IoT Explorer 的左侧菜单中,选择“IoT 中心”,然后选择“+ 添加连接”。

  4. 将连接字符串粘贴到“连接字符串”框中。

  5. 选择“保存”。

    Screenshot of adding a connection in IoT Explorer

  6. 如果连接成功,IoT Explorer 将切换到“设备”视图。

若要添加公共模型存储库:

  1. 在 IoT Explorer 中,选择“主页”以返回到主页视图。

  2. 在左侧菜单中,选择“IoT 即插即用设置”,然后从下拉菜单中依次选择“+添加”和“公共存储库”。

  3. 此时会在 https://devicemodels.azure.com 中显示公共模型存储库的条目。

    Screenshot of adding the public model repository in IoT Explorer

  4. 选择“保存”。

注册设备

在本部分中,将创建一个新设备实例,并将其注册到所创建的 IoT 中心。 在后面的部分中,将使用新注册的设备的连接信息安全连接设备。

若要注册设备:

  1. 从 IoT Explorer 的主页视图中,选择“IoT 中心”。

  2. 此时应出现之前添加的连接。 在“连接属性”下面选择“查看此中心的设备”。

  3. 选择“+ 新建”,然后输入设备的设备 ID;例如,mydevice。 将所有其它属性保持不变。

  4. 选择创建

    Screenshot of Azure IoT Explorer device identity

  5. 使用复制按钮复制并记下“主连接字符串”字段。 稍后将需要使用此连接字符串。

运行设备示例

在本部分,你将使用 C SDK 将消息从设备发送到 IoT 中心。 将运行示例,该示例实现了具有两个恒温器传感器的温度控制器。

生成示例

  1. 打开新控制台,安装 Azure IoT C 设备 SDK,并运行代码示例。 对于 Windows,请选择“开始”,键入“适用于 VS 2019 的开发人员命令提示”,然后打开控制台。 对于 Linux 和 Raspberry Pi OS,打开 Bash 命令终端。

    注意

    如果使用的是 Azure CLI 的本地安装,则现在可能会打开两个控制台窗口。 请确保在刚刚打开的控制台中输入此部分中的命令,而不是用于 CLI 的命令。

  2. 导航到要用于克隆示例存储库的本地文件夹。

  3. 将 Azure IoT C 设备 SDK 克隆到本地计算机:

    git clone https://github.com/Azure/azure-iot-sdk-c.git
    
  4. 导航到 SDK 的根文件夹,并运行以下命令以更新依赖项:

    cd azure-iot-sdk-c
    git submodule update --init
    

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

  5. 要生成 SDK 和示例,请运行以下命令:

    cmake -Bcmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF
    cmake --build cmake
    
  6. 设置以下环境变量,使设备能够连接到 Azure IoT。

    • 设置名为 IOTHUB_DEVICE_CONNECTION_STRING 的环境变量。 对于变量值,请使用上一部分保存的设备连接字符串。
    • 设置名为 IOTHUB_DEVICE_SECURITY_TYPE 的环境变量。 对于变量,请使用文本字符串值 connectionString

    CMD

    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    set IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    

    注意

    对于 Windows CMD,每个变量的字符串值的两边没有引号。

    Bash

    export IOTHUB_DEVICE_CONNECTION_STRING="<your connection string here>"
    export IOTHUB_DEVICE_SECURITY_TYPE="connectionString"
    

运行代码

  1. 使用适用于控制台的命令运行示例代码。

    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
    

    注意

    此代码示例使用 Azure IoT 即插即用,这使你无需任何手动配置即可将智能设备集成到你的解决方案中。 默认情况下,本文档中的大多数示例都使用 IoT 即插即用。 若要详细了解 IoT PnP 的优点以及使用或不使用它的案例,请参阅什么是 IoT 即插即用?

示例作为注册的设备安全地连接到 IoT 中心,并开始发送遥测消息。 示例输出将显示在控制台中。

查看遥测数据

可以通过 IoT Explorer 查看设备遥测数据。 或者,可以使用 Azure CLI 查看遥测数据。

若要在 Azure IoT Explorer 中查看遥测数据:

  1. 从 IoT Explorer 的 IoT 中心中,选择“查看此中心的设备”,然后从列表中选择自己的设备。

  2. 在设备的左侧菜单中,选择“遥测”。

  3. 确认“使用内置事件中心”设置为“是”,然后选择“开始”。

  4. 查看设备向云发送消息的遥测数据。

    Screenshot of device telemetry in IoT Explorer

  5. 选择“停止”以结束接收事件。

若要读取单个设备组件发送的遥测数据,可以在 IoT Explorer 中使用即插即用功能。 例如,本快速入门中的温度控制器具有两个恒温器:thermostat1 和 thermostat2。 若要查看 thermostat1 报告的温度:

  1. 在 IoT Explorer 中的设备上,从左侧菜单中选择“IoT 即插即用组件”。 然后从组件列表中选择“thermostat1”。

  2. 在“thermostat1”组件窗格中,从顶部菜单中选择“遥测” 。

  3. 在“遥测”窗格中,按照之前执行的相同步骤进行操作。 确保“使用内置事件中心”设置为“是”,然后选择“开始”。

若要使用 Azure CLI 查看设备遥测数据:

  1. 运行 az iot hub monitor-events 命令以监视从设备发送到 IoT 中心的事件。 使用之前在 Azure IoT 中为设备和 IoT 中心创建的名称。

    az iot hub monitor-events --output table --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中查看连接详细信息和遥测输出。

    Starting event monitor, filtering on device: mydevice, use ctrl-c to stop...
    event:
      component: ''
      interface: dtmi:com:example:TemperatureController;1
      module: ''
      origin: mydevice
      payload: '{"workingSet":1251}'
    
    event:
      component: thermostat1
      interface: dtmi:com:example:TemperatureController;1
      module: ''
      origin: mydevice
      payload: '{"temperature":22.00}'
    

Browse code

本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 使用 Azure CLI 和 IoT 资源管理器创建 Azure IoT 中心和设备。 然后,使用 Azure IoT 设备 SDK 示例来运行温度控制器,将此控制器安全地连接到中心,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT 中心的模拟传感器数据。

先决条件

本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:

  • Windows 10
  • Ubuntu 20.04 LTS
  • 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10

在开发计算机上安装以下必备组件(对 Raspberry Pi 另有注明的情况除外):

  • 如果还没有 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 Explorer:用于监视和管理 Azure IoT 的基于 GUI 的跨平台实用工具。 如果使用 Raspberry Pi 作为开发平台,建议在另一台计算机上安装 IoT 资源管理器。 如果不想安装 IoT 资源管理器,可使用 Azure CLI 执行相同的步骤。

  • Azure CLI。 在本快速入门中,有两个选项可用于运行 Azure CLI 命令:

    • 使用 Azure Cloud Shell,这是一个交互式 Shell,可在浏览器中运行 CLI 命令。 建议使用此选项,因为无需安装任何插件。 如果是首次使用 Cloud Shell,请登录到 Azure 门户。 按照 Azure Cloud Shell 入门中的步骤启动 Cloud Shell 并选择 Bash 环境
    • (可选)在本地计算机上运行 Azure CLI。 如果已安装 Azure CLI,请运行 az upgrade 以将 CLI 和扩展升级到当前版本。 要安装 Azure CLI,请参阅安装 Azure CLI。 如果使用 Raspberry Pi 作为开发平台,建议使用 Azure Cloud Shell 或在另一台计算机上安装 Azure CLI。

创建 IoT 中心

在本部分中,使用 Azure CLI 创建 IoT 中心和资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。

创建 IoT 中心和资源组:

  1. 启动 Azure CLI:

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果你在本地使用 Azure CLI,请打开控制台(例如 Windows CMD、PowerShell 或 Bash),并登录到 Azure CLI

    若要在本快速入门的其余部分运行 CLI 命令:请复制命令语法,将其粘贴到 Cloud Shell 窗口或 CLI 控制台中,编辑变量值,然后按 Enter。

  2. 运行 az extension add,将“azure-iot”扩展安装或升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 运行 az group create 命令创建资源组。 以下命令在“eastus” 位置创建名为“MyResourceGroup”的资源组 。

    注意

    可以选择设置备用位置。 若要查看可用位置,请运行 az account list-locations。 本教程使用示例命令中所示的 eastus。

    az group create --name MyResourceGroup --location eastus
    
  4. 运行 az iot hub create 命令创建 IoT 中心。 创建 IoT 中心可能需要数分钟的时间。

    YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

    提示

    创建 IoT 中心后,你将在本快速入门的其余部分使用 Azure IoT Explorer 与 IoT 中心进行交互。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器。 或者,你可以继续使用 CLI 命令。

配置 IoT Explorer

在本快速入门的其余部分中,你将使用 IoT Explorer 将设备注册到 IoT 中心并查看设备遥测数据。 在本部分中,将配置 IoT Explorer 以连接到刚创建的 IoT 中心,并从公共模型存储库中读取即插即用模型。

注意

也可使用 Azure CLI 来注册设备。 使用 az iot hub device-identity create --device-id mydevice --hub-name {YourIoTHubName} 命令注册新设备,使用 az iot hub device-identity connection-string show --device-id mydevice --hub-name {YourIoTHubName} 命令获取设备的主连接字符串 。 记下设备连接字符串后,可直接跳到运行设备示例

若要添加与 IoT 中心的连接:

  1. 运行 az iot hub connection-string show 命令来获取用于 IoT 中心的连接字符串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  2. 复制不带两旁引号字符的连接字符串。

  3. 在 Azure IoT Explorer 的左侧菜单中,选择“IoT 中心”,然后选择“+ 添加连接”。

  4. 将连接字符串粘贴到“连接字符串”框中。

  5. 选择“保存”。

    Screenshot of adding a connection in IoT Explorer

  6. 如果连接成功,IoT Explorer 将切换到“设备”视图。

若要添加公共模型存储库:

  1. 在 IoT Explorer 中,选择“主页”以返回到主页视图。

  2. 在左侧菜单中,选择“IoT 即插即用设置”,然后从下拉菜单中依次选择“+添加”和“公共存储库”。

  3. 此时会在 https://devicemodels.azure.com 中显示公共模型存储库的条目。

    Screenshot of adding the public model repository in IoT Explorer

  4. 选择“保存”。

注册设备

在本部分中,将创建一个新设备实例,并将其注册到所创建的 IoT 中心。 在后面的部分中,将使用新注册的设备的连接信息安全连接设备。

若要注册设备:

  1. 从 IoT Explorer 的主页视图中,选择“IoT 中心”。

  2. 此时应出现之前添加的连接。 在“连接属性”下面选择“查看此中心的设备”。

  3. 选择“+ 新建”,然后输入设备的设备 ID;例如,mydevice。 将所有其它属性保持不变。

  4. 选择创建

    Screenshot of Azure IoT Explorer device identity

  5. 使用复制按钮复制并记下“主连接字符串”字段。 稍后将需要使用此连接字符串。

运行设备示例

在本部分,你将使用 C# SDK 将消息从设备发送到 IoT 中心。 你将运行一个示例,该示例实现了具有两个恒温器传感器的温度控制器。

  1. 打开一个新的控制台,如 Windows CMD、PowerShell 或 Bash。 在下面的步骤中,使用此控制台来安装 Node.js SDK 并处理 Node.js 示例代码。

    注意

    如果使用的是 Azure CLI 的本地安装,则现在可能会打开两个控制台窗口。 请确保在刚刚打开的控制台中输入此部分中的命令,而不是用于 CLI 的命令。

  2. 适用于 C# 的 Microsoft Azure IoT SDK (.NET) 克隆到本地计算机:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  3. 导航到示例目录:

    Windows

    cd azure-iot-sdk-csharp\iothub\device\samples\solutions\PnpDeviceSamples\TemperatureController
    

    Linux 或 Raspberry Pi OS

    cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/TemperatureController
    
  4. 安装 Azure IoT C# SDK 和所需的依赖项:

    dotnet restore
    

    此命令安装在 TemperatureController.csproj 文件中指定的适当依赖项。

  5. 设置以下两个环境变量,使设备能够连接到 Azure IoT。

    • 设置名为 IOTHUB_DEVICE_CONNECTION_STRING 的环境变量。 对于变量值,请使用上一部分保存的设备连接字符串。
    • 设置名为 IOTHUB_DEVICE_SECURITY_TYPE 的环境变量。 对于变量,请使用文本字符串值 connectionString

    CMD (Windows)

    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    set IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    

    注意

    对于 Windows CMD,每个变量的字符串值的两边没有引号。

    PowerShell

    $env:IOTHUB_DEVICE_CONNECTION_STRING='<your connection string here>'
    $env:IOTHUB_DEVICE_SECURITY_TYPE='connectionString'
    

    Bash

    export IOTHUB_DEVICE_CONNECTION_STRING="<your connection string here>"
    export IOTHUB_DEVICE_SECURITY_TYPE="connectionString"
    
  6. 运行代码示例:

    dotnet run
    

    注意

    此代码示例使用 Azure IoT 即插即用,这使你无需任何手动配置即可将智能设备集成到你的解决方案中。 默认情况下,本文档中的大多数示例都使用 IoT 即插即用。 若要详细了解 IoT PnP 的优点以及使用或不使用它的案例,请参阅什么是 IoT 即插即用?

示例作为注册的设备安全地连接到 IoT 中心,并开始发送遥测消息。 示例输出将显示在控制台中。

查看遥测数据

可以通过 IoT Explorer 查看设备遥测数据。 或者,可以使用 Azure CLI 查看遥测数据。

若要在 Azure IoT Explorer 中查看遥测数据:

  1. 从 IoT Explorer 的 IoT 中心中,选择“查看此中心的设备”,然后从列表中选择自己的设备。

  2. 在设备的左侧菜单中,选择“遥测”。

  3. 确认“使用内置事件中心”设置为“是”,然后选择“开始”。

  4. 查看设备向云发送消息的遥测数据。

    Screenshot of device telemetry in IoT Explorer

  5. 选择“停止”以结束接收事件。

若要读取单个设备组件发送的遥测数据,可以在 IoT Explorer 中使用即插即用功能。 例如,本快速入门中的温度控制器具有两个恒温器:thermostat1 和 thermostat2。 若要查看 thermostat1 报告的温度:

  1. 在 IoT Explorer 中的设备上,从左侧菜单中选择“IoT 即插即用组件”。 然后从组件列表中选择“thermostat1”。

  2. 在“thermostat1”组件窗格中,从顶部菜单中选择“遥测” 。

  3. 在“遥测”窗格中,按照之前执行的相同步骤进行操作。 确保“使用内置事件中心”设置为“是”,然后选择“开始”。

若要使用 Azure CLI 查看设备遥测数据:

  1. 运行 az iot hub monitor-events 命令以监视从设备发送到 IoT 中心的事件。 使用之前在 Azure IoT 中为设备和 IoT 中心创建的名称。

    az iot hub monitor-events --output table --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中查看连接详细信息和遥测输出。

    Starting event monitor, filtering on device: mydevice, use ctrl-c to stop...
    event:
      component: thermostat1
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 39.8
    
    event:
      component: thermostat2
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 36.7
    
  3. 选择 CTRL+C 结束监视。

Browse code

本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 使用 Azure CLI 和 IoT 资源管理器创建 Azure IoT 中心和设备。 然后,使用 Azure IoT 设备 SDK 示例来运行温度控制器,将此控制器安全地连接到中心,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT 中心的模拟传感器数据。

先决条件

本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:

  • Windows 10
  • Ubuntu 20.04 LTS
  • 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10

在开发计算机上安装以下必备组件(对 Raspberry Pi 另有注明的情况除外):

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • Git
  • Azure IoT Explorer:用于监视和管理 Azure IoT 的基于 GUI 的跨平台实用工具。 如果使用 Raspberry Pi 作为开发平台,建议在另一台计算机上安装 IoT 资源管理器。 如果不想安装 IoT 资源管理器,可使用 Azure CLI 执行相同的步骤。
  • Azure CLI。 在本快速入门中,有两个选项可用于运行 Azure CLI 命令:
    • 使用 Azure Cloud Shell,这是一个交互式 Shell,可在浏览器中运行 CLI 命令。 建议使用此选项,因为无需安装任何插件。 如果是首次使用 Cloud Shell,请登录到 Azure 门户。 按照 Azure Cloud Shell 入门中的步骤启动 Cloud Shell 并选择 Bash 环境
    • (可选)在本地计算机上运行 Azure CLI。 如果已安装 Azure CLI,请运行 az upgrade 以将 CLI 和扩展升级到当前版本。 要安装 Azure CLI,请参阅安装 Azure CLI。 如果使用 Raspberry Pi 作为开发平台,建议使用 Azure Cloud Shell 或在另一台计算机上安装 Azure CLI。

为操作系统安装剩余必备组件。

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)。

    1. 若要为系统安装 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
      
    2. 如果系统安装了多个 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
      
    3. 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 时可随时使用。

    4. 验证安装的 Java JDK(和 JRE)版本,以及 Java 编译器版本是否与 JDK 版本匹配,JAVA_HOME 环境变量是否设置正确。

      java -version
      javac -version
      echo $JAVA_HOME
      
  • Apache Maven 3。 可以使用 mvn --version 命令验证系统上安装的 Maven 版本。

    1. 若要安装 Maven,请输入以下命令:

      sudo apt-get update
      sudo apt-get install maven
      
    2. 输入以下命令以验证安装。

      mvn --version
      

创建 IoT 中心

在本部分中,使用 Azure CLI 创建 IoT 中心和资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。

创建 IoT 中心和资源组:

  1. 启动 Azure CLI:

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果你在本地使用 Azure CLI,请打开控制台(例如 Windows CMD、PowerShell 或 Bash),并登录到 Azure CLI

    若要在本快速入门的其余部分运行 CLI 命令:请复制命令语法,将其粘贴到 Cloud Shell 窗口或 CLI 控制台中,编辑变量值,然后按 Enter。

  2. 运行 az extension add,将“azure-iot”扩展安装或升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 运行 az group create 命令创建资源组。 以下命令在“eastus” 位置创建名为“MyResourceGroup”的资源组 。

    注意

    可以选择设置备用位置。 若要查看可用位置,请运行 az account list-locations。 本教程使用示例命令中所示的 eastus。

    az group create --name MyResourceGroup --location eastus
    
  4. 运行 az iot hub create 命令创建 IoT 中心。 创建 IoT 中心可能需要数分钟的时间。

    YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

    提示

    创建 IoT 中心后,你将在本快速入门的其余部分使用 Azure IoT Explorer 与 IoT 中心进行交互。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器。 或者,你可以继续使用 CLI 命令。

配置 IoT Explorer

在本快速入门的其余部分中,你将使用 IoT Explorer 将设备注册到 IoT 中心并查看设备遥测数据。 在本部分中,将配置 IoT Explorer 以连接到刚创建的 IoT 中心,并从公共模型存储库中读取即插即用模型。

注意

也可使用 Azure CLI 来注册设备。 使用 az iot hub device-identity create --device-id mydevice --hub-name {YourIoTHubName} 命令注册新设备,使用 az iot hub device-identity connection-string show --device-id mydevice --hub-name {YourIoTHubName} 命令获取设备的主连接字符串 。 记下设备连接字符串后,可直接跳到运行设备示例

若要添加与 IoT 中心的连接:

  1. 运行 az iot hub connection-string show 命令来获取用于 IoT 中心的连接字符串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  2. 复制不带两旁引号字符的连接字符串。

  3. 在 Azure IoT Explorer 的左侧菜单中,选择“IoT 中心”,然后选择“+ 添加连接”。

  4. 将连接字符串粘贴到“连接字符串”框中。

  5. 选择“保存”。

    Screenshot of adding a connection in IoT Explorer

  6. 如果连接成功,IoT Explorer 将切换到“设备”视图。

若要添加公共模型存储库:

  1. 在 IoT Explorer 中,选择“主页”以返回到主页视图。

  2. 在左侧菜单中,选择“IoT 即插即用设置”,然后从下拉菜单中依次选择“+添加”和“公共存储库”。

  3. 此时会在 https://devicemodels.azure.com 中显示公共模型存储库的条目。

    Screenshot of adding the public model repository in IoT Explorer

  4. 选择“保存”。

注册设备

在本部分中,将创建一个新设备实例,并将其注册到所创建的 IoT 中心。 在后面的部分中,将使用新注册的设备的连接信息安全连接设备。

若要注册设备:

  1. 从 IoT Explorer 的主页视图中,选择“IoT 中心”。

  2. 此时应出现之前添加的连接。 在“连接属性”下面选择“查看此中心的设备”。

  3. 选择“+ 新建”,然后输入设备的设备 ID;例如,mydevice。 将所有其它属性保持不变。

  4. 选择创建

    Screenshot of Azure IoT Explorer device identity

  5. 使用复制按钮复制并记下“主连接字符串”字段。 稍后将需要使用此连接字符串。

运行设备示例

在本部分,你要使用 Java SDK 将消息从设备发送到 IoT 中心。 你将运行一个示例,该示例实现了具有两个恒温器传感器的温度控制器。

  1. 打开控制台以安装 Azure IoT Java 设备 SDK,并运行代码示例。 在后续步骤中,你将使用此控制台。

    注意

    如果使用的是 Azure CLI 的本地安装,则现在可能会打开两个控制台窗口。 请确保在刚刚打开的控制台中输入此部分中的命令,而不是用于 CLI 的命令。

    Linux 和 Raspberry Pi OS

    确认已设置 JAVA_HOME (echo $JAVA_HOME) 环境变量。 有关如何设置 JAVA_HOME,请参阅 Linux/Raspberry Pi 先决条件

  2. 将 Azure IoT Java 设备 SDK 克隆到本地计算机:

    git clone https://github.com/Azure/azure-iot-sdk-java.git
    
  3. 导航到 SDK 的根文件夹,然后运行以下命令以生成 SDK 并更新示例。

    cd azure-iot-sdk-java
    mvn install -T 2C -DskipTests
    

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

  4. 设置以下环境变量,使设备能够连接到 Azure IoT。

    • 设置名为 IOTHUB_DEVICE_CONNECTION_STRING 的环境变量。 对于变量值,请使用上一部分保存的设备连接字符串。
    • 设置名为 IOTHUB_DEVICE_SECURITY_TYPE 的环境变量。 对于变量,请使用文本字符串值 connectionString

    CMD

    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    set IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    

    注意

    对于 Windows CMD,每个变量的字符串值的两边没有引号。

    Bash

    export IOTHUB_DEVICE_CONNECTION_STRING="<your connection string here>"
    export IOTHUB_DEVICE_SECURITY_TYPE="connectionString"
    
  5. 导航到示例目录。

    CMD

    cd device\iot-device-samples\pnp-device-sample\temperature-controller-device-sample
    

    Bash

    cd device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample
    
  6. 运行代码示例。

    java -jar -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.TemperatureController"
    

    注意

    此代码示例使用 Azure IoT 即插即用,这使你无需任何手动配置即可将智能设备集成到你的解决方案中。 默认情况下,本文档中的大多数示例都使用 IoT 即插即用。 若要详细了解 IoT PnP 的优点以及使用或不使用它的案例,请参阅什么是 IoT 即插即用?

示例作为注册的设备安全地连接到 IoT 中心,并开始发送遥测消息。 示例输出将显示在控制台中。

查看遥测数据

可以通过 IoT Explorer 查看设备遥测数据。 或者,可以使用 Azure CLI 查看遥测数据。

若要在 Azure IoT Explorer 中查看遥测数据:

  1. 从 IoT Explorer 的 IoT 中心中,选择“查看此中心的设备”,然后从列表中选择自己的设备。

  2. 在设备的左侧菜单中,选择“遥测”。

  3. 确认“使用内置事件中心”设置为“是”,然后选择“开始”。

  4. 查看设备向云发送消息的遥测数据。

    Screenshot of device telemetry in IoT Explorer

  5. 选择“停止”以结束接收事件。

若要读取单个设备组件发送的遥测数据,可以在 IoT Explorer 中使用即插即用功能。 例如,本快速入门中的温度控制器具有两个恒温器:thermostat1 和 thermostat2。 若要查看 thermostat1 报告的温度:

  1. 在 IoT Explorer 中的设备上,从左侧菜单中选择“IoT 即插即用组件”。 然后从组件列表中选择“thermostat1”。

  2. 在“thermostat1”组件窗格中,从顶部菜单中选择“遥测” 。

  3. 在“遥测”窗格中,按照之前执行的相同步骤进行操作。 确保“使用内置事件中心”设置为“是”,然后选择“开始”。

若要使用 Azure CLI 查看设备遥测数据:

  1. 运行 az iot hub monitor-events 命令以监视从设备发送到 IoT 中心的事件。 使用之前在 Azure IoT 中为设备和 IoT 中心创建的名称。

    az iot hub monitor-events --output table --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中查看连接详细信息和遥测输出。

    Starting event monitor, filtering on device: mydevice, use ctrl-c to stop...
    event:
      component: thermostat1
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 24.1
    
    event:
      component: thermostat2
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 33.3
    

Browse code

本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 使用 Azure CLI 和 IoT 资源管理器创建 Azure IoT 中心和设备。 然后,使用 Azure IoT 设备 SDK 示例来运行温度控制器,将此控制器安全地连接到中心,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT 中心的模拟传感器数据。

先决条件

本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:

  • Windows 10
  • Ubuntu 20.04 LTS
  • 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10

在开发计算机上安装以下必备组件(对 Raspberry Pi 另有注明的情况除外):

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • Git
  • Node.js 12 或更高版本。 若要检查节点版本,请运行 node --version
  • Azure IoT Explorer:用于监视和管理 Azure IoT 的基于 GUI 的跨平台实用工具。 如果使用 Raspberry Pi 作为开发平台,建议在另一台计算机上安装 IoT 资源管理器。 如果不想安装 IoT 资源管理器,可使用 Azure CLI 执行相同的步骤。
  • Azure CLI。 在本快速入门中,有两个选项可用于运行 Azure CLI 命令:
    • 使用 Azure Cloud Shell,这是一个交互式 Shell,可在浏览器中运行 CLI 命令。 建议使用此选项,因为无需安装任何插件。 如果是首次使用 Cloud Shell,请登录到 Azure 门户。 按照 Azure Cloud Shell 入门中的步骤启动 Cloud Shell 并选择 Bash 环境
    • (可选)在本地计算机上运行 Azure CLI。 如果已安装 Azure CLI,请运行 az upgrade 以将 CLI 和扩展升级到当前版本。 要安装 Azure CLI,请参阅安装 Azure CLI。 如果使用 Raspberry Pi 作为开发平台,建议使用 Azure Cloud Shell 或在另一台计算机上安装 Azure CLI。

创建 IoT 中心

在本部分中,使用 Azure CLI 创建 IoT 中心和资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。

创建 IoT 中心和资源组:

  1. 启动 Azure CLI:

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果你在本地使用 Azure CLI,请打开控制台(例如 Windows CMD、PowerShell 或 Bash),并登录到 Azure CLI

    若要在本快速入门的其余部分运行 CLI 命令:请复制命令语法,将其粘贴到 Cloud Shell 窗口或 CLI 控制台中,编辑变量值,然后按 Enter。

  2. 运行 az extension add,将“azure-iot”扩展安装或升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 运行 az group create 命令创建资源组。 以下命令在“eastus” 位置创建名为“MyResourceGroup”的资源组 。

    注意

    可以选择设置备用位置。 若要查看可用位置,请运行 az account list-locations。 本教程使用示例命令中所示的 eastus。

    az group create --name MyResourceGroup --location eastus
    
  4. 运行 az iot hub create 命令创建 IoT 中心。 创建 IoT 中心可能需要数分钟的时间。

    YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

    提示

    创建 IoT 中心后,你将在本快速入门的其余部分使用 Azure IoT Explorer 与 IoT 中心进行交互。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器。 或者,你可以继续使用 CLI 命令。

配置 IoT Explorer

在本快速入门的其余部分中,你将使用 IoT Explorer 将设备注册到 IoT 中心并查看设备遥测数据。 在本部分中,将配置 IoT Explorer 以连接到刚创建的 IoT 中心,并从公共模型存储库中读取即插即用模型。

注意

也可使用 Azure CLI 来注册设备。 使用 az iot hub device-identity create --device-id mydevice --hub-name {YourIoTHubName} 命令注册新设备,使用 az iot hub device-identity connection-string show --device-id mydevice --hub-name {YourIoTHubName} 命令获取设备的主连接字符串 。 记下设备连接字符串后,可直接跳到运行设备示例

若要添加与 IoT 中心的连接:

  1. 运行 az iot hub connection-string show 命令来获取用于 IoT 中心的连接字符串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  2. 复制不带两旁引号字符的连接字符串。

  3. 在 Azure IoT Explorer 的左侧菜单中,选择“IoT 中心”,然后选择“+ 添加连接”。

  4. 将连接字符串粘贴到“连接字符串”框中。

  5. 选择“保存”。

    Screenshot of adding a connection in IoT Explorer

  6. 如果连接成功,IoT Explorer 将切换到“设备”视图。

若要添加公共模型存储库:

  1. 在 IoT Explorer 中,选择“主页”以返回到主页视图。

  2. 在左侧菜单中,选择“IoT 即插即用设置”,然后从下拉菜单中依次选择“+添加”和“公共存储库”。

  3. 此时会在 https://devicemodels.azure.com 中显示公共模型存储库的条目。

    Screenshot of adding the public model repository in IoT Explorer

  4. 选择“保存”。

注册设备

在本部分中,将创建一个新设备实例,并将其注册到所创建的 IoT 中心。 在后面的部分中,将使用新注册的设备的连接信息安全连接设备。

若要注册设备:

  1. 从 IoT Explorer 的主页视图中,选择“IoT 中心”。

  2. 此时应出现之前添加的连接。 在“连接属性”下面选择“查看此中心的设备”。

  3. 选择“+ 新建”,然后输入设备的设备 ID;例如,mydevice。 将所有其它属性保持不变。

  4. 选择创建

    Screenshot of Azure IoT Explorer device identity

  5. 使用复制按钮复制并记下“主连接字符串”字段。 稍后将需要使用此连接字符串。

运行设备示例

在本部分,你会使用 Node.js SDK 将消息从设备发送到 IoT 中心。 你将运行一个示例,该示例实现了具有两个恒温器传感器的温度控制器。

  1. 打开一个新的控制台,如 Windows CMD、PowerShell 或 Bash。 在下面的步骤中,使用此控制台来安装 Node.js SDK 并处理 Node.js 示例代码。

    注意

    如果使用的是 Azure CLI 的本地安装,则现在可能会打开两个控制台窗口。 请确保在刚刚打开的控制台中输入此部分中的命令,而不是用于 CLI 的命令。

  2. Azure IoT Node.js SDK 设备示例克隆到本地计算机:

    git clone https://github.com/Azure/azure-iot-sdk-node
    
  3. 导航到示例目录:

    Windows

    cd azure-iot-sdk-node\device\samples\javascript
    

    Linux 或 Raspberry Pi OS

    cd azure-iot-sdk-node/device/samples/javascript
    
  4. 安装 Azure IoT Node.js SDK 和所需的依赖项:

    npm install
    

    此命令按照设备示例目录下 package.json 文件中的指定安装适当的依赖项。

  5. 设置以下两个环境变量,使设备能够连接到 Azure IoT。

    • 设置名为 IOTHUB_DEVICE_CONNECTION_STRING 的环境变量。 对于变量值,请使用上一部分保存的设备连接字符串。
    • 设置名为 IOTHUB_DEVICE_SECURITY_TYPE 的环境变量。 对于变量,请使用文本字符串值 connectionString

    CMD (Windows)

    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    set IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    

    注意

    对于 Windows CMD,每个变量的字符串值的两边没有引号。

    PowerShell

    $env:IOTHUB_DEVICE_CONNECTION_STRING='<your connection string here>'
    $env:IOTHUB_DEVICE_SECURITY_TYPE='connectionString'
    

    Bash

    export IOTHUB_DEVICE_CONNECTION_STRING="<your connection string here>"
    export IOTHUB_DEVICE_SECURITY_TYPE="connectionString"
    
  6. 运行以下代码示例:

    node pnp_temperature_controller.js
    

    注意

    此代码示例使用 Azure IoT 即插即用,这使你无需任何手动配置即可将智能设备集成到你的解决方案中。 默认情况下,本文档中的大多数示例都使用 IoT 即插即用。 若要详细了解 IoT PnP 的优点以及使用或不使用它的案例,请参阅什么是 IoT 即插即用?

示例作为注册的设备安全地连接到 IoT 中心,并开始发送遥测消息。 示例输出将显示在控制台中。

查看遥测数据

可以通过 IoT Explorer 查看设备遥测数据。 或者,可以使用 Azure CLI 查看遥测数据。

若要在 Azure IoT Explorer 中查看遥测数据:

  1. 从 IoT Explorer 的 IoT 中心中,选择“查看此中心的设备”,然后从列表中选择自己的设备。

  2. 在设备的左侧菜单中,选择“遥测”。

  3. 确认“使用内置事件中心”设置为“是”,然后选择“开始”。

  4. 查看设备向云发送消息的遥测数据。

    Screenshot of device telemetry in IoT Explorer

  5. 选择“停止”以结束接收事件。

若要读取单个设备组件发送的遥测数据,可以在 IoT Explorer 中使用即插即用功能。 例如,本快速入门中的温度控制器具有两个恒温器:thermostat1 和 thermostat2。 若要查看 thermostat1 报告的温度:

  1. 在 IoT Explorer 中的设备上,从左侧菜单中选择“IoT 即插即用组件”。 然后从组件列表中选择“thermostat1”。

  2. 在“thermostat1”组件窗格中,从顶部菜单中选择“遥测” 。

  3. 在“遥测”窗格中,按照之前执行的相同步骤进行操作。 确保“使用内置事件中心”设置为“是”,然后选择“开始”。

若要使用 Azure CLI 查看设备遥测数据:

  1. 运行 az iot hub monitor-events 命令以监视从设备发送到 IoT 中心的事件。 使用之前在 Azure IoT 中为设备和 IoT 中心创建的名称。

    az iot hub monitor-events --output table --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中查看连接详细信息和遥测输出。

    Starting event monitor, filtering on device: mydevice, use ctrl-c to stop...
    event:
      component: thermostat1
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 70.5897683228018
    
    event:
      component: thermostat2
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 52.87582619316418
    

Browse code

本快速入门介绍一个基本的 Azure IoT 应用程序开发工作流。 使用 Azure CLI 和 IoT 资源管理器创建 Azure IoT 中心和设备。 然后,使用 Azure IoT 设备 SDK 示例来运行温度控制器,将此控制器安全地连接到中心,并发送遥测数据。 温度控制器示例应用程序在本地计算机上运行,并生成要发送到 IoT 中心的模拟传感器数据。

先决条件

本快速入门在 Windows、Linux 和 Raspberry Pi 上运行。 它已在以下 OS 和设备版本上进行了测试:

  • Windows 10 或 Windows 11
  • Ubuntu 20.04 LTS
  • 在 Raspberry Pi 3 Model B+ 上运行的 Raspberry Pi OS (Raspian) 版本 10

在开发计算机上安装以下必备组件(对 Raspberry Pi 另有注明的情况除外):

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • Git
  • Python。 查看 Azure IoT Python SDK 以了解当前的 Python 版本要求。 若要检查 Python 版本,请运行 python3 --version
  • Azure IoT Explorer:用于监视和管理 Azure IoT 的基于 GUI 的跨平台实用工具。 如果使用 Raspberry Pi 作为开发平台,建议在另一台计算机上安装 IoT 资源管理器。 如果不想安装 IoT 资源管理器,可使用 Azure CLI 执行相同的步骤。
  • Azure CLI。 在本快速入门中,有两个选项可用于运行 Azure CLI 命令:
    • 使用 Azure Cloud Shell,这是一个交互式 Shell,可在浏览器中运行 CLI 命令。 建议使用此选项,因为无需安装任何插件。 如果是首次使用 Cloud Shell,请登录到 Azure 门户。 按照 Azure Cloud Shell 入门中的步骤启动 Cloud Shell 并选择 Bash 环境
    • (可选)在本地计算机上运行 Azure CLI。 如果已安装 Azure CLI,请运行 az upgrade 以将 CLI 和扩展升级到当前版本。 要安装 Azure CLI,请参阅安装 Azure CLI。 如果使用 Raspberry Pi 作为开发平台,建议使用 Azure Cloud Shell 或在另一台计算机上安装 Azure CLI。

创建 IoT 中心

在本部分中,使用 Azure CLI 创建 IoT 中心和资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。

创建 IoT 中心和资源组:

  1. 启动 Azure CLI:

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果你在本地使用 Azure CLI,请打开控制台(例如 Windows CMD、PowerShell 或 Bash),并登录到 Azure CLI

    若要在本快速入门的其余部分运行 CLI 命令:请复制命令语法,将其粘贴到 Cloud Shell 窗口或 CLI 控制台中,编辑变量值,然后按 Enter。

  2. 运行 az extension add,将“azure-iot”扩展安装或升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 运行 az group create 命令创建资源组。 以下命令在“eastus” 位置创建名为“MyResourceGroup”的资源组 。

    注意

    可以选择设置备用位置。 若要查看可用位置,请运行 az account list-locations。 本教程使用示例命令中所示的 eastus。

    az group create --name MyResourceGroup --location eastus
    
  4. 运行 az iot hub create 命令创建 IoT 中心。 创建 IoT 中心可能需要数分钟的时间。

    YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

    提示

    创建 IoT 中心后,你将在本快速入门的其余部分使用 Azure IoT Explorer 与 IoT 中心进行交互。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器。 或者,你可以继续使用 CLI 命令。

配置 IoT Explorer

在本快速入门的其余部分中,你将使用 IoT Explorer 将设备注册到 IoT 中心并查看设备遥测数据。 在本部分中,将配置 IoT Explorer 以连接到刚创建的 IoT 中心,并从公共模型存储库中读取即插即用模型。

注意

也可使用 Azure CLI 来注册设备。 使用 az iot hub device-identity create --device-id mydevice --hub-name {YourIoTHubName} 命令注册新设备,使用 az iot hub device-identity connection-string show --device-id mydevice --hub-name {YourIoTHubName} 命令获取设备的主连接字符串 。 记下设备连接字符串后,可直接跳到运行设备示例

若要添加与 IoT 中心的连接:

  1. 运行 az iot hub connection-string show 命令来获取用于 IoT 中心的连接字符串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  2. 复制不带两旁引号字符的连接字符串。

  3. 在 Azure IoT Explorer 的左侧菜单中,选择“IoT 中心”,然后选择“+ 添加连接”。

  4. 将连接字符串粘贴到“连接字符串”框中。

  5. 选择“保存”。

    Screenshot of adding a connection in IoT Explorer

  6. 如果连接成功,IoT Explorer 将切换到“设备”视图。

若要添加公共模型存储库:

  1. 在 IoT Explorer 中,选择“主页”以返回到主页视图。

  2. 在左侧菜单中,选择“IoT 即插即用设置”,然后从下拉菜单中依次选择“+添加”和“公共存储库”。

  3. 此时会在 https://devicemodels.azure.com 中显示公共模型存储库的条目。

    Screenshot of adding the public model repository in IoT Explorer

  4. 选择“保存”。

注册设备

在本部分中,将创建一个新设备实例,并将其注册到所创建的 IoT 中心。 在后面的部分中,将使用新注册的设备的连接信息安全连接设备。

若要注册设备:

  1. 从 IoT Explorer 的主页视图中,选择“IoT 中心”。

  2. 此时应出现之前添加的连接。 在“连接属性”下面选择“查看此中心的设备”。

  3. 选择“+ 新建”,然后输入设备的设备 ID;例如,mydevice。 将所有其它属性保持不变。

  4. 选择创建

    Screenshot of Azure IoT Explorer device identity

  5. 使用复制按钮复制并记下“主连接字符串”字段。 稍后将需要使用此连接字符串。

运行设备示例

在本部分,你要使用 Python SDK 将消息从设备发送到 IoT 中心。 你将运行一个示例,该示例实现了具有两个恒温器传感器的温度控制器。

  1. 打开一个新的控制台,如 Windows CMD、PowerShell 或 Bash。 在下面的步骤中,使用此控制台来安装 Python SDK 并处理 Python 示例代码。

    注意

    如果使用的是 Azure CLI 的本地安装,则现在可能会打开两个控制台窗口。 请确保在刚刚打开的控制台中输入此部分中的命令,而不是用于 CLI 的命令。

  2. Azure IoT Python SDK 设备示例克隆到本地计算机:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  3. 导航到示例目录:

    Windows

    cd azure-iot-sdk-python\samples\pnp
    

    Linux 或 Raspberry Pi OS

    cd azure-iot-sdk-python/samples/pnp
    
  4. 安装 Azure IoT Python SDK:

    pip3 install azure-iot-device
    
  5. 设置以下环境变量,使设备能够连接到 Azure IoT。

    • 设置名为 IOTHUB_DEVICE_CONNECTION_STRING 的环境变量。 对于变量值,请使用上一部分保存的设备连接字符串。
    • 设置名为 IOTHUB_DEVICE_SECURITY_TYPE 的环境变量。 对于变量,请使用文本字符串值 connectionString

    CMD (Windows)

    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    set IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    

    注意

    对于 Windows CMD,每个变量的字符串值的两边没有引号。

    PowerShell

    $env:IOTHUB_DEVICE_CONNECTION_STRING='<your connection string here>'
    $env:IOTHUB_DEVICE_SECURITY_TYPE='connectionString'
    

    Bash

    export IOTHUB_DEVICE_CONNECTION_STRING="<your connection string here>"
    export IOTHUB_DEVICE_SECURITY_TYPE="connectionString"
    
  6. 运行以下示例文件的代码。

    python temp_controller_with_thermostats.py
    

    注意

    此代码示例使用 Azure IoT 即插即用,这使你无需任何手动配置即可将智能设备集成到你的解决方案中。 默认情况下,本文档中的大多数示例都使用 IoT 即插即用。 若要详细了解 IoT 即插即用的优点以及使用或不使用它的案例,请参阅什么是 IoT 即插即用?

示例作为注册的设备安全地连接到 IoT 中心,并开始发送遥测消息。 示例输出将显示在控制台中。

查看遥测数据

可以通过 IoT Explorer 查看设备遥测数据。 或者,可以使用 Azure CLI 查看遥测数据。

若要在 Azure IoT Explorer 中查看遥测数据:

  1. 从 IoT Explorer 的 IoT 中心中,选择“查看此中心的设备”,然后从列表中选择自己的设备。

  2. 在设备的左侧菜单中,选择“遥测”。

  3. 确认“使用内置事件中心”设置为“是”,然后选择“开始”。

  4. 查看设备向云发送消息的遥测数据。

    Screenshot of device telemetry in IoT Explorer

  5. 选择“停止”以结束接收事件。

若要读取单个设备组件发送的遥测数据,可以在 IoT Explorer 中使用即插即用功能。 例如,本快速入门中的温度控制器具有两个恒温器:thermostat1 和 thermostat2。 若要查看 thermostat1 报告的温度:

  1. 在 IoT Explorer 中的设备上,从左侧菜单中选择“IoT 即插即用组件”。 然后从组件列表中选择“thermostat1”。

  2. 在“thermostat1”组件窗格中,从顶部菜单中选择“遥测” 。

  3. 在“遥测”窗格中,按照之前执行的相同步骤进行操作。 确保“使用内置事件中心”设置为“是”,然后选择“开始”。

若要使用 Azure CLI 查看设备遥测数据:

  1. 运行 az iot hub monitor-events 命令以监视从设备发送到 IoT 中心的事件。 使用之前在 Azure IoT 中为设备和 IoT 中心创建的名称。

    az iot hub monitor-events --output table --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中查看连接详细信息和遥测输出。

    Starting event monitor, filtering on device: mydevice, use ctrl-c to stop...
    event:
      component: thermostat1
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 28
    
    event:
      component: thermostat2
      interface: dtmi:com:example:TemperatureController;2
      module: ''
      origin: mydevice
      payload:
        temperature: 10
    

清理资源

如果不再需要本快速入门中创建的 Azure 资源,可以使用 Azure CLI 将其删除。

重要

删除资源组的操作不可逆。 资源组以及包含在其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。

若要按名称删除资源组,请执行以下操作:

  1. 运行 az group delete 命令。 此命令将删除创建的资源组、IoT 中心和设备注册。

    az group delete --name MyResourceGroup
    
  2. 运行 az group list 命令,确认资源组是否已删除。

    az group list
    

后续步骤

在本快速入门中,你已了解一个可将设备安全连接到云并发送设备到云的遥测数据的基本 Azure IoT 应用程序工作流。 你已使用 Azure CLI 创建了 Azure IoT 中心和设备实例。 接着,使用 Azure IoT 设备 SDK 创建一个温度控制器,将它连接到中心,然后发送遥测数据。 你还使用 Azure CLI 监视了遥测数据。

接下来,请浏览以下这些文章,以详细了解如何使用 Azure IoT 构建设备解决方案。