map/docs/datacollect
2024-07-05 14:40:46 +08:00
..
_sidebar.md 增加采集规约文档 2024-07-02 15:41:52 +08:00
README.md 更新配置 2024-07-05 14:40:46 +08:00

数据采集

采集程序与系统交互通道

采集程序与系统间采用Websocket方式通讯 访问系统服务器端口: 7790

报文格式为json, 字符集: utf-8

通道建立

采集程序建立连接时需要带上自身节点ID连接URL如下所示:

ws://127.0.0.1:7790/gate/{nodeId}/{version}

  • nodeId: 采集节点ID
  • version: 采集节点配置版本号,无配置时为0

建立连接后,当{version}为0时, 会主动推送配置更新命令。

PS: 同一节点只允许建立一条连接。

通讯报文

报文格式

{
    //命令
    "cmd": "heartbeat",
    //命令ID
    "cmdId": "123123",
    //发送时间(毫秒)
    "time": 123123123123,
    //数据体
    "data": {}
}

配置更新

?> 方向: 系统 -> 采集程序

命令: configUpdate

数据体:

{
    //版本号
    "version": 101,
    //配置创建时间(毫秒值)
    "createTime": 1235235623433,
    //节点ID
    "nodeId": "nx10928234",
    //链路列表
    "links" : [
        {
            //链路ID
            "linkId": "1235123",
            //链路名称
            "linkName": "1#风机",
            //协议号
            "protocol": 1,
            //协议参数
            "params": {},
            "devices": ["11234131","1234123"]
        }
    ],
    //物模型信息
    "equipments": [
        {
            //设备ID
            "id": "11234131",
            //属性列表
            "attrs":[
                {
                    //属性名
                    "name": "Ia",
                    //属性类型
                    "type": "yc",
                    //属性参数
                    "params": {
                        //上界
                        "upBound": 9999,
                        //下界
                        "lowBound": 0,
                        //基值, default: 0
                        "base": 0,
                        //系数, default: 1
                        "coef": 1
                    }
                },
                {
                    "name": "Switch01",
                    "type": "yx",
                    "params": {
                        //是否取反,default: 0
                        "invert": 0
                    }
                }
            ],
            //服务列表
            "services": [
                {
                    //服务名
                    "name": "start",
                    //服务类型
                    "type": "yk",
                    //服务参数
                    "params": {
                    
                    }
                }
            ]
        }
    ]    

}

节点心跳报文

?> 方向: 采集程序 -> 系统

命令: heartbeat

数据体:

{
    //心跳生存时间(毫秒)
    "ttl": 30000,
    //终端状态, 0 - 离线, 1 - 在线
    "status": 0,
    //通讯链路监控信息
    "links": [
        {
            //通讯链路IRN
            "linkId": 3444,
            //通讯链路状态
            "online": true
        },
        {
            "linkId": 123,
            "online": false
        }
    ]
}

设备初始数据上报

当采集设备第一次采集到设备完整数据时,需要向系统上报设备初始数据。

?> 方向: 采集程序 -> 系统

命令: initDeviceData

数据体:

{
    "deviceId": "1123451235464",
    "values": {
        //设备完整初始数据
        "Ia": 123.1,
        "Ib": 122.1,
        "Ic": 123.1,
        "Ua": 220.3,
        "Ub": 221.4,
        "Uc": 223.1,
        "Switch01": 1
    }
}

模拟量数据上报

?> 方向: 采集程序 -> 系统

命令: analogData

数据体:

{
    //数据时间(毫秒)
    "dataTime": 123123123123,
    //设备ID
    "deviceId": "1123451235464",
    "values": {
        //key为属性名
        "Ia": 123.1,
        "Ib": 122.1,
        "Ic": 123.1
    }
}

状态量数据上报

?> 方向: 采集程序 -> 系统

命令: stateData

数据体:

{
    //数据时间(毫秒)
    "dataTime": 123123123123,
    //设备ID
    "deviceId": "1123451235464",
    "values": {
        //key为属性名
        "Switch01": 1
    }
}

历史模拟量数据上报

?> 方向: 采集程序 -> 系统

命令: historyAnalogData

数据体:

{
    //数据时间(毫秒)
    "dataTime": 123123123123,
    //设备ID
    "deviceId": "1123451235464",
    "values": {
        //key为属性名
        "Ia": 123.1,
        "Ib": 122.1,
        "Ic": 123.1
    }
}

历史状态量数据上报

?> 方向: 采集程序 -> 系统

命令: historyStateData

数据体:

{
    //数据时间(毫秒)
    "dataTime": 123123123123,
    //设备ID
    "deviceId": "1123451235464",
    "values": {
        //key为属性名
        "Switch01": 1
    }
}

遥控/遥调命令请求

?> 方向: 系统 -> 采集程序

命令: deviceControl

数据体:

{
    //设备ID
    "deviceId": "1123451235464",
    //遥控服务名
    "serviceName": "start",
    //操作值
    "opValue": 1
}

遥控/遥调命令响应

?> 方向: 采集程序 -> 系统

命令: deviceControlResp

数据体:

{
    //操作结果
    "result": true,
    //设备ID
    "deviceId": "1123451235464",
    //遥控服务名
    "serviceName": "start",
    //操作值
    "opValue": 1
}