PC 设备数据集成


不同的设备具有不同的数据格式。EnOS 提供了标准 SDK、协议和鉴权方法,可供你将设备数据集成到 IoT Hub。设备集成服务有助于快速集成设备数据,而不必担心底层不同的数据格式和协议。


本教程将指导你学习使用设备集成服务,来完成一个 HTTP Server 的创建和配置,实现将自定义格式的 PC 数据通过 HTTP 协议接入到 EnOS 来管理的功能,完成由 EnOS 对PC 设备上线管理及数据的收集。


该场景如下所示:

../_images/pc_device_mgmt_scenario.png

关于本教程

本教程使你能够:

  1. 了解设备集成服务的应用场景。
  2. 学会流设计器的使用和对设备集成服务的监控。
  3. 完成 HTTP Server 的创建和配置。
  4. 完成对接入设备的服务端认证、资产映射、设备上线功能配置。
  5. 完成将自定义协议设备的数据接入、并通过编写简单的 Javascript 脚本完成数据与模型测点的转换和映射,并将测点数据上传到 IoT Hub。

开始前准备

  • 阅读 将个人电脑接入 EnOS 教程,因为本教程将会使用该文档中的模型和设备。
  • 确保你拥有发送 HTTP 协议的工具,如 Postman 或 cURL 等。本教程将会采用 Postman 的 GUI。
  • 确保你已请求了 设备集成资源

步骤 1:创建集成流

  1. 登录到 EnOS 管理控制台,点击左侧导航菜单中的 设备数据集成 > 流设计器
  2. 点击 新建集成流,输入流名称 DIS-Demo,然后点击 确定

步骤 2:设计集成流

你将进入带有空白画布的 流设计器 页面。节点列表将会显示在左侧。


按照以下节点所示顺序设计并连接集成流。


../_images/gettingstarted_pc_device_flow.png

配置 HTTP Server

HTTP Server 节点会建立一个 HTTP 服务器。你可以在 设置 中配置其鉴权功能。

  1. 点击 HTTP Server 节点。
  2. 鉴权方法 下拉列表中选择 Access Token,然后输入 abc123 作为鉴权 token。

注解

URL 是 HTTPS 服务的访问地址,该地址由设备集成服务自动分配,无法编辑。


../_images/pctut_http_server.png


有关 HTTP Server 节点的更多信息,参见 HTTP Server

配置资产映射

PC 设备将通过 HTTP 协议发送 myID 作为 IoT Hub 定义的设备 ID,该 ID 将通过 Lookup Asset 节点映射到 IoT Hub 中的资产 ID。

  1. 点击 Lookup Asset 节点。
  2. 查询方法下拉列表中选择 按 Device Key,然后在下方的文本字段中输入表达式 ${msg.myId}。有关表达式的更多信息,参见 表达式

注解

集成流中的数据存储在 msg 和 metadata 变量中,并采用 key:value 格式在节点之间传输。例如,如果你需要配置 msg 变量,则可以输入 ${msg.key}。在上述情况下,通过 ${msg.myId},可以获得来自 HTTP Server 节点的 myId 参数值。


../_images/pctut_lookup_asset.png


有关 Lookup Asset 节点的更多信息,参见 Lookup Asset

将数据广播到不同的分支

Multicast 节点从前一个节点复制数据并将其分发到每个后续连接的下游节点,这些节点将会相应地处理数据。


有关 Multicast 节点的更多信息,参见 Multicast

配置更新设备状态分支

  1. 点击 Update Device Status 节点。
  2. AssetId 中输入 ${msg.assetId}状态 选择 上线,然后在 登录状态持续时间 中输入 60
../_images/pctut_update_device_status.png


有关 Update Device Status 节点的更多信息,参见 Update Device Status

配置数据广播

你可以使用 Javascript 通过 Script 节点将数据转换为 EnOS IoT Hub 标准格式,将转换后的数据上传到 IoT Hub。

  1. 点击 Script 节点。

  2. 点击 Script 标签。

  3. 根据以下内容,按照 IoT Hub 所需的数据格式编写测点转换函数。

    function transformMyData(assetId, pointValue) {
        return [{
            "assetId": assetId,
            "measurepoints": {
                "cpu_used": 0.2+(Math.random()/10.0),
                "mem_used": pointValue
            },
            "time": new Date().getTime(),
            },
        ]
    }
    


    然后,编写代码完成数据转换,并以 JSON 格式返回。

    var data = transformMyData(msg.assetId, msg.myValue);
    return tools.resultBuilder.build(true, JSON.stringify(data));
    


    ../_images/pctut_script.png


  4. 点击 测试

  5. 输入 Msg 文本框中,按照以下说明输入设备发送的模拟数据格式。

    {
        "myId": "DIS-PC1000",
        "myValue": 50
    }
    


  6. 点击 测试

  7. 检查 输出 Msg中的数据是否异常,然后点击 确定 按钮完成脚本测试。

    ../_images/pctut_script_test.png


有关 Script 节点的更多信息,参见 Script

配置设备数据上传 IoT Hub

Upload Measurement Pt. 节点上传上一个节点的输入到 IoT Hub。

注解

上一个节点的输入数据格式必须为 IoT Hub 所需的格式。有关更多信息,参见 Upload Measurement Point </docs/device-integration/zh_CN/2.3.0/reference/nodes/upload_measurement_point>

步骤 3:发布集成流

  1. 打开右上角的 Debug 开关,点击 保存发布

    ../_images/pctut_debug_publish.png


  2. 返回到集成流列表,你将会看到该集成流的运行状态。

  3. 成功发布后,该集成流的状态将会变成 运行中,之后便可进行数据集成操作。

    ../_images/pctut_running_status.png

数据集成测试

打开 Postman 工具进行测试并创建 POST 请求。

  1. 在地址栏中选择 POST,并输入 HTTP Server 提供的 URL 地址。

  2. Authorization 标签栏,选择 TYPEBearer Token, 输入 TokenHTTP Server 设置的 token,此处为 abc123

    ../_images/pctut_postman_auth.png


  3. Body 标签中,选择 rawJSON,然后输入模拟测试设备的 JSON 协议数据。

    ../_images/pctut_postman_body.png


  4. 点击 Send,发送请求并测试连接。如果测试成功,HTTP Server 将返回 code 为 200 的 JSON 格式数据。

    ../_images/pctut_postman_results.png

注解

如果未安装 Postman,也可以通过其它终端工具进行快速测试。命令参考如下所示。

Linux/MacOS:

../_images/pctut_command_ref.png

集成数据观察

  1. EnOS 管理控制台 中,转到 设备管理 > 设备资产,查看要接入的设备上线情况。

    ../_images/pctut_online_status.png


  2. 点击设备的 查看 图标,然后点击 测点 标签查看集成的数据。

    ../_images/pctut_mp_data.png


  3. 打开 实时刷新 开关,连续发送 HTTP 请求,观察数据变化。

集成监控查看

  1. 流设计器 页面上,点击 DIS-Demo 集成流对应的 … > 监控状态

    ../_images/pctut_monitor_status.png


  2. 通过弹出的运行监控对话框,可以查看当前集成流的CPU,内存监控信息。

    ../_images/pctut_monitor_popup.png