快速入门:将非智能设备通过EnOS Edge连接至EnOS Cloud


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

场景描述

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

任务描述

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

../_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 Cloud连接。

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

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

  5. 调用如下示例方法:

    • EnOS Edge上线, 示例代码中environment_address为设备连接EnOS Cloud集群地址;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 IConnectCallback() {
                 public void onConnectSuccess() {
      
                     System.out.println("connect success");
                 }
      
                 public void onConnectLost() {
                     System.out.println("onConnectLost");
                 }
      
                 public void onConnectFailed(int reasonCode) {
                     System.out.println("onConnectFailed : " + reasonCode);
                 }
             });
         } catch (EnvisionException 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. 查看测点的最新数据。如果已为该测点配置存储策略,亦可在时序洞察页面生成该测点的历史数据图表。有关时序洞察的详细信息,参见 生成时序数据图表