教程

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

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

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

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

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

开始前准备

  • 你需要有以下功能的权限,如果没有,请联系组织管理员添加,参见策略,角色,与权限
    • 模型管理
    • 设备管理
    • 告警管理
    • 时序数据管理
  • OU已申请设备文件存储资源

步骤

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

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

    虚拟电流表模型
    字段 取值
    模型标识符 test.ammeter
    模型名称 虚拟电流表
    分类
    模型关系
    模型模板
    模型描述
  2. 为该设备定义如下的要素:

    虚拟电流表模型要素
    字段 取值
    功能类型 测点
    名称 实时电流
    标识符 current
    测点类型 AI
    是否有质量位
    数据类型 double
    单位 电流:毫安 | mA
    自定义标签
    描述
  3. 基于 虚拟电流表 模型,创建一个产品,具体参数如下,创建产品的具体方法,参见创建产品(设备集合)

    虚拟电流表产品
    字段 取值
    产品名称 虚拟电流表产品
    节点类型 设备
    模型 虚拟电流表
    数据格式 JSON
    证书双向认证 禁用
    产品描述
  4. 基于 虚拟电流表产品 ,注册一个虚拟电流表设备,其参数如下,注册设备的具体方法,参见注册设备

    虚拟电流表设备
    字段 取值
    产品 虚拟电流表设备
    Device Key simulatedAmmeter
    设备名称 虚拟电流表设备
    时区/城市 UTC+08:00

步骤2:配置时序数据存储策略

时序数据管理 > 存储策略 中,为 虚拟电流表产品 配置TSDB存储策略。

  1. 选择一个已有的策略分组,或者新建一个分组,点击 修改分组 ,勾选 test.ammeter ,点击 确认 ,将该模型纳入到该策略分组中。

  2. 点击 AI原始数据 右边的 edit ,勾选 test.ammeter ,将该模型下所有测点加入当前存储策略。

    由于之前配置的测点 实时电流 为AI类型数据,本教程也无需对其进行归一化处理,所以将测点加入 AI原始数据 存储策略中。

步骤3:配置告警规则

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

  1. 告警管理 中,创建一条如下的告警规则。创建告警规则,还需要创建相应的告警级别、类型、内容。创建这些告警要素的具体方法,参见告警服务

    告警规则配置
    字段 取值
    规则编号 ammeter_high_alert
    选择模型 虚拟电流表
    测点 实时电流
    触发条件 >
    Value 60
    告警内容 电流超过阈值
    告警级别 高级别告警
    延后告警 0
    告警屏蔽 禁用
    是否启用 启用

步骤4:使用设备模拟器

  1. 设备管理 > 设备模拟器 中,为 虚拟电流表设备 添加模拟器,添加的具体步骤参见使用设备模拟器

    ../../../_images/added_simulated_ammeter.png
  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小时之后。

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

结果

时序洞察数据报表

等待一段时间后,在 时序数据管理 > 时序洞察 中,选择 虚拟电流表设备 ,可以观察到 实时电流 数据的分钟级的数据报表。

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

告警记录

告警级别 > 告警记录 中,查看 虚拟电流表 模型当天的历史告警,可以查看到数据样本中超过告警规则阈值的数据触发的相关告警。

../../../_images/simulated_ammeter_historical_alerts.png