快速入门:将非智能设备通过 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。整体接入场景如下图所示:
基于上述接入流程图,本示例主要有以下任务:
创建设备模型
EnOS Edge模型
逆变器模型
创建产品
EnOS Edge产品
逆变器产品
注册设备
EnOS Edge设备
逆变器设备
EnOS Edge配置
使用EnOS Edge接入数据
通过设备端SDK模拟EnOS Edge代理子设备发送数据
查看设备通信状态
查看设备数据
前提条件 ¶
本示例的前提是你已经完成子设备注册(逆变器,如 直连设备连接快速入门 中所述)。 在本示例当中,只创建EnOS Edge设备的模型、产品、设备。
步骤1:创建设备模型 ¶
在该步骤中假设没有可复用的 EnOS Edge 模型,我们创建一个名为 Edge_Model 的EnOS Edge设备模型。
在EnOS 管理控制台中选择 模型。
在私有模型 标签页,点击在页面 创建模型, 并在 创建模型 窗口提供以下配置信息:
模型标识符: Edge_Model_0
模型名称:Edge_Model
分类:无
模型关系:无
模型模板:无
模型描述:Edge Model
点击 确定 完成操作。
点击 ,在模型详细信息界面中点击 功能定义 标签。
点击 编辑,然后点击 新增,选择 新建自定义功能,在 添加功能 表单中填入以下信息 :
功能类型:属性
名称:默认名称:版本,英语:version
标识符:version
数据类型:string
数据长度:20
是否必填:是
点击 确认 。然后点击界面底部的 发布 ,完成功能定义。
有关设备模型设置的详细信息,参见 创建模型。
步骤2:创建产品 ¶
在该步骤中,我们创建一个名为 Edge_Product 的产品。我们假设该型号的EnOS Edge设备通过JSON格式上送数据且数据传输不使用CA证书加密。
在EnOS 管理控制台中选择 设备管理 > 产品管理。
点击在页面左上方 创建产品,可配置信息如下。
产品名称:Edge_Product
节点类型:网关
设备模型:Edge_Model
数据格式:Json
证书双向认证:禁用
产品描述:Edge Product
点击 确定 完成操作。
有关产品设置的详细信息,参见 创建产品。
步骤3:注册EnOS Edge ¶
在该步骤中,我们创建一个名为 Edge01 的edge设备,该设备属于在上一步骤中创建的 Edge_Product 产品型号。
在EnOS 管理控制台中选择 设备资产。
点击 添加设备,在弹出窗口配置如下信息:
产品:Edge_Product
Device Name:Edge01
时区:UTC+14:00
版本:1.0.0
步骤5:通过设备端SDK模拟EnOS Edge代理子设备发送数据 ¶
在该步骤中,我们通过设备端SDK模拟发送逆变器有功功率至云端。
获取 设备端SDK。更多信息,参考该SDK的GitHub readme文件。
根据readme中的步骤配置EnOS Cloud连接。
将EnOS Edge和子设备的三元组(
ProductKey
,DeviceKey
,DeviceSecret
)配置到示例连接程序当中。设备三元组为注册设备步骤中获得。修改 postSubMeasurepoint 方法,配置发送数据测点名称,本例中为发送逆变器有功功率点,设置点名 INV.GenActivePW,以及对应的点值。
调用如下示例方法:
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 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:查看设备数据 ¶
在 设备 页面,找到此设备并点击 查看 进入设备详情页面。
点击 测点 标签,选择测点 INV.GenActivePW,点击 查看数据,打开 时序洞察 页面。
查看测点的最新数据。如果已为该测点配置存储策略,亦可在时序洞察页面生成该测点的历史数据图表。有关时序洞察的详细信息,参见 生成时序数据图表。