将非智能设备通过 EnOS Edge 连接至 EnOS 云端


本文帮助你快速入门将子设备与 EnOS Edge 预配至 EnOS 云端,使子设备通过 EnOS Edge 连接并发送数据至 EnOS 云端,并从 EnOS 云端查看设备与 EnOS Edge 的通信信息。

场景描述


接入场景参考 设备注册方案 当中提到的“场景 2.1”。

任务描述


本示例以逆变器通过 EnOS Edge 接入 EnOS 云端为例进行说明,EnOS Edge 采集逆变器数据,EnOS Edge 代理逆变器将数据发送至 EnOS 云端。整体接入场景如下图所示:


../_images/edge_connection_task_description.png


基于上述接入流程图,本示例主要有以下任务:

  1. 创建设备模型

  2. 创建产品

  3. 注册设备

  4. 通过设备端 SDK 模拟 EnOS Edge 代理子设备发送数据

  5. 查看设备连接状态

  6. 查看设备数据

前提条件


  • 当前账号需要拥有 开发者 角色,以访问 EnOS 应用门户的开发者控制台。如需获取角色,可联系 OU 管理员。

  • 参考 将智能设备连接至 EnOS 云端 中的步骤 1-3,完成子设备注册。

在本教程中,将只介绍如何创建 EnOS Edge 设备的模型、产品和设备。

步骤 1:创建设备模型


假设当前 OU 没有可复用的 EnOS Edge 模型,我们创建一个名为 Edge_Model 的 EnOS Edge 设备模型。

  1. 在 EnOS 应用门户的开发者控制台中,选择 模型管理 > 模型

  2. 参考 从头新建模型 从头创建一个新模型,并为模型填入以下信息:

    • 分组:自定义(custom)

    • 名称:Edge_Model

    • 业务标识符:Edge_Model_0

    • 模型用途:设备接入

    • 模型描述:Edge Model


    备注

    必须确保 模型用途 中已勾选 设备接入,否则将无法使用该模型创建产品和注册设备。


    ../_images/model_edge.png


  3. 在模型详情页面,参见 新建模型要素 新建以下属性:

    • 类型:属性

    • 名称:版本/Version

    • 标识符:version

    • 数据类型:string

    • 最大长度:20

    • 默认值:无

    • 是否必填:是

    • 是否可写:是

  4. 点击界面底部的 保存,完成创建属性。


../_images/create_edge_attribute.png


完成后,可使用该模型创建产品、注册设备。

步骤 2:创建产品


你需要创建一个名为 Edge_Product 的产品。本教程假设该型号的 EnOS Edge 设备通过 EnOS IoT 标准格式上送数据,且数据传输不使用 CA 证书加密。

  1. 在 EnOS 应用门户的开发者控制台中选择 设备管理 > 产品管理

  2. 点击 新建产品,在 新建产品 窗口提供以下配置信息:

    • 产品名称:Edge_Product

    • 节点类型:网关

    • 模型:Edge_Model

    • 接入方式:仅支持 EnOS IoT

    • 协议网关:禁用

    • 证书双向认证:禁用

    • 产品描述:Edge Product

  3. 点击 确定 完成操作。


../_images/create_edge_product.png


有关创建产品的更多信息,参见 创建产品

步骤 3:创建 Edge 设备


在该步骤中,你需要创建一个名为 Edge01 的 Edge 设备,该设备属于在上一步骤中创建的 Edge_Product 产品型号。

  1. 在 EnOS 应用门户的开发者控制台中选择 设备管理 > 设备资产

  2. 点击 新建设备,在弹窗中配置如下信息:

    • 基本信息

      • 产品:Edge_Product

      • 设备名称:Edge01

      • 时区:UTC+14:00

    • 属性信息

      • 版本:1.0.0

  3. 点击 确定,完成创建设备。


完成设备创建后,设备将出现在设备列表中。你可以点击 view 进入设备详情界面,获取设备三元组 ProductKeyDeviceKeyDeviceSecret,这些信息将在下一步中使用。


../_images/register_edge.png


有关创建设备的更多信息,参见 创建设备

步骤 5:通过设备端 SDK 模拟 EnOS Edge 代理子设备发送数据


在该步骤中,你需要通过设备端 SDK 模拟发送逆变器有功功率至云端。

  1. 获取 设备端SDK。更多信息,参见该 SDK 的 GitHub Readme 文件。

  2. 根据 Readme 中的步骤配置 EnOS 云端连接。

  3. 将 EnOS Edge 和子设备的三元组(ProductKey, DeviceKey, DeviceSecret)配置到示例连接程序当中。

  4. 修改 postSubMeasurepoint 方法,配置发送数据测点名称,本例中为发送逆变器有功功率点,设置点名 INV.GenActivePW,以及对应的点值。

  5. 调用如下示例方法:

    • EnOS Edge上线, 示例代码中 environment_address 为设备连接 EnOS 云端集群地址;productKey, deviceKey, deviceSecret 为 EnOS Edge 设备的三元组信息。

          public static void initWithCallback() {
         System.out.println("start connect with callback ... ");
      
         try {
             client = new MqttClient(environment_address, productKey, deviceKey, deviceSecret);
             client.getProfile().setConnectionTimeout(60).setAutoReconnect(false);
      
             client.connect(new ConnCallback() {
                 public void connectComplete(boolean reconnect) {
                     System.out.println("connect success");
                 }
      
                 public void connectLost(Throwable cause) {
                     System.out.println("onConnectLost");
                 }
      
                 public void connectFailed(Throwable cause) {
                     System.out.println("onConnectFailed : " + cause);
                 }
             });
         } catch (Throwable var1) {
         }
      
         System.out.println("connect result :" + client.isConnected());
      }
      
    • EnOS Edge 添加子设备拓扑,示例代码中”sub_pk“, “sub_dk“, “sub_ds“为子设备三元组信息。

          public static void addTopo() throws Exception {
         System.out.println("start add topo ...");
         TopoAddRequest request = (TopoAddRequest)TopoAddRequest.builder().addSubDevice(new SubDeviceInfo("sub_pk", "sub_dk", "sub_ds")).build();
         TopoAddResponse rsp = (TopoAddResponse)client.publish(request);
         System.out.println("-->" + rsp);
         getTopo();
         subDeviceLogin();                //EnOS Edge代理子设备上线
      }
      
    • EnOS Edge 代理子设备发送数据,该示例代码中向 INV.GenActivePW 测点发送随机生成的浮点数据。

        public static void postSubMeasurepoint() {
         Random random = new Random();
         System.out.println("start post sub device measurepoint ...");
         MeasurepointPostRequest request = (MeasurepointPostRequest)((MeasurepointPostRequest.Builder)((MeasurepointPostRequest.Builder)MeasurepointPostRequest.builder().setProductKey("sub_pk")).setDeviceKey("sub_dk")).addMeasurePoint("INV.GenActivePW", random.nextFloat()).build();
      
         try {
             MeasurepointPostResponse rsp = (MeasurepointPostResponse)client.publish(request);
             System.out.println("-->" + rsp);
         } catch (Exception var3) {
             var3.printStackTrace();
         }
      }
      


SDK 具体使用参考 Java SDK README

步骤 6:查看设备状态


在 EnOS 应用门户的开发者控制台中,选择 设备管理 > 设备资产,查看 Edge01 和子设备的状态,确认设备处于 在线 状态。

步骤 7:查看设备数据


  1. 在设备列表中,找到子设备并点击 查看 view 图标,进入 设备详情 页面。

  2. 点击 测点 标签页,找到测点 INV.GenActivePW,点击 查看数据 view,进入 时序洞察 页面,查看测点的最新数据。

  3. 也可以通过 TSDB 数据服务,获取测点的最新数据。