将 Azure IoT Edge 网关连接到远程监控预配置解决方案,并发送模拟遥测数据

本教程演示如何使用 Azure IoT Edge 来模拟要发送到远程监控预配置解决方案的温度和湿度数据。 本教程使用:

  • Azure IoT Edge 实现示例网关。
  • IoT 套件远程监控预配置解决方案作为基于云的后端。

概述

本教程会完成以下步骤:

  • 将远程监控预配置解决方案的实例部署到 Azure 订阅。 此步骤会自动部署并配置多个 Azure 服务。
  • 将 Intel NUC 网关设备设置为与计算机和远程监控解决方案通信。
  • 配置 IoT Edge 网关,以便发送可在解决方案仪表板上查看的模拟遥测数据。

先决条件

需要有效的 Azure 订阅才能完成此教程。

Note

如果没有帐户,可以创建一个试用帐户,只需几分钟即可完成。 有关详细信息,请参阅 Azure 试用

所需软件

需要在台式机上安装 SSH 客户端,然后才能远程访问 Intel NUC 上的命令行。

  • Windows 不包括 SSH 客户端。 建议使用 PuTTY
  • 大多数 Linux 发行版和 Mac OS 包括命令行 SSH 实用工具。

所需硬件

一台台式机,用于通过远程方式连接到 Intel NUC 上的命令行。

IoT 商业网关工具包。 本教程使用套件中的以下项目:

  • 具有 4G 内存和蓝牙扩展卡的 Intel® NUC Kit DE3815TYKE
  • 电源适配器

预配解决方案

如果尚未在帐户中预配远程监控预配置解决方案,请执行以下步骤:

  1. 使用 Azure 帐户凭据登录到 azureiotsuite.cn,并单击“+”创建解决方案。
  2. 单击“远程监控”磁贴上的“选择”。
  3. 为远程监控预配置解决方案输入 解决方案名称
  4. 选择要用于预配解决方案的“区域”和“订阅”。
  5. 单击“创建解决方案” 开始预配过程。 运行此过程通常需要花费几分钟时间。

等待预配过程完成

  1. 单击状态为“正在预配”的解决方案磁贴。
  2. 在 Azure 订阅中部署 Azure 服务时,请注意“预配状态” 。
  3. 预配完成后,状态会更改为“就绪” 。
  4. 单击磁贴,右窗格中随即会显示解决方案的详细信息。

Note

如果在部署预配置解决方案时遇到问题,请参阅 azureiotsuite.cn 站点权限常见问题解答。 如果问题仍然存在,请在 门户中创建服务票证。

是否有你预期会看到但没有列出的解决方案详细信息? 请在 用户之声中向我们提供功能建议。

Warning

远程监控解决方案在 Azure 订阅中预配一组 Azure 服务。 部署反映实际企业体系结构。 要避免产生不必要的 Azure 使用费用,请在使用完预配置解决方案的实例后,在 azureiotsuite.cn 上将其删除。 如果再次需要预配置解决方案,可以轻松地重新创建它。 若要详细了解如何在远程监控解决方案运行时减少消耗,请参阅出于演示目的配置 Azure IoT 套件预配置解决方案

查看解决方案仪表板

该解决方案仪表板可让你管理部署的解决方案。 例如,可以查看遥测数据、添加设备以及调用方法。

  1. 当预配完成且预配置解决方案的磁贴指示“就绪”时,请选择“启动”,在新的选项卡中打开远程监控解决方案门户。

    启动预配置解决方案

  2. 默认情况下,此解决方案门户会显示 仪表板。 通过页面左侧的菜单导航到解决方案门户的其他区域。

    远程监控预配置解决方案仪表板

添加设备

连接到预配置解决方案的设备必须能够使用有效凭据对 IoT 中心识别自身。 用户可从解决方案仪表板中检索设备凭据。 本教程后文中的客户端应用程序要采用该设备凭据。

若要在远程监控解决方案中添加设备,请在解决方案仪表板中完成以下步骤:

  1. 在仪表板左下角,单击“添加设备” 。

    添加设备

  2. 在“自定义设备”面板中,单击“新增”。

    添加自定义设备

  3. 选择“让我定义自己的设备 ID”。 输入设备 ID(例如 device01),单击“检查 ID”验证该名称是否尚未在解决方案中使用,然后单击“创建”预配设备。

    添加设备 ID

  4. 记下设备凭据(“设备 ID”、“IoT 中心主机名”和“设备密钥”)。 Raspberry Pi 上的客户端应用程序需要这些值才能连接到远程监控解决方案。 然后单击“完成”。

    查看设备凭据

  5. 在解决方案仪表板上的设备列表中选择设备。 然后,在“设备详细信息”面板中,单击“启用设备”。 设备状态现在为“正在运行”。 远程监控解决方案现在可以从设备接收遥测数据,并在设备上调用方法。

重复前面的步骤使用设备 ID(如 device02)添加第二个设备。 该示例从网关中的两台模拟设备向远程监控解决方案发送数据。

准备 Intel NUC

若要完成硬件设置,需执行以下操作:

  • 将 Intel NUC 连接到工具包中提供的电源。
  • 使用以太网电缆将 Intel NUC 连接到网络。

现在已完成 Intel NUC 网关设备的硬件设置。

登录并访问终端

可以通过两个选项来访问 Intel NUC 上的终端环境:

  • 如果已将键盘和显示器连接到 Intel NUC,则可直接访问 shell。 默认凭据是用户名 root 和密码 root

  • 从台式机使用 SSH 访问 Intel NUC 上的 shell。

使用 SSH 登录

若要使用 SSH 进行登录,需要 Intel NUC 的 IP 地址。 如果已将键盘和显示器连接到 Intel NUC,可以使用 ifconfig 命令来查找 IP 地址。 或者,连接到路由器以列出网络上设备的地址。

使用用户名 root 和密码 root 登录。

可选:共享 Intel NUC 上的文件夹

(可选)可以将 Intel NUC 上的文件夹与桌面环境共享。 共享文件夹之后,即可使用偏好的桌面文本编辑器(例如 Visual Studio CodeSublime Text)在 Intel NUC 上编辑文件,而不必使用 nanovi

若要与 Windows 共享文件夹,请在 Intel NUC 上配置 Samba 服务器。 也可将 Intel NUC 上的 SFTP 服务器与台式机上的 SFTP 客户端配合使用。

生成网关

本教程使用自定义网关模块与远程监控预配置解决方案通信。 因此,需从自定义源代码生成模块。 以下部分介绍如何安装网关并生成自定义网关模块。

安装网关

以下步骤介绍如何在 Intel NUC 上安装预编译的网关软件:

  1. 在 Intel NUC 上运行以下命令,以便配置所需的智能包存储库:

    smart channel --add IoT_Cloud type=rpm-md name="IoT_Cloud" baseurl=http://iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13/ -y
    smart channel --add WR_Repo type=rpm-md baseurl=https://distro.windriver.com/release/idp-3-xt/public_feeds/WR-IDP-3-XT-Intel-Baytrail-public-repo/RCPL13/corei7_64/
    

    当命令提示“是否包括此频道?”时,输入 y

  2. 通过运行以下命令更新智能包管理器:

    smart update
    
  3. 运行以下命令安装 Azure IoT Edge 包:

    smart config --set rpm-check-signatures=false
    smart install packagegroup-cloud-azure -y
    
  4. 运行“Hello world”示例来验证安装。 该示例每隔五秒向 log.txt 文件写入 hello world 消息。 以下命令运行“Hello world”示例:

    cd /usr/share/azureiotgatewaysdk/samples/hello_world/
    ./hello_world hello_world.json
    

    停止示例时,忽略任何“无效参数”消息。

    使用以下命令查看日志文件的内容:

    cat log.txt | more
    

故障排除

如果收到错误“无任何包提供 util-linux-dev”,请尝试重新启动 Intel NUC。

生成自定义 IoT Edge 模块

现在可以生成自定义 IoT Edge 模块,以便网关将消息发送到远程监控解决方案。 若要详细了解如何配置网关和 IoT Edge 模块,请参阅 Azure IoT Edge 概念

使用以下命令,从 GitHub 下载自定义 IoT Edge 模块的源代码:

cd ~
git clone https://github.com/Azure-Samples/iot-remote-monitoring-c-intel-nuc-gateway-getting-started.git

使用以下命令,生成自定义 IoT Edge 模块:

cd ~/iot-remote-monitoring-c-intel-nuc-gateway-getting-started/simulator
chmod u+x build.sh
sed -i -e 's/\r$//' build.sh
./build.sh

生成脚本将 libsimulator.so 自定义 IoT Edge 模块置于生成文件夹中。

配置和运行 IoT Edge 网关

现在可以配置 IoT Edge 网关,将模拟遥测数据发送到远程监控仪表板。 若要详细了解如何配置网关和 IoT Edge 模块,请参阅 Azure IoT Edge 概念

Tip

本教程使用 Intel NUC 上的标准 vi 文本编辑器。 如果以前未使用过 vi,应完成简介教程(例如 Unix - vi 编辑器教程)来熟悉此编辑器。 或者,可以使用命令 smart install nano -y 安装更友好的 nano 编辑器。

使用以下命令在 vi 编辑器中打开示例配置文件:

vi ~/iot-remote-monitoring-c-intel-nuc-gateway-getting-started/simulator/remote_monitoring.json

在 IoTHub 模块的配置中找到以下行:

"args": {
  "IoTHubName": "<<Azure IoT Hub Name>>",
  "IoTHubSuffix": "<<Azure IoT Hub Suffix>>",
  "Transport": "http"
}

将占位符值替换为在本教程开始时创建并保存的 IoT 中心信息。 IoTHubName 的值类似于 yourrmsolution37e08,而 IoTSuffix 的值通常为 azure-devices.cn

在映射模块的配置中找到以下行:

args": [
  {
    "macAddress": "AA:BB:CC:DD:EE:FF",
    "deviceId": "<<Azure IoT Hub Device ID>>",
    "deviceKey": "<<Azure IoT Hub Device Key>>>"
  },
  {
    "macAddress": "AA:BB:CC:DD:EE:FF",
    "deviceId": "<<Azure IoT Hub Device ID>>",
    "deviceKey": "<<Azure IoT Hub Device Key>>"
  }
]

deviceIDdeviceKey 占位符替换为此前在远程监控解决方案中创建的两个设备的 ID 和密钥。

保存所做更改。

现在可使用以下命令运行 IoT Edge 网关:

cd ~/iot-remote-monitoring-c-intel-nuc-gateway-getting-started/simulator
/usr/share/azureiotgatewaysdk/samples/simulated_device_cloud_upload/simulated_device_cloud_upload remote_monitoring.json

网关在 Intel NUC 上启动,并将模拟遥测数据发送到远程监控解决方案:

IoT Edge 网关生成模拟遥测数据

随时都可按 Ctrl-C 退出程序。

查看遥测数据

IoT Edge 网关现在正将模拟遥测数据发送到远程监控解决方案。 可以在解决方案仪表板上查看遥测数据。

  • 导航到解决方案仪表板。
  • 从“要查看的设备”下拉列表中选择在网关中配置的两个设备之一。
  • 来自网关的遥测数据显示在仪表板上。

显示来自模拟网关设备的遥测数据

Warning

如果让远程监控解决方案在 Azure 帐户中保持运行状态,系统会按其运行时间计费。 若要详细了解如何在远程监控解决方案运行时减少消耗,请参阅出于演示目的配置 Azure IoT 套件预配置解决方案。 请在用完后从 Azure 帐户中删除预配置的解决方案。

后续步骤

有关 Azure IoT 的更多示例和文档,请访问 Azure IoT 开发人员中心