教程:使用 Java SDK 模拟设备接入


设备模拟器让你能够在不使用 EnOS Java SDK 的情况下,模拟一个在EnOS注册了的设备发送数据至 EnOS,以便熟悉 EnOS 各项功能、或调试故障。

本教程分步骤介绍使用设备模拟器模拟设备发送数据、查看数据的方法。在本教程中,我们模拟一个智能电流表,每一分钟上报一次测量的电流数据,存储在时序数据库中。当其上报的实时电流超过 60 毫安,就会触发“电流超过阈值”告警。我们可以通过 EnOS 观察到上传的电流数据及告警。


../../../_images/simulated_ammeter.png


该教程各步骤的顺序及逻辑关系如下图所示:


../../../_images/simulated_ammeter_flowchart.png

前提条件


你需要有 开发者 角色,以访问应用门户的开发者控制台,如果没有需联系 OU 管理员添加。

步骤 1:创建模型、产品、设备


  1. 创建一个虚拟电流表的模型,其具体参数如下,创建模型的具体步骤参见 创建模型:

    虚拟电流表模型

    字段

    取值

    分组

    自定义(Custom)

    名称

    虚拟电流表

    业务标识符

    test.ammeter

    模型用途

    设备接入

    描述

    无

  2. 为该模型定义如下的要素:

    虚拟电流表模型要素

    字段

    取值

    类型

    测点

    名称

    实时电流

    标识符

    current

    测点类型

    AI

    数据类型

    double

    聚合方式

    无

    单位

    电流:毫安 | mA

    是否有质量位

    无

    描述

    无

    是否可写

    是

  3. 基于 虚拟电流表 模型,创建一个产品,具体参数如下。创建产品的更多信息,参见 创建产品:

    虚拟电流表产品

    字段

    取值

    产品名称

    虚拟电流表产品

    节点类型

    设备

    模型

    虚拟电流表

    接入方式

    仅支持 EnOS IoT

    证书双向认证

    禁用

    产品描述

    无

  4. 基于 虚拟电流表产品,注册一个虚拟电流表设备,其参数如下。注册设备的更多信息,参见 注册设备:

    虚拟电流表设备

    字段

    取值

    产品

    虚拟电流表设备

    Device Key

    simulatedAmmeter

    设备名称

    虚拟电流表设备

    时区/城市

    UTC+08:00

步骤 2:配置告警规则


在这一步中,你需要创建一个告警规则,规定当以 虚拟电流表 为模型创建的设备,其上报的 实时电流 测点值大于 60(毫安)时,EnOS 发出告警内容为 电流超过阈值,级别为 Warning 的告警。

  1. 在 应用门户 > 开发者控制台 > 告警引擎 中,创建一条如下的告警规则。创建告警规则,还需要创建相应的告警级别、类型、内容。创建这些告警要素的具体方法,参见 告警引擎快速入门:

    告警规则配置

    字段

    取值

    规则编号

    ammeter_high_alert

    选择模型

    虚拟电流表

    测点

    实时电流

    触发条件

    >

    值

    60

    告警内容

    电流超过阈值

    告警级别

    高级别告警

    延后告警

    0

    告警屏蔽

    禁用

    是否启用

    启用

步骤 3:使用设备模拟器


  1. 在 应用门户 > 开发者控制台 > 设备管理 > 设备模拟器 中,为 虚拟电流表设备 添加模拟器,添加的具体步骤参见 配置设备模拟器。

  2. 为 虚拟电流表设备 添加数据样本,具体方法参见 配置设备模拟器。

    打开样本,里面的数据分成两列,timeOfDay 表示一天之内,从 0:00:00 到 23:59:00 的分钟级时刻,current 则表示每分钟模拟器上报的模拟的测点值。

    由于之前设置的告警中,我们设定当 实时电流 大于 60 毫安时告警触发。因此我们需要确保在样本中,至少有某一分钟的测点值大于 60,这样才能触发 Current is above threshold 告警。

    一个比较好的做法是,在样本中比较靠前的时刻,将测点值设置为一个大于 60 的 double 类型的值。这样你无需等待过长时间,就能观察到告警的触发。如下图,教程开发者本地时间为 UTC+08:00 时区的 10:00(24小时制),在第 2 分钟、第 7 分钟和第 10 分钟,设置了大于 60 的测点值,也就是说,告警将在开发者本地时间 10:02、10:07 和 10:10 触发:


    ../../../_images/simulator_data_sample.png


  3. 启动设备模拟器,将结束时间设置为 24 小时之后。

    模拟器结束时间可自由设定,将结束时间设置得更晚,可以确保告警能够产生,同时有足够量的数据可供观察。

结果

时序洞察数据报表


等待一段时间后,在 开发者控制台 > 数据资产存储管理 > 时序洞察 中,选择 虚拟电流表设备,可以观察到 实时电流 数据的分钟级的数据报表。


../../../_images/simulated_ammeter_tsdb_data.png

告警记录


在 开发者控制台 > 告警引擎 > 告警记录 中,查看 虚拟电流表 模型当天的历史告警,可以查看到数据样本中超过告警规则阈值的数据触发的相关告警。