主题
数据开放
在左侧菜单栏中,选择【数据管理】【数据开放】,进入数据开放管理界面。平台提供了两种开放方式,分别是“数据订阅”和“数据导出”。
数据订阅
数据订阅功能用于将【测点实时值】、【告警信息】转发到【消息中间件】,第三方平台可以通过【消息中间件】订阅【测点实时数据】和【告警数据】。
目前支持将数据转发到以下消息中间件:
- Kafka
- AMQP
- Pulsar
- MQTT
添加订阅
在【数据开放】页面,切换到【数据订阅】页签,点击【添加订阅】按钮,打开创建对话框。如下图所示:
字段说明
名称 | 说明 |
---|---|
订阅名称 | |
资源类型 | 每项订阅只能选择一种资源类型包括:测点值和告警信息。 |
转发目的地 | 转发的消息中间件类型。 |
其它字段 | 用于配置消息中间件的连接参数。 |
设置订阅资源
添加好订阅后,点击【数据资源】按钮,可对需要订阅的资源内容进行选择。
CAUTION
每项订阅只能选择一种资源类型包括:测点值、告警信息。
消息格式
不同的资源类型转发的消息格式不同
测点值
json
{
"deviceID": "D01",
"pointID": "P01",
"value": 1,
"quality": 0,
"timestamp": 1655342160703,
"gatewayID": "G01"
}
字段说明
名称 | 类型 | 说明 |
---|---|---|
gatewayID | string | 网关标识 |
deviceID | string | 设备标识 |
pointID | string | 测点标识 |
value | string|number|bool | 测点值 |
quality | number | 数据质量 |
timestamp | number | 时间戳毫秒值 |
告警信息
{
"id": "cak5i5te97ejrjko7qe0",
"status": "handled", // unhandled/handled/ignored
"createdAt": "2022-06-14T17:47:02.461192+08:00",
"recoveredAt": null,
"handledAt": "2022-06-14T17:47:09.123729+08:00",
"handler": "admin",
"orderCreated": true,
"title": "告警标题",
"content": "告警内容",
"remark": "确认信息备注"
"ruleTemplateID": "告警规则ID",
"deviceID": "c",
"pointID": "TEST",
"mode": "property",
"duration": 1,
"inputValue": "111",
"compareMode": ">",
"compareValue": "2",
}
字段说明
名称 | 类型 | 说明 |
---|---|---|
id | string | 告警记录标识 |
status | string | 告警状态:unhandled/handled/ignored |
createdAt | string | 告警发生时间,ISO8601 格式 |
recoveredAt | string | 告警解除时间,ISO8601 格式,空表示新产生的告警,不为空表示告警解除或者状态更新。 |
handledAt | string | 确认告警时间 |
handler | string | 告警确认人 |
remark | string | 确认信息备注 |
orderCreated | boolean | 是否创建工单 |
title | string | 告警标题 |
content | string | 告警内容 |
ruleTemplateID | string | 告警规则ID |
deviceID | string | 设备标识 |
pointID | string | 测点标识 |
inputValue | string | 告警值 |
duration | number | 持续时长(秒) |
mode | string | 触发方式:point:单测点not_upload:长时间不上传not_change:长时间数据不变化offline:设备离线expression:表达式 |
compareMode | string | 比较方式如下:>>=<<==!=区间内(between):测点值处于区间外时,触发告警。区间格式:(100, 200), [100,200]区间外(not_between):测点值处于区间内时,触发告警。数值偏差(diff):测点值与阈值的差值大于偏差值时,触发告警。 |
compareValue | string | 告警阈值 |
deadBand | number | 死区值 |
diff | number | 偏差值 |
CAUTION
recoveredAt 为空时表示新告警
转发目的地
Pulsar
转发到Apache Pulsar。
Kafka
转发到Apache Kafka。
AMQP
转发到AMQP 1.0协议的broker。
连接地址示格式为 amqp[s]://<host name of AMQP 1.0 broker>
,例如:amqp://192.168.0.24
常用 AMQP Broker:
CAUTION
AMQP 1.0 has no equivalent of AMQP 0-9-1 virtual hosts. A virtual host on the broker may be addressed when opening an AMQP 1.0 connection by setting the hostname
field, prefixing with "vhost:". Setting the hostname
field to "vhost:/" addresses the default virtual host. If the hostname
field does not start with "vhost:" then the default_vhost
configuration setting will be consulted.
MQTT
转发到 MQTT 消息中间件。
连接地址格式示例:mqtt://192.168.3.10:1883
数据导出
数据导出功能用于定时将测点数据写入到第三方关系型数据库,目前支持导出以下数据库:
- MySQL
- SQLServer
创建导出任务
切换到【数据导出】页签,点击【创建】按钮,弹出【添加任务】对话框,如下图所示:
相对时间
数据时间相对于导出启动时间前多久开始,填充数据格式为:中划线(-)+ 数字(1-3位)+ 单位。
单位:
- 天:d或D;
- 时:h或H;
- 分:m或M。
例:
- -1h,表示任务启动前 1 小时内的数据。
- -1d, 表示任务启动前 1 天内的数据。
- -20m, 表示任务启动前 20 分钟内的数据。
数据抽样
数据抽样未启用时,导出原始数据。
数据抽样启用时,每间隔指定的时间段抽取一条数据,需要设置抽样间隔和抽样方法。
抽样方法:
- FIRST:抽样间隔内的第一条数据;
- LAST:抽样间隔内的最后一条数据;
例如:在小时的原始数据中,设置抽样间隔为 1 分钟,抽样方法为 FIRST
,在执行导出任务时,最多采集出60条数据进行导出。
任务类型
任务类型包括【单次任务】和【定时任务】。
- 单次任务:在指定的具体时间执行一次导出任务。
- 定时执行:在指定的时间范围内,周期性地执行任务。
时间类型
时间类型用于定义数据导出的时间范围,支持两种设置方式:
- 绝对时间,导出固定时间段内的测点数据。
- 相对时间,每次任务执行时,导出任务运行前一段时间内的测点数据。
【相对时间】需按固定格式填写:
- 以一个减号
-
开头 - 一到三位整数
- 单位:
h
、m
、d
其中之一,分别表示小时、分钟、天
例如:
-1d
:每次任务执行时导出向前一天的测点数据-12h
:每次任务执行时导出向前12小时的数据-30m
:每次任务执行时导出向前30分钟的数据
导出目标
导出目标可选择MySQL
或SQLServer
。
同时需要配置目标数据库的连接参数,包括地址、端口、用户名、密码、数据库名称。
CAUTION
导出到SQLServer时,加密传输的选择:
由于 TLS 1.0 存在安全漏洞,条件允许时,应尽量在服务器段开启 TLS 1.2 支持并设为默认。
开启 TLS 1.2 对于 SQLServer < 2008 不支持,SQLServer < 2016 需要安装安全补丁。
如果服务端无法支持 TLS 1.2,可在导出目标的连接参数中关闭加密传输,或者改用 TLS 1.0 传输。
数据资源
选择将哪些数据进行导出。
先选择设备模型,然后对每个设备模型选择要导出的设备和测点。
数据表
导出的数据将以设备模型分组,相同设备模型下的设备测点导出到同一个表。
表名可以在任务属性中进行设置,{device_model_id}
的部分会替换为设备模型的标识。
例如数据源选择了标识为DT1
、DT2
的两个设备模型,表名模板为export_{device_model_id}_data
,对应的测点数据对应导出到export_DT1_data
和export_DT2_data
两个表。
表的列要求如下:
- 表应当自动生成主键
- 列
device_id
保存设备标识 - 列
time
保存数据时间 - 对于设备模型上定义的每一个测点,按其测点标识对应目标表的一列,可以为NULL
如果缺少device_id
、time
、任意测点对应的列,或者值与列类型不兼容,都会导致导出失败。
可以在列表页中点击“建表”完成自动建表。
自动建表以点击时数据资源中各设备模型现有测点进行建表,以自增列id
作为主键。