快速入门:控制连接到 IoT 中心的设备 (Node.js)

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

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

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

如果没有 Azure 订阅,请在开始前创建一个试用帐户

先决条件

本快速入门中运行的两个示例应用程序是使用 Node.js 编写的。 开发计算机上需要有 Node.js v4.x.x 或更高版本。

可从 nodejs.org 为下载适用于多个平台的 Node.js。

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

node --version

如果尚未进行此操作,请从 https://github.com/Azure-Samples/azure-iot-samples-node/archive/master.zip 下载示例 Node.js 项目并提取 ZIP 存档。

创建 IoT 中心

如果已完成上一快速入门:将遥测数据从设备发送到 IoT 中心,则可跳过此步骤。

第一步是使用 Azure 门户在订阅中创建 IoT 中心。 IoT 中心用于将大量遥测数据从许多设备引入到云中。 然后,该中心会允许一个或多个在云中运行的后端服务读取和处理该遥测数据。

  1. 登录到 Azure 门户

  2. 选择“创建资源” > “物联网” > “IoT 中心”。

    选择安装 IoT 中心

  3. 在“IoT 中心”窗格中,输入 IoT 中心的以下信息:

    • 订阅:选择需要将其用于创建此 IoT 中心的订阅。

    • 资源组:创建用于托管 IoT 中心的资源组,或使用现有的资源组。 有关详细信息,请参阅使用资源组管理 Azure 资源

    • 区域:选择最近的位置。

    • 名称:创建 IoT 中心的名称。 如果输入的名称可用,会显示一个绿色复选标记。

    Important

    IoT 中心将公开为 DNS 终结点,因此,命名时请务必避免包含任何敏感信息。

    IoT 中心基本信息窗口

  4. 选择“下一步: 大小和规模”,以便继续创建 IoT 中心。

  5. 选择“定价和缩放层”。 就本文来说,请选择“F1 - 免费”层(前提是此层在订阅上仍然可用)。 有关详细信息,请参阅定价和缩放层

    IoT 中心大小和规模窗口

  6. 选择“查看 + 创建”。

  7. 查看 IoT 中心信息,然后单击“创建”。 创建 IoT 中心可能需要数分钟的时间。 可在“通知”窗格中监视进度。

注册设备

如果已完成上一快速入门:将遥测数据从设备发送到 IoT 中心,则可跳过此步骤。

必须先将设备注册到 IoT 中心,然后该设备才能进行连接。 在本快速入门中,请使用 Azure CLI 来注册模拟设备。

  1. 添加 IoT 中心 CLI 扩展并创建设备标识。 将 {YourIoTHubName} 替换为 IoT 中心的名称:

    az extension add --name azure-cli-iot-ext
    az iot hub device-identity create --hub-name {YourIoTHubName} --device-id MyNodeDevice
    

    如果为设备选择不同名称,则在运行示例应用程序之前,请在其中更新设备名称。

  2. 运行以下命令,获取刚注册设备的设备连接字符串:

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

    记下看起来类似于 Hostname=...= 的设备连接字符串。 稍后会在快速入门中用到此值。

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

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

    记下看起来类似于 Hostname=...= 的服务连接字符串。 稍后会在快速入门中用到此值。 服务连接字符串与设备连接字符串不同。

侦听直接方法调用

模拟设备应用程序会连接到 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
    

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

    运行后端应用程序

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

    模拟客户端的变化

清理资源

如果打算继续学习教程,请保留资源组和 IoT 中心,稍后再进行使用。

如果不再需要 IoT 中心,请在门户中删除该中心与资源组。 为此,请选择包含 IoT 中心的资源组,然后单击“删除”。

后续步骤

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

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