Skip to content

温度数据历史记录

VisualGw可将数据进行存储,因为各类设备的存储时间以及设备设备均不同。因此VisualGw设计了仓库管理方案,可以将设备属性添加,自由的对数据进行存储、导出表格。配合NodeRed存储节点,可方便用户更高效的设计存储逻辑。

一、创建数据仓库

1.添加仓库

在"仓库管理"菜单点击添加仓库按钮

image-20250514211056106

在弹出的对话框中添加仓库信息

image-20250514211129228

说明:

仓库名称:唯一仓库标识,多个仓库时,不能重复

仓库类型:用户自定义填写

备注:用户自定义填写

存储条数:单仓库的最大存储条数。如果数据量超过此值,那么数据将会循环覆盖。

系统字段设置:一般默认值,名称可由用户填写,非特殊情况一般不用处理

用户字段设置:填写实际设备/数据的属性,可以添加数值和选项两种数据类型。以温湿度举例,案例中,添加了温度和湿度两种属性。

image-20250514211227698

以温湿度历史数据仓库举例,存储条数是这个仓库的最大存储条数。超过这个值,会循环覆盖。即最新的一条数据会覆盖最老的数据。这是为了避免数据溢出,网关存储容量有限,用户根据实际需求填写

image-20250514211244845

建立好数据仓库后,可在数据仓库子菜单下看菜单。

image-20250514211256957

点击后,即可看到仓库内容。新建立的数据仓库,没有任何信息。需要添加挂载ID,挂载ID就是实际的设备,用户也可以理解成其他数据类型。这里的挂载ID,最终node-red里面也会进行识别,node-red会通过数据仓库信息和挂载ID信息,添加对应的数据。

image-20250514214714701

一般的我们推荐挂载ID就是实际的设备序列号,如图:

image-20250514214723386

001是一个温湿度传感器的modbus id地址,我们填写它,同时也可以添加多个。也可以添加组,添加组后,可以拖动挂载ID。进行分类

image-20250514214745927

image-20250604005010145

创建后,数据默认处于未知状态,数据状态为异常。这个页面,我们称之为”数据面板“

历史数据:

image-20250604005953780

image-20250604010011287

二、node-red读写

1.更新数据面板

使用image-20250604010442345此节点可以直接更新面板数据。

案例中使用一个mqtt节点写数据,如图

image-20250604010556917

function内容:

js
msg.payload = {
    "model": "温湿度历史数据",
    "data": [
        {
            "mountId": "001",
            "dataId": "湿度",
            "dataType": "value",
            "data":  msg.payload.hum,
            "dataState":"1"
        },
        {
            "mountId": "001",
            "dataId": "温度",
            "dataType": "value",
            "data": msg.payload.temp,
            "dataState":"1"
        }
    ]
}

return msg;
  • model: 数据仓库名称,例如:温湿度、设备状态、告警记录等

  • data: 数据数组,可同时写入多组数据
    - `mountId`: 挂载点ID
    - `dataId`: 数据ID,例如:温度、湿度、阈值等
    - `dataType`: 数据类型,固定为"value"
    - `data`: 数值,只支持字符串,若其他数据类型,可用js代码转换
    - `dataState`: 数据状态,"1"表示正常,"2"表示异常

执行后:

image-20250604010830284

2.新增历史数据

使用image-20250604010928758此节点可以直接更新面板数据。

案例中使用一个mqtt节点写数据,如图

image-20250604011038929

function内容:

js
msg.payload = {
    "select": [
        {
            "dwName": "温湿度历史数据_DATA",
            "whereKey": null,
            "selectKey": [
                {
                    "key": "mount_id",
                    "value": "001"
                },
                {
                    "key": "temp",
                    "value": msg.payload.temp
                },
                {
                    "key": "hum",
                    "value": msg.payload.hum
                }
            ]
        }
    ]
}

return msg;
  • dwName: 数据仓库名称,格式必须为 [仓库名]_DATA,例如:设备状态_DATA、温湿度_DATA、告警记录_DATA等

  • whereKey: 条件选项,此节点无需此选项

  • selectKey: 选取字段
    - `key`: 字段名称,必须与仓库管理中的字段设置一致,例如:mount_id、data_state、temp等
    - `value`: 数值,只支持字符串,若其他数据类型,可用js代码转换

执行后:

image-20250604011347428

蜀ICP备2025139593号