快速入门:将非智能设备通过 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. 创建设备模型
    • EnOS Edge模型
    • 逆变器模型
  2. 创建产品
    • EnOS Edge产品
    • 逆变器产品
  3. 注册设备
    • EnOS Edge设备
    • 逆变器设备
  4. EnOS Edge配置
    • 使用EnOS Edge接入数据
    • 通过设备端SDK模拟EnOS Edge代理子设备发送数据
  5. 查看设备通信状态
  6. 查看设备数据

前提条件

本示例的前提是你已经完成子设备注册(逆变器,如 直连设备连接快速入门 中所述)。 在本示例当中,只创建EnOS Edge设备的模型、产品、设备。

步骤1:创建设备模型

在该步骤中假设没有可复用的 EnOS Edge 模型,我们创建一个名为 Edge_Model 的EnOS Edge设备模型。

  1. 在 EnOS 管理控制台中选择 模型

  2. 私有模型 标签页,点击在页面 创建模型, 并在 创建模型 窗口提供以下配置信息:

    • 模型标识符: Edge_Model_0
    • 模型名称:Edge_Model
    • 分类:无
    • 模型关系:无
    • 模型模板:无
    • 模型描述:Edge Model
    ../_images/model_edge.png
  3. 点击 确定 完成操作。

  4. 点击 edit ,在模型详细信息界面中点击 功能定义 标签。

  5. 点击 编辑,然后点击 新增,选择 新建自定义功能,在 添加功能 表单中填入以下信息 :

    • 功能类型:属性
    • 名称:默认名称:版本,英语:version
    • 标识符:version
    • 数据类型:string
    • 数据长度:20
    • 是否必填:是
  6. 点击 确认。然后点击界面底部的 发布,完成功能定义。

有关设备模型设置的详细信息,参见 创建模型

步骤2:创建产品

在该步骤中,我们创建一个名为 Edge_Product 的产品。我们假设该型号的EnOS Edge设备通过JSON格式上送数据且数据传输不使用CA证书加密。

  1. 在 EnOS 管理控制台中选择 设备管理 > 产品管理
  2. 点击在页面左上方 创建产品,可配置信息如下。
    • 产品名称:Edge_Product
    • 节点类型:网关
    • 设备模型:Edge_Model
    • 数据格式:Json
    • 证书双向认证:禁用
    • 产品描述:Edge Product
  3. 点击 确定 完成操作。

有关产品设置的详细信息,参见 创建产品

步骤3:注册EnOS Edge

在该步骤中,我们创建一个名为 Edge01 的edge设备,该设备属于在上一步骤中创建的 Edge_Product 产品型号。

  1. 在 EnOS 管理控制台中选择 设备资产
  2. 点击 添加设备,在弹出窗口配置如下信息:
    • 产品:Edge_Product
    • Device Name:Edge01
    • 时区:UTC+14:00
    • 版本:1.0.0
../_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:查看设备状态

进入控制台,选择 设备管理,查看Edge01和INV001设备的状态,确认设备处于在线状态。

步骤7:查看设备数据

  1. 设备 页面,找到此设备并点击 查看 进入设备详情页面。
  2. 点击 测点 标签,选择测点 INV.GenActivePW,点击 查看数据,打开 时序洞察 页面。
  3. 查看测点的最新数据。如果已为该测点配置存储策略,亦可在时序洞察页面生成该测点的历史数据图表。有关时序洞察的详细信息,参见 生成时序数据图表