通过 Azure IoT Edge,使用 IoT 网关进行传感器数据转换

Note

在开始本教程之前,请确保已按顺序完成以下课程:

IoT 网关的一个用途是在将收集的数据发送到云之前,先处理这些数据。 Azure IoT Edge 引入了可创建并组合形成数据处理工作流的模块。 模块接收消息,对其执行某些操作,并将其转手供其他模块处理。

学习内容

了解如何创建一个模块,将消息从 SensorTag 转换为其他格式。

准备工作

  • 创建一个模块,将收到的消息转换为 .json 格式。
  • 编译该模块。
  • 通过 Azure IoT Edge,将模块添加到 BLE 示例应用程序。
  • 运行示例应用程序。

所需条件

创建模块

  1. 在主计算机上,运行 SSH 客户端并连接到 IoT 网关。
  2. 运行以下命令,将转换模块的源文件从 GitHub 克隆到 IoT 网关的主目录:

    cd ~
    git clone https://github.com/Azure-Samples/iot-hub-c-intel-nuc-gateway-customized-module.git
    

    这是采用 C 编程语言编写的本机 Azure Edge 模块。 该模块将收到的消息转换为以下格式:

    {"deviceId": "Intel NUC Gateway", "messageId": 0, "temperature": 0.0}
    

编译模块

若要编译模块,请运行以下命令:

cd iot-hub-c-intel-nuc-gateway-customized-module/my_module
# change the build script runnable
chmod 777 build.sh
# remove the invalid windows character
sed -i -e "s/\r$//" build.sh
# run the build shell script
./build.sh

编译完成后会获取 libmy_module.so 文件。 记下此文件的绝对路径。

将模块添加到 BLE 示例应用程序

  1. 运行以下命令转到示例文件夹:

    cd /usr/share/azureiotgatewaysdk/samples
    
  2. 运行以下命令打开配置文件:

    vi ble_gateway.json
    
  3. 将以下代码插入 modules 节以添加模块。

    {
        "name": "MyModule",
        "loader": {
            "name": "native",
            "entrypoint":{
                "module.path": "[Your libmy_module.so path]"
                }
             },
         "args": null
     },
    
  4. 将代码中的 [Your libmy_module.so path] 替换为 libmy_module.so` 文件的绝对路径。

  5. links 部分中的代码替换为以下代码:

    {
        "source": "SensorTag",
        "sink": "MyModule"
    },
    {
        "source": "MyModule",
        "sink": "mapping"
    }
    
  6. ESC,并键入 :wq 保存文件。

运行示例应用程序

  1. 打开 SensorTag。
  2. 通过运行以下命令,设置 SSL_CERT_FILE 环境变量:

    export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
    
  3. 通过运行以下命令,运行具有所添加模块的示例应用程序:

    ./ble_gateway ble_gateway.json
    

后续步骤

已成功使用 IoT 网关将消息从 SensorTag 转换为 .json 格式。

若要继续了解 Azure IoT 中心入门知识并浏览其他 IoT 方案,请参阅以下文章: