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

快速入门:控制连接到 IoT 中心的设备

在本快速入门中,会使用直接方法来控制连接到 IoT 中心的模拟设备 。 IoT 中心是一项 Azure 服务,用于从云端管理 IoT 设备,以及将大量设备遥测数据引入到云端进行存储或处理。 可使用直接方法来远程更改连接到 IoT 中心的设备的行为。

本快速入门使用两个预先编写的 .NET 应用程序:

  • 模拟设备应用程序,可响应从服务应用程序调用的直接方法。 为了接收直接方法调用,此应用程序会连接到 IoT 中心上特定于设备的终结点。

  • 服务应用程序,可在模拟设备上调用直接方法。 为了在设备上调用直接方法,此应用程序会连接到 IoT 中心上的服务端终结点。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建一个

  • 本快速入门中运行的两个示例应用程序是使用 C# 编写的。 开发计算机上需要有 .NET SDK 6.0 或更高版本。

    可以从 .NET 为多个平台下载 .NET Core SDK。

    可以使用以下命令验证开发计算机上 C# 的当前版本:

    dotnet --version
    
  • 从 GitHub 克隆或下载 Azure IoT C# SDK

  • 确保已在防火墙中打开端口 8883。 本快速入门中的设备示例使用 MQTT 协议,该协议通过端口 8883 进行通信。 在某些公司和教育网络环境中,此端口可能被阻止。 有关解决此问题的更多信息和方法,请参阅连接到 IoT 中心(MQTT)

注意

本文使用最新版本的 Azure IoT 扩展(称为 azure-iot)。 旧版本称为 azure-cli-iot-ext。只应同时安装有一个版本。 可以使用命令 az extension list 来验证当前安装的扩展。

使用 az extension remove --name azure-cli-iot-ext 可删除扩展的旧版本。

使用 az extension add --name azure-iot 可添加扩展的新版本。

若要查看已安装了哪些扩展,请使用 az extension list

创建 IoT 中心

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

如果你的 Azure 订阅中已有 IoT 中心,可以跳过本部分。

创建 IoT 中心和资源组:

  1. 启动 CLI 应用程序。 若要在本快速入门的其余部分运行 CLI 命令,请复制命令语法,将其粘贴到 CLI 应用程序中,编辑变量值,然后按 Enter 键。

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果要在本地使用 Azure CLI,请启动 CLI 控制台应用程序并登录到 Azure CLI。
  2. 运行 az extension add,安装 azure-iot 扩展或将其升级到当前版本。

    az extension add --upgrade --name azure-iot
    
  3. 在 CLI 应用程序中,运行 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 中心后,在本快速入门的其余部分,你可以继续使用 CLI 命令与中心交互。 或者,可以使用 Azure IoT 资源管理器替代 CLI 命令。 IoT 资源管理器是一种 GUI 应用程序,让你可以连接到现有的 IoT 中心并添加、管理和监视设备。 若要了解详细信息,请参阅安装并使用 Azure IoT 资源管理器

注册设备

必须先将设备注册到 IoT 中心,然后该设备才能进行连接。 在本部分中,将使用 Azure CLI 创建设备标识。

如果你已在 IoT 中心注册了设备,可以跳过本部分。

创建设备标识:

  1. 在 CLI shell 中运行 az iot hub device-identity create 命令。 此命令创建设备标识。

    YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。

    myDevice。 在本快速入门的其余部分中,可以直接使用此名称作为设备 ID。 或者,也可使用其他名称。

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName} 
    
  2. 运行 az iot hub device-identity connection-string show 命令。

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}
    

    连接字符串输出采用以下格式:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. 在安全位置保存连接字符串。

注意

让你的 CLI 应用程序保持开启。 因为在稍后的步骤中需要用到。

检索服务连接字符串

还需要 IoT 中心的服务连接字符串,使服务应用程序能够连接到中心并检索消息。 服务连接字符串适用于整个 IoT 中心,这与上一部分中检索到的设备连接字符串不同。

以下命令检索 IoT 中心的服务连接字符串:

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

记下如下所示的服务连接字符串:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

稍后会在快速入门中用到此值。

模拟设备

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,发送模拟遥测数据,并侦听中心的直接方法调用。 在本快速入门中,中心的直接方法调用告知设备对其发送遥测的间隔进行更改。 执行直接方法后,模拟设备会将确认发送回中心。

  1. 在本地终端窗口中,导航到示例 C# 项目的根文件夹。 然后导航到 iothub\device\samples\getting started\SimulatedDeviceWithCommand 文件夹。

  2. 运行以下命令,安装模拟设备应用程序所需的包:

    dotnet restore
    
  3. 运行以下命令,生成并运行模拟设备应用程序。

    {DeviceConnectionString}:将此占位符值替换为之前记下的设备连接字符串。

    dotnet run -- "{DeviceConnectionString}"
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    运行模拟设备

调用直接方法

服务应用程序会连接到 IoT 中心的服务端终结点。 应用程序通过 IoT 中心对设备进行直接方法调用,并侦听确认。 IoT 中心服务应用程序通常在云中运行。

  1. 在另一本地终端窗口中,导航到示例 C# 项目的根文件夹。 然后导航到 iothub\device\samples\getting started\InvokeDeviceMethod 文件夹。

  2. 在本地终端窗口中,运行以下命令,安装服务应用程序所需的库:

    dotnet build
    
  3. 在本地终端窗口中,运行以下命令以生成并运行服务应用程序。

    {ServiceConnectionString}:将此占位符值替换为之前记下的 IoT 中心服务连接字符串。

    {DeviceName}:将此占位符替换为已注册的设备的名称。

    dotnet run -- -c "{ServiceConnectionString}" -d {DeviceName}
    

    以下屏幕截图显示了应用程序对设备进行直接方法调用并接收确认后的输出:

    运行服务应用程序

    运行服务应用程序后,在运行模拟设备的控制台窗口中会出现一条消息,且其发送消息的速率也会发生变化:

    模拟客户端的变化

本快速入门使用两个 Java 应用程序:

  • 从后端应用程序调用的可响应直接方法的模拟设备应用程序。
  • 在模拟设备上调用直接方法的服务应用程序。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建一个

  • Java SE 开发工具包 8。 在针对 Azure 和 Azure Stack 的 Java 长期支持中的“长期支持”下选择“Java 8”。

    可以使用以下命令验证开发计算机上 Java 的当前版本:

    java -version
    
  • Apache Maven 3

    可以使用以下命令验证开发计算机上 Maven 的当前版本:

    mvn --version
    
  • 从 GitHub 克隆或下载 Azure IoT Java 示例

  • 确保已在防火墙中打开端口 8883。 本快速入门中的设备示例使用 MQTT 协议,该协议通过端口 8883 进行通信。 在某些公司和教育网络环境中,此端口可能被阻止。 有关解决此问题的更多信息和方法,请参阅连接到 IoT 中心(MQTT)

注意

本文使用最新版本的 Azure IoT 扩展(称为 azure-iot)。 旧版本称为 azure-cli-iot-ext。只应同时安装有一个版本。 可以使用命令 az extension list 来验证当前安装的扩展。

使用 az extension remove --name azure-cli-iot-ext 可删除扩展的旧版本。

使用 az extension add --name azure-iot 可添加扩展的新版本。

若要查看已安装了哪些扩展,请使用 az extension list

创建 IoT 中心

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

如果你的 Azure 订阅中已有 IoT 中心,可以跳过本部分。

创建 IoT 中心和资源组:

  1. 启动 CLI 应用程序。 若要在本快速入门的其余部分运行 CLI 命令,请复制命令语法,将其粘贴到 CLI 应用程序中,编辑变量值,然后按 Enter 键。

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果要在本地使用 Azure CLI,请启动 CLI 控制台应用程序并登录到 Azure CLI。
  2. 运行 az extension add,安装 azure-iot 扩展或将其升级到当前版本。

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

    注意

    (可选)可以设置其他位置。 若要查看可用位置,请运行 az account list-locations

    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 Cloud Shell 创建设备标识。

如果你已在 IoT 中心注册了设备,可以跳过本部分。

  1. 在 Azure Cloud Shell 中运行 az iot hub device-identity create 命令,创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyJavaDevice:这是所注册的设备的名称。 建议使用 MyJavaDevice,如图所示。 如果为设备选择不同名称,则可能还需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az iot hub device-identity create \
      --hub-name {YourIoTHubName} --device-id MyJavaDevice
    
  2. 在 Azure Cloud Shell 中运行 az iot hub device-identity connection-string show 命令,获取刚刚注册的设备的设备连接字符串:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    az iot hub device-identity connection-string show\
      --hub-name {YourIoTHubName} \
      --device-id MyJavaDevice \
      --output table
    

    记下如下所示的设备连接字符串:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    稍后会在快速入门中用到此值。

检索服务连接字符串

还需一个服务连接字符串,以便后端应用程序能够连接到 IoT 中心并检索消息 。 以下命令检索 IoT 中心的服务连接字符串:

YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

记下如下所示的服务连接字符串:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

稍后会在快速入门中用到此值。 此服务连接字符串与你在上一步中记录的设备连接字符串不同。

模拟设备

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,发送模拟遥测数据,并侦听中心的直接方法调用。 在本快速入门中,中心的直接方法调用告知设备对其发送遥测的间隔进行更改。 执行直接方法后,模拟设备会将确认发送回中心。

  1. 在本地终端窗口中,导航到示例 Java 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\simulated-device-2 文件夹。

  2. 在所选文本编辑器中打开 src/main/java/com/microsoft/docs/iothub/samples/SimulatedDevice.java 文件 。

    connString 变量的值替换为之前记下的设备连接字符串。 然后将更改保存到 SimulatedDevice.java

  3. 在本地终端窗口中,运行以下命令以安装所需的库,并生成模拟设备应用程序:

    mvn clean package
    
  4. 在本地终端窗口中,运行以下命令,以便运行模拟设备应用程序:

    java -jar target/simulated-device-2-1.0.0-with-deps.jar
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    设备发送到 IoT 中心的遥测的输出

调用直接方法

后端应用程序会连接到 IoT 中心上的服务端终结点。 应用程序通过 IoT 中心对设备进行直接方法调用,并侦听确认。 IoT 中心后端应用程序通常在云中运行。

  1. 在另一个本地终端窗口中,导航到示例 Java 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\back-end-application 文件夹 。

  2. 在所选文本编辑器中打开 src/main/java/com/microsoft/docs/iothub/samples/BackEndApplication.java 文件 。

    iotHubConnectionString 变量的值替换为以前记下的服务连接字符串。 然后将更改保存到 BackEndApplication.java

  3. 在本地终端窗口中运行以下命令,以安装所需的库并生成后端应用程序:

    mvn clean package
    
  4. 在本地终端窗口中,运行以下命令,以便运行终端应用程序:

    java -jar target/back-end-application-1.0.0-with-deps.jar
    

    以下屏幕截图显示了应用程序对设备进行直接方法调用并接收确认后的输出:

    应用程序通过 IoT 中心进行直接方法调用时的输出

    运行后端应用程序后,在运行模拟设备的控制台窗口中会出现一条消息,且其发送消息的速率也会发生变化:

    来自设备的控制台消息显示它的变化速率

本快速入门使用两个 Node.js 应用程序:

  • 从后端应用程序调用的可响应直接方法的模拟设备应用程序。 为了接收直接方法调用,此应用程序会连接到 IoT 中心上特定于设备的终结点。
  • 后端应用程序,可在模拟设备上调用直接方法。 为了在设备上调用直接方法,此应用程序会连接到 IoT 中心上的服务特定终结点。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建一个

  • Node.js 12+

    可以使用以下命令验证开发计算机上 Node.js 当前的版本:

    node --version
    
  • 从 GitHub 克隆或下载 Azure IoT Node.js 示例

  • 确保已在防火墙中打开端口 8883。 本快速入门中的设备示例使用 MQTT 协议,该协议通过端口 8883 进行通信。 在某些公司和教育网络环境中,此端口可能被阻止。 有关解决此问题的更多信息和方法,请参阅连接到 IoT 中心(MQTT)

注意

本文使用最新版本的 Azure IoT 扩展(称为 azure-iot)。 旧版本称为 azure-cli-iot-ext。只应同时安装有一个版本。 可以使用命令 az extension list 来验证当前安装的扩展。

使用 az extension remove --name azure-cli-iot-ext 可删除扩展的旧版本。

使用 az extension add --name azure-iot 可添加扩展的新版本。

若要查看已安装了哪些扩展,请使用 az extension list

创建 IoT 中心

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

如果你的 Azure 订阅中已有 IoT 中心,可以跳过本部分。

创建 IoT 中心和资源组:

  1. 启动 CLI 应用程序。 若要在本快速入门的其余部分运行 CLI 命令,请复制命令语法,将其粘贴到 CLI 应用程序中,编辑变量值,然后按 Enter 键。

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果要在本地使用 Azure CLI,请启动 CLI 控制台应用程序并登录到 Azure CLI。
  2. 运行 az extension add,安装 azure-iot 扩展或将其升级到当前版本。

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

    注意

    (可选)可以设置其他位置。 若要查看可用位置,请运行 az account list-locations

    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 CLI 创建设备标识。

如果你已在 IoT 中心注册了设备,可以跳过本部分。

  1. 在 Azure Cloud Shell 中运行 az iot hub device-identity create 命令,创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyNodeDevice:这是所注册的设备的名称。 建议使用 MyNodeDevice,如图所示。 如果为设备选择不同名称,则可能还需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az iot hub device-identity create \
      --hub-name {YourIoTHubName} --device-id MyNodeDevice
    
  2. 在 Azure Cloud Shell 中运行 az iot hub device-identity connection-string show 命令,获取刚刚注册的设备的设备连接字符串:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    az iot hub device-identity connection-string show \
      --hub-name {YourIoTHubName} \
      --device-id MyNodeDevice \
      --output table
    

    记下如下所示的设备连接字符串:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    稍后会在快速入门中用到此值。

检索服务连接字符串

还需要 IoT 中心的服务连接字符串,使后端应用程序能够连接到 IoT 中心并检索消息。 以下命令检索 IoT 中心的服务连接字符串:

YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

az iot hub connection-string show \
  --policy-name service --hub-name {YourIoTHubName} --output table

记下如下所示的服务连接字符串:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

稍后会在快速入门中用到此值。 此服务连接字符串与你在上一步中记录的设备连接字符串不同。

模拟设备

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,发送模拟遥测数据,并侦听中心的直接方法调用。 在本快速入门中,中心的直接方法调用告知设备对其发送遥测的间隔进行更改。 执行直接方法后,模拟设备会将确认发送回中心。

  1. 在本地终端窗口中,导航到示例 Node.js 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\simulated-device-2 文件夹。

  2. 在所选文本编辑器中打开 SimulatedDevice.js 文件 。

    connectionString 变量的值替换为之前记下的设备连接字符串。 然后将更改保存到 SimulatedDevice.js

  3. 在本地终端窗口中,运行以下命令以安装所需的库,并运行模拟设备应用程序:

    npm install
    node SimulatedDevice.js
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    运行模拟设备

调用直接方法

后端应用程序会连接到 IoT 中心上的服务端终结点。 应用程序通过 IoT 中心对设备进行直接方法调用,并侦听确认。 IoT 中心后端应用程序通常在云中运行。

  1. 在另一个本地终端窗口中,导航到示例 Node.js 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\back-end-application 文件夹 。

  2. 在所选文本编辑器中打开 BackEndApplication.js 文件 。

    connectionString 变量的值替换为以前记下的服务连接字符串。 然后将更改保存到 BackEndApplication.js

  3. 在本地终端窗口中运行以下命令,以安装所需的库并运行后端应用程序:

    npm install
    node BackEndApplication.js
    

    以下屏幕截图显示了应用程序对设备进行直接方法调用并接收确认后的输出:

    应用程序对设备进行直接方法调用时的输出

    运行后端应用程序后,在运行模拟设备的控制台窗口中会出现一条消息,且其发送消息的速率也会发生变化:

    模拟客户端发生更改时的输出

本快速入门使用两个 Python 应用程序:

  • 从后端应用程序调用的可响应直接方法的模拟设备应用程序。
  • 后端应用程序,可在模拟设备上调用直接方法。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建一个

  • Python 3.7+。 有关支持的其他 Python 版本,请参阅 Azure IoT 设备功能

  • 从 GitHub 克隆或下载 Azure IoT Python 示例

  • 确保已在防火墙中打开端口 8883。 本快速入门中的设备示例使用 MQTT 协议,该协议通过端口 8883 进行通信。 在某些公司和教育网络环境中,此端口可能被阻止。 有关解决此问题的更多信息和方法,请参阅连接到 IoT 中心(MQTT)

注意

本文使用最新版本的 Azure IoT 扩展(称为 azure-iot)。 旧版本称为 azure-cli-iot-ext。只应同时安装有一个版本。 可以使用命令 az extension list 来验证当前安装的扩展。

使用 az extension remove --name azure-cli-iot-ext 可删除扩展的旧版本。

使用 az extension add --name azure-iot 可添加扩展的新版本。

若要查看已安装了哪些扩展,请使用 az extension list

创建 IoT 中心

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

如果你的 Azure 订阅中已有 IoT 中心,可以跳过本部分。

创建 IoT 中心和资源组:

  1. 启动 CLI 应用程序。 若要在本快速入门的其余部分运行 CLI 命令,请复制命令语法,将其粘贴到 CLI 应用程序中,编辑变量值,然后按 Enter 键。

    • 如果使用 Cloud Shell,请在 CLI 命令上选择试用按钮,以在拆分浏览器窗口中启动 Cloud Shell。 或者,你可以在单独的浏览器选项卡中打开 Cloud Shell
    • 如果要在本地使用 Azure CLI,请启动 CLI 控制台应用程序并登录到 Azure CLI。
  2. 运行 az extension add,安装 azure-iot 扩展或将其升级到当前版本。

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

    注意

    (可选)可以设置其他位置。 若要查看可用位置,请运行 az account list-locations

    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 Cloud Shell 来注册模拟设备。

如果你已在 IoT 中心注册了设备,可以跳过本部分。

  1. 在 Azure Cloud Shell 中运行 az iot hub device-identity create 命令,创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyPythonDevice:这是所注册的设备的名称。 建议使用 MyPythonDevice,如图所示。 如果为设备选择不同名称,则可能还需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az iot hub device-identity create --hub-name {YourIoTHubName} --device-id MyPythonDevice
    
  2. 在 Azure Cloud Shell 中运行 az iot hub device-identity connection-string show 命令,获取刚刚注册的设备的设备连接字符串:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    az iot hub device-identity connection-string show --hub-name {YourIoTHubName} --device-id MyPythonDevice --output table
    

    记下如下所示的设备连接字符串:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    稍后会在快速入门中用到此值。

检索服务连接字符串

还需一个服务连接字符串,以便后端应用程序能够连接到 IoT 中心并检索消息 。 以下命令检索 IoT 中心的服务连接字符串:

YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

az iot hub connection-string show \
  --policy-name service \
  --hub-name {YourIoTHubName} \
  --output table

记下如下所示的服务连接字符串:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

稍后会在快速入门中用到此值。 此服务连接字符串与你在上一步中记录的设备连接字符串不同。

模拟设备

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,发送模拟遥测数据,并侦听中心的直接方法调用。 在本快速入门中,中心的直接方法调用告知设备对其发送遥测的间隔进行更改。 执行直接方法后,模拟设备会将确认发送回中心。

  1. 在本地终端窗口中,导航到示例 Python 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\simulated-device-2 文件夹。

  2. 在所选文本编辑器中打开 SimulatedDeviceSync.py 文件。

    CONNECTION_STRING 变量的值替换为之前记下的设备连接字符串。 然后将更改保存到 SimulatedDeviceSync.py

  3. 在本地终端窗口中,运行以下命令,为模拟设备应用程序安装所需的库:

    pip install azure-iot-device
    
  4. 在本地终端窗口中,运行以下命令,以便运行模拟设备应用程序:

    python SimulatedDeviceSync.py
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    运行模拟设备

调用直接方法

后端应用程序会连接到 IoT 中心上的服务端终结点。 应用程序通过 IoT 中心对设备进行直接方法调用,并侦听确认。 IoT 中心后端应用程序通常在云中运行。

  1. 在其他本地终端窗口中,导航到示例 Python 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\back-end-application 文件夹 。

  2. 在所选文本编辑器中打开 BackEndApplication.py 文件 。

    CONNECTION_STRING 变量的值替换为以前记下的服务连接字符串。 然后将更改保存到 BackEndApplication.py

  3. 在本地终端窗口中,运行以下命令,为模拟设备应用程序安装所需的库:

    pip install azure-iot-hub
    
  4. 在本地终端窗口中,运行以下命令,以便运行终端应用程序:

    python BackEndApplication.py
    

    以下屏幕截图显示了应用程序对设备进行直接方法调用并接收确认后的输出:

    运行后端应用程序

    运行后端应用程序后,在运行模拟设备的控制台窗口中会出现一条消息,且其发送消息的速率也会发生变化:

    模拟客户端的变化

清理资源

如果想要继续学习下一篇建议的文章,可以保留已创建的资源,以便重复使用。

否则,可删除本文中创建的 Azure 资源,避免收费。

重要

删除资源组的操作不可逆。 资源组以及包含在其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有的包含要保留资源的资源组中创建了 IoT 中心,则只删除 IoT 中心资源本身,而不要删除资源组。

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

  1. 登录到 Azure 门户,然后选择“资源组”。

  2. 在“按名称筛选”文本框中,键入包含 IoT 中心的资源组的名称。

  3. 在结果列表中的资源组右侧,选择“...”,然后选择“删除资源组” 。

    删除

  4. 系统会要求确认是否删除资源组。 再次键入资源组的名称进行确认,然后选择“删除” 。 片刻之后,将会删除该资源组及其包含的所有资源。

后续步骤

在本快速入门中,你已从服务应用程序调用了设备上的直接方法,并在模拟设备应用程序中响应了直接方法调用。

若要了解如何将设备到云的消息路由到云中的不同目标,请继续学习下一教程。