DT格式说明
主题
上行主题:diting/v1/devices/{ESN}/data/rjson
下行主题:diting/v1/devices/{ESN}/command/rjson
案例diting/v1/devices/diting/v1/devices/ESN_21500104744EL6000050/command/rjson/data/rjson
一、配置格式
根对象
| key | value | 描述 |
|---|---|---|
| baseConfig | <json对象:表2> | 代表南向采集配置信息 |
| taskConfig | <json对象:表3> | 代表北向任务和北向平台信息 |
| mapSvrConfig | <json数组,元素对象:表4> | 这里主要是映射到服务地址,服务也是从这里开启 |
表2:baseConfig对象
| key | value | 描述 |
|---|---|---|
| equips | <json数组,元素对象表2.1> | 设备信息,关于南下设备的信息都在这个数组里头 |
| gateway | "fj_502" | 备用 |
| siteEn | "00001" | 站号,该网关的站号,也就是对于平台来说,找数据就是 站号.设备id.数据id |
| id | "fj00000001" | 备用 |
| type | "S_DataInfo" | 固定值,代表南向数据采集信息 |
表2.1:equips对象
| key | value | 描述 |
|---|---|---|
| equipId | "dev101" | 设备ID。设备id,每台南下设备都分配一个id,全局唯一,用户自定义,上报数据会用到 |
| equipName | "dev101" | 设备名称。设备别名,可以同名,只用来显示用,用户自定义 |
| collectConf | <json对象表2.1.1> | 采集配置 |
| interfaceParams | <json对象表2.1.2> | 连接配置 |
| properties | <json数组,元素对象表2.1.3> | 设备的属性信息,也就是数据点,要采集设备的哪些数据点,数据点的信息 |
| protocol | <json对象表2.1.4> | 用于和设备通讯的参数 |
表2.1.1:collectConf对象
| key | value | 描述 |
|---|---|---|
| isRunCmd | true | 启动。可不设置,默认启动。对这台设备是否运行,也就是你可以配置,但是不运行。 |
| pollingCycleTime_ms | 500 | 采集周期。可不设置,默认500。轮询周期时间,就是通讯完一次所有读数据的时间。若实际通讯200ms,则休息500ms-200ms后再进行下一次通讯周期。若实际通讯501ms,则休息50ms后再下一次周期。 |
| intervalTime_ms | 1 | 通讯间隔时间。可不设置,默认1。通讯与通讯之间的间隔时间,目的是在一个轮询周期内,能调节通讯的频率 |
| isBlockRead | true | 块读。可不设置,默认块读(false就是点读)。有些例外的,例如(1)IEC104驱动,因为厂站是主动突发的,不需要去读,采集调用该驱动库时,块读可能还没有点读来的快,所以,对于104来说,这里为点读。(2)DLT地址没有块的说法,所以DLT也是点读 |
| isBlockWrite | true | 块写。可不设置,默认块写 |
| abnormalMax | 3 | 异常允许最大次数。可不设置,异常的允许最大次数,默认1 |
| collectWay | "physical" | 采集方式,可不设置,默认physical。采集器调用库时的采集方式,枚举型{physical,memory},默认是physical。也就是采集分为物理和内存方式。物理方式,则会防止串包,内存无需考虑串包 |
| isWritePriority | true | 写优先,可不设置,默认true。如果设置写优先,则会暂停当前采集而转去写数据,写完数据再继续采集。反之,直到当前周期采集完再去写。 |
表2.1.2:interfaceParams对象
| key | value | 描述 |
|---|---|---|
| link | "192.168.1.199:9900" | 链接。南下设备的连接参数,可能是IP,可能是串口 |
| physicalInterface | "eth0" | 物理接口。备用,暂时没用 |
表2.1.3:properties对象
| key | value | 描述 |
|---|---|---|
| dataAddress | "4x0" | 数据地址。设备的内存地址,例如4x0就是modbus设备的内存地址,也叫寄存器地址 |
| authority | "RW" | 界面没有。对该数据的读写权限,枚举{RW,OW,OR}这三种。可不设置,默认RW,该字段是为了提高效率,如果设置OW,FW,就不读,可能是映射服务写过来的数据。 |
| dataArea | "" | 数据区域。备用 |
| dataDesc | "b1" | 描述。数据点的描述 |
| dataDisplay | "int16" | 数据显示。数据点的类型,枚举,见文章末尾 |
| dataName | "b1" | 测点别名。数据点的别名 |
| dataUnit | "n" | 数据单位。数据的单位 |
| id | "b1" | 测点名。数据的id,跟设备的id一个意思,该设备下唯一,上报时会用到 |
| offset | "0" | 数据偏移。偏移,也就是kx+b的b |
| proportion | "1" | 数据比例。比例,也就是kx+b的k |
表2.1.4:protocol对象
| key | value | 描述 |
|---|---|---|
| libName | "ModbusTCP" | 库名。该设备的通讯规约,枚举,见文章末尾 |
| params | <json对象表2.1.4.1> |
表2.1.4.1:params对象
| key | value | 描述 |
|---|---|---|
| linkPar | "1" | 地址码。该设备的设备号 |
表3:taskConfig对象
| key | value | 描述 |
|---|---|---|
| PlatformPar | <json数组,元素对象表3.1> | 北向平台 |
| gateway | "fj_502" | 备用 |
| id | "fj00000001" | 备用 |
| tasks | <json数组,元素对象表3.2> | 北向任务 |
| type | "N_Task" | 固定值,代表北向信息 |
表3.1:PlatformPar对象
| key | value | 描述 |
|---|---|---|
| PlatformIp | "125.77.188.90:40025 | 目标地址IP。mqtt的连接目标地址和端口号 |
| passwd | "admin" | 密码。mqtt连接的密码 |
| tasks" | ["t1,t2"] | 任务ID。任务。可以带多个任务。也就是该mqtt连接会处理的数据都是这些任务得来的。 |
| type | "SC-MQTT-DEFAULT" | 类型。上报的格式说明,支持多种格式。也是枚举,见文章末尾 |
| user | "admin" | 用户。mqtt连接用户名 |
| pushConf | <json对象表3.1.1> |
表3.1.1:pushConf对象
| key | value | 描述 |
|---|---|---|
| isRun | true | 启动。可不设置,默认启用。是否启动。也就是mqtt是否要启动,可以配置好不启动 |
| isUseResumeBrokenTransfer | true | 使用断点续传。可不设置,默认启用。是否使用断点续传功能。 |
表3.2:tasks对象
| key | value | 描述 |
|---|---|---|
| dataId_entire | <json对象表3.2.1> | 该任务所要带的数据点,每个数据点都可以独立设置上报模式 |
| taskId | "t1" | 任务ID。任务id,每个任务都有一个id,北向平台会选择哪些任务,就是通过这个任务id |
| taskType | "t1" | 任务说明 |
| uploadMode | "timer 60 || change 10" | 上传模式。若dataId_entire里面的uploadMode未设置,那么就采用这个上传模式 |
| uploadParam1 | "6" | 备用 |
| uploadParam2 | "n" | 备用 |
| uploadParam3 | "n" | 备用 |
表3.2.1:dataId_entire对象
| key | value | 描述 |
|---|---|---|
| equipId | "dev101" | 设备ID。对应南向采集的设备id |
| idInfo | <json数组,元素对象表3.2.1.1> |
表3.2.1.1:idInfo数组
| key | value | 描述 |
|---|---|---|
| id | "b1" | 测点名。对应南向采集的数据id |
| uploadMode | "timer 60 || change 10" | 上传模式。比如这里的定时60s和变化死去超过10就上报 |
表4:mapSvrConfig对象
| key | value | 描述 |
|---|---|---|
| type | "MapServer" | 固定字符,和前面的南向数据信息、北向任务、北向数据、南向命令并列 |
| mapServerType | "MS_Modbus" | MS_Modbus、MS_OpcUA、MS_EdgeComputing 这三种类型服务,分别对应界面的MODBUS OPCUA ADOGOS |
| ID | "1" | 服务ID。一个串口(端口)最多就一个ID,一个ID可以同时被串口、tcp、udp都拥有。这个信息是最基本的准则 |
| interfaces | <json对象表4.1> | |
| mapConf | <json对象表4.2> | |
| dataMaps | <json数组,元素对象表4.3> | 数据映射,也叫通道映射,把服务地址和通道数据进行映射 |
| devStatusMaps | <json数组,元素对象表4.4> | 设备状态映射。每台设备都有状态,状态映射到服务地址 |
| taskMaps | <json数组,元素对象表4.5> | 任务映射,单向的,扫描完标签值判断后,把服务地址映射给任务。也就是标签触发的既可以用modbus服务地址,也可以用边缘计算服务地址,后续也可以用opc iec104服务地址。 |
表4.1:interfaces对象
| key | value | 描述 |
|---|---|---|
| serial | <json对象表4.1.1> | |
| tcp | <json对象表4.1.2> | |
| udp | <json对象表4.1.3> | |
| sharedMem | <json对象表4.1.4> |
表4.1.1:serial对象
| key | value | 描述 |
|---|---|---|
| listen | "COM1" | 只设置串口名称,参数由别的软件设置,此只负责打开,因为该口是服务,硬件由别的软件统一设置。也可设置波特率等,"COM1,9600,8,1,N",此情况要设置参数。 |
| isRun | true | 默认启动,默认可不设置 |
表4.1.2:tcp对象
| key | value | 描述 |
|---|---|---|
| listen | "127.0.0.1:502" | 串口/端口 |
| customerNum | 30 | 客户连接数量,也就是开启多少个线程 |
| isRun | false | 是否启动 |
表4.1.3:udp对象
| key | value | 描述 |
|---|---|---|
| listen | "503" | 即可只设置端口号,默认ip=127.0.0.1。也可以设置ip:port形式 |
| customerNum | 13 | 客户数,即线程池,若设置13个线程池,当客户端连接数<=13,则每个客户端都对应1个线程在服务。当第14个客户端连接,也支持,只是和其中一个客户端共用一个线程 |
| isRun | false |
表4.2:mapConf对象
| key | value | 描述 |
|---|---|---|
| pollingCycleTime_ms | 500 | FW时、任务映射时,该周期。OR RW的周期是取决于采集周期 |
表4.3:dataMaps对象
| key | value | 描述 |
|---|---|---|
| addr | "4x0" | AdogOS地址。服务的起始地址,例如,数据类型为int32,这对于modbus来说,就需要两个寄存器地址。 |
| quality | "1x0" | 质量。数据质量值,当方向为OR RW才有此属性。当方向为OW FW,该属性没用,为空就行。因为该值是存储映射过来的质量 |
| display | "int16" | 数据类型。数据类型值,经过kx+b计算之后,都强制转换该类型给服务地址。也就是说,设备的类型不一定和该类型一致 |
| direction | "OR" | 映射方向。数据映射方向,OR RW OW FW 这4种映射方向。(1)OR:只读,从设备只读到服务; (2)RW:读写,一般情况下从设备读到服务,当服务发生了来自客户端的写事件时,才写到设备;(3)OW:只写,从服务写数据到设备。(4)FW:强制写,从服务一直写数据到设备,是一直不断写,按照周期写,比如500ms写一次 |
| k | "1" | 比例。kx+b的k |
| b | "0" | 偏置。kx+b的b |
| source | <json对象表4.3.1> | 数据来源 |
表4.3.1:source对象
| key | value | 描述 |
|---|---|---|
| equipId | "dev101" | 设备ID。对应南向设备id |
| id | "b1" | 数据ID。对应南向数据id |
表4.4:devStatusMaps对象
| key | value | 描述 |
|---|---|---|
| addr | "3x0" | Adogos地址 |
| source | <json对象表4.4.1> | 数据来源 |
表4.4.1:source对象
| key | value | 描述 |
|---|---|---|
| equipId | "dev101" | 设备ID。对应南向设备id |
表4.5:taskMaps对象
| key | value | 描述 |
|---|---|---|
| addr | "DI1" | dogos地址。数据地址 |
| display | "bool" | 数据类型 |
| k | "1" | 比例。kx+b的k |
| b | "0" | 偏置。kx+b的b |
| taskId | "t1" | 北向任务ID。对应北向任务id |
内容
{
"baseConfig":{ //关键字,代表南向采集配置信息
"equips":[ //设备信息,关于南下设备的信息都在这个数组里头
{
"equipId":"dev101", //设备ID。设备id,每台南下设备都分配一个id,全局唯一,用户自定义,上报数据会用到
"equipName":"dev101", //设备名称。设备别名,可以同名,只用来显示用,用户自定义
"collectConf":{ //采集配置
"isRunCmd":true, //启动。可不设置,默认启动。对这台设备是否运行,也就是你可以配置,但是不运行。
"pollingCycleTime_ms":500, //采集周期。可不设置,默认500。轮询周期时间,就是通讯完一次所有读数据的时间。若实际通讯200ms,则休息500ms-200ms后再进行下一次通讯周期。若实际通讯501ms,则休息50ms后再下一次周期。
"intervalTime_ms":1, //通讯间隔时间。可不设置,默认1。通讯与通讯之间的间隔时间,目的是在一个轮询周期内,能调节通讯的频率
"isBlockRead":true, //块读。可不设置,默认块读(false就是点读)。有些例外的,例如(1)IEC104驱动,因为厂站是主动突发的,不需要去读,采集调用该驱动库时,块读可能还没有点读来的快,所以,对于104来说,这里为点读。(2)DLT地址没有块的说法,所以DLT也是点读
"isBlockWrite":true, //块写。可不设置,默认块写
"abnormalMax":3, //异常允许最大次数。可不设置,异常的允许最大次数,默认1
"collectWay":"physical", //采集方式,可不设置,默认physical。采集器调用库时的采集方式,枚举型{physical,memory},默认是physical。也就是采集分为物理和内存方式。物理方式,则会防止串包,内存无需考虑串包
"isWritePriority":true //写优先,可不设置,默认true。如果设置写优先,则会暂停当前采集而转去写数据,写完数据再继续采集。反之,直到当前周期采集完再去写。
},
"interfaceParams":{
"link":"192.168.1.199:9900", //链接。南下设备的连接参数,可能是IP,可能是串口
"physicalInterface":"eth0" //物理接口。备用,暂时没用
},
"properties":[ //设备的属性信息,也就是数据点,要采集设备的哪些数据点,数据点的信息
{
"dataAddress":"4x0", //数据地址。设备的内存地址,例如4x0就是modbus设备的内存地址,也叫寄存器地址
"authority": "RW", //界面没有。对该数据的读写权限,枚举{RW,OW,OR}这三种。可不设置,默认RW,该字段是为了提高效率,如果设置OW,FW,就不读,可能是映射服务写过来的数据。
"dataArea":"", //数据区域。备用
"dataDesc":"b1", //描述。数据点的描述
"dataDisplay":"int16", //数据显示。数据点的类型,枚举,见文章末尾
"dataName":"b1", //测点别名。数据点的别名
"dataUnit":"n", //数据单位。数据的单位
"id":"b1", //测点名。数据的id,跟设备的id一个意思,该设备下唯一,上报时会用到
"offset":"0", //数据偏移。偏移,也就是kx+b的b
"proportion":"1" //数据比例。比例,也就是kx+b的k
},
{
"dataAddress":"4x1",
"authority": "RW",
"dataArea":"",
"dataDesc":"b2",
"dataDisplay":"int16",
"dataName":"b2",
"dataUnit":"n",
"id":"b2",
"offset":"0",
"proportion":"1"
}
],
"protocol":{ //用于和设备通讯的参数
"libName":"ModbusTCP", //库名。该设备的通讯规约,枚举,见文章末尾
"params":{
"linkPar":"1" //地址码。该设备的设备号
}
}
}
],
"gateway":"fj_502", //备用
"siteEn":"00001", //站号,该网关的站号,也就是对于平台来说,找数据就是 站号.设备id.数据id
"id":"fj00000001", //备用
"type":"S_DataInfo" //固定值,代表南向数据采集信息
},
"taskConfig":{ //关键字,代表北向任务和北向平台信息
"PlatformPar":[ //北向平台
{
"PlatformIp":"125.77.188.90:40025", //目标地址IP。mqtt的连接目标地址和端口号
"passwd":"admin", //密码。mqtt连接的密码
"tasks":[ //任务ID。任务。可以带多个任务。也就是该mqtt连接会处理的数据都是这些任务得来的。
"t1" //任务id和设备id,数据id一个意思,这个从此处往下数28行"taskId":"t1"得来的
],
"type":"SC-MQTT-DEFAULT", //类型。上报的格式说明,支持多种格式。也是枚举,见文章末尾
"user":"admin", //用户。mqtt连接用户名
"pushConf":{
"isRun":true, //启动。可不设置,默认启用。是否启动。也就是mqtt是否要启动,可以配置好不启动
"isUseResumeBrokenTransfer":true //使用断点续传。可不设置,默认启用。是否使用断点续传功能。
}
}
],
"gateway":"fj_502", //备用
"id":"fj00000001", //备用
"tasks":[ //北向任务
{
"dataId_entire":[ //该任务所要带的数据点,每个数据点都可以独立设置上报模式
{
"equipId":"dev101", //设备ID。对应南向采集的设备id
"idInfo":[
{
"id":"b1", //测点名。对应南向采集的数据id
"uploadMode":"timer 60 || change 10" //上传模式。比如这里的定时60s和变化死去超过10就上报
},
{
"id":"b2",
"uploadMode":"timer 60 || change 10"
}
]
}
],
"taskId":"t1", //任务ID。任务id,每个任务都有一个id,北向平台会选择哪些任务,就是通过这个任务id
"taskType":"t1", //任务说明
"uploadMode":"timer 60 || change 10", //上传模式。若dataId_entire里面的uploadMode未设置,那么就采用这个上传模式
"uploadParam1":"6", //备用
"uploadParam2":"n", //备用
"uploadParam3":"n" //备用
}
],
"type":"N_Task" ////固定值,代表北向信息
},
"mapSvrConfig":[ //这里主要是映射到服务地址,服务也是从这里开启
{
"type":"MapServer", // 固定字符,和前面的南向数据信息、北向任务、北向数据、南向命令并列
"mapServerType":"MS_Modbus", // MS_Modbus、MS_OpcUA、MS_EdgeComputing 这三种类型服务,分别对应界面的MODBUS OPCUA ADOGOS
"ID":"1", //服务ID。一个串口(端口)最多就一个ID,一个ID可以同时被串口、tcp、udp都拥有。这个信息是最基本的准则
"interfaces":{ //有可能同时开这三种物理方式的服务,例如,对于modbus ID = 1来说,就有可能同时存在串口、tcp、udp服务。
"serial":{
"listen":"COM1", //只设置串口名称,参数由别的软件设置,此只负责打开,因为该口是服务,硬件由别的软件统一设置。也可设置波特率等,"COM1,9600,8,1,N",此情况要设置参数。
"isRun":true //默认启动,默认可不设置
},
"tcp":{
"listen":"127.0.0.1:502", //串口/端口
"customerNum":30, //客户连接数量,也就是开启多少个线程
"isRun":false //是否启动
},
"udp":{
"listen":"503", //即可只设置端口号,默认ip=127.0.0.1。也可以设置ip:port形式
"customerNum":13, //客户数,即线程池,若设置13个线程池,当客户端连接数<=13,则每个客户端都对应1个线程在服务。当第14个客户端连接,也支持,只是和其中一个客户端共用一个线程
"isRun":false
},
"sharedMem":{ //这种情况是用于边缘计算,边缘计算采用的方式的是共存内存而非tcp、udp或串口
"isRun":false //是否启动
}
},
"mapConf":{
"pollingCycleTime_ms":500 //FW时、任务映射时,该周期。OR RW的周期是取决于采集周期
},
"dataMaps":[ //数据映射,也叫通道映射,把服务地址和通道数据进行映射
{
"addr":"4x0", //AdogOS地址。服务的起始地址,例如,数据类型为int32,这对于modbus来说,就需要两个寄存器地址。
"quality":"1x0", //质量。数据质量值,当方向为OR RW才有此属性。当方向为OW FW,该属性没用,为空就行。因为该值是存储映射过来的质量
"display":"int16", //数据类型。数据类型值,经过kx+b计算之后,都强制转换该类型给服务地址。也就是说,设备的类型不一定和该类型一致
"direction":"OR", //映射方向。数据映射方向,OR RW OW FW 这4种映射方向。(1)OR:只读,从设备只读到服务; (2)RW:读写,一般情况下从设备读到服务,当服务发生了来自客户端的写事件时,才写到设备;(3)OW:只写,从服务写数据到设备。(4)FW:强制写,从服务一直写数据到设备,是一直不断写,按照周期写,比如500ms写一次
"k":"1", //比例。kx+b的k
"b":"0", //偏置。kx+b的b
"source":{ //数据来源
"equipId":"dev101", //设备ID。对应南向设备id
"id":"b1" //数据ID。对应南向数据id
}
}
],
"devStatusMaps":[ //设备状态映射。每台设备都有状态,状态映射到服务地址
{
"addr":"3x0", //Adogos地址。
"source":{
"equipId":"dev101" //设备ID。
}
}
],
"taskMaps":[ //任务映射,单向的,扫描完标签值判断后,把服务地址映射给任务。也就是标签触发的既可以用modbus服务地址,也可以用边缘计算服务地址,后续也可以用opc iec104服务地址。
{
"addr":"DI1", //Adogos地址。数据地址
"display":"bool", //数据类型
"k":"1", //比例。kx+b的k
"b":"0", //偏置。kx+b的b
"taskId":"t1" //北向任务ID。对应北向任务id
}
]
}
]
}
(1)下发
{
"type":"S_DataInfo,N_Task", //下发配置类型,根据下发内容(两大块 : 南向数据信息 和 北向任务, 以逗号分开)
"totalCount":10, //总共m包
"index":1, //第n包, n(1到totalCount)
"messageId":123, //msgId
"content":"{\"baseConfig\":{....." (配置内容分包) //暂定100k大小
}
(2)响应
{
"type":"S_DataInfo,N_Task",
"respond":"succeed",//fail,overTime
"messageId":"123",
"index":1,
"msg":"下发成功"
}
注意:分包下发时,每次分包下载网关都需要响应,响应之后才继续发下一包,否则判定失败
备注:下一次升级,记得加校验码
二、命令格式(写值、设备启停、召唤(设备状态、数据、配置、软件版本号,其余目标平台mqtt状态信息))
(1)命令
{
"type": "S_Control",
"cmd": "devsCmd",//writeData, devsCmd, callData, callEquipSatus, callConf, callVersion, callDataPlatformStatus, callLog。召唤数据callData、召唤设备状态callEquipSatus、召唤平台状态callDataPlatformStatus等,都是最新数据最新状态。
"messageId":"123",
"param":[{
//根据cmd进行填充
}]
//例子1.1:devsCmd 1个设备的启停
"param":{
"equipId":"dev101",
"isStart":true
}
//例子1.2:devsCmd 多个设备的启停
"param":[{
"equipId":"dev101",
"isStart":true
},{
"equipId":"dev102",
"isStart":false
}]
//例子2.1:writeData 1个数据的写
"param":{
"equipId":"dev101",
"id":"b1",
"value":"20",
"dataDisplay":"int16"
}
//例子2.2:writeData 多个数据的写
"param":[{
"equipId":"dev101",
"id":"b1",
"value":"20",
"dataDisplay":"int16"
},{
"equipId":"dev101",
"id":"b2",
"value":"21",
"dataDisplay":"uint32"
},{
"equipId":"dev102",
"id":"b1",
"value":"21.432",
"dataDisplay":"float"
}]
//例子3.1:callData 1台设备数据召唤
"param":{
"equipId":"dev101"
}
//例子3.2:callData 多台设备数据召唤
"param":[{
"equipId":"dev101"
},{
"equipId":"dev201"
}]
//例子 4 : callEquipSatus
"param":
//例子 5 : callDataPlatformStatus
"param":
//例子 6 : callVersion
"param":
//例子 7 : callConf
"param":
//例子 8 : callLog
"param":
}
(2)响应
{
"type":"S_Control",
"cmd": "callData",
"messageId":"123",
"respond":"succeed",//枚举 succeed ,fail, overTime
"msg":"设备写值成功",//中文提示,可以忽略
"data":{}
//例子1 :devsCmd
"data":[{
"equipId":"dev101",
"isStart":true
},{
"equipId":"dev102",
"isStart":false
}]
//例子2 :writeData
"data":{}
//例子3 :callData
"data":{
"equips":[{
"equipId":"001",
"state":"good"
}],
"data":[{
"dataId":"dev101_b1",
"dataName":"KKS01",
"value":"220",
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
},
{
"dataId":"dev102_02",
"dataName":"KKS01",
"value":"10"
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
}]
}
//例子4 :callEquipSatus //召唤设备状态
"data":[{
"equipId":"dev101", //设备id
"state":"good", //设备状态质量
"isStart":false, //设备是否启动采集
"dataIdQualityNum":{ //该设备下的数据质量个数
"good":100,
"bad":0
}
},
{
"equipId":"dev102",
"state":"good",
"isStart":true,
"dataIdQualityNum":{
"good":100,
"bad":0
}
}],
//例子5 :callDataPlatformStatus
"data":[{
"PlatformIp":"125.77.188.90:40025",
"type":"HN-MQTT-BJ"
"state":"good"
},{
"platformId":"125.77.188.91:40025",
"state":"bad"
}]
//例子6 :callVersion
"data":{
"existFunction": "具备数据快速采集恢复",
"repairedBug": "修复了xxxx问题",
"version": "v1.9.0.0 20220704"
}
//例子 7 callConf
"data":{
"type":"S_DataInfo,N_Task",
"totalCount":10,
"index":1,
"content":"{"baseConfig":{....."
}
//例子 8 callLogCurWarning
"data":{
"count":123,
"warning":["1111","2222"]
}
}
备注:召唤配置时callConf,是分包的,流程是这样的
1:云端请求召唤配置命令
2:网关作出响应,主动发送第n包(totalCount,index,content等这些信息)
3:云端收到网关的,作出响应,
4:网关判断云端的反馈情况,然后重复第2步发送下一包数据
v网关和云端的响应格式是一样的,共用。
//—————————————————————————————————————————————–
三、上报数据格式
{
"type":"N_data",
"equips":[
{
"equipId":"dev101",
"state":"good"
},
{
"equipId":"dev102",
"state":"good"
}],
"data":[
{
"dataId":"dev101_b1",
"dataName":"KKS01",
"value":"220",
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
},
{
"dataId":"dev101_02",
"dataName":"KKS01",
"value":"10"
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
},
{
"dataId":"dev101_03",
"dataName":"KKS02",
"value":"222"
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
},
{
"dataId":"dev101_04",
"dataName":"KKS03",
"value":"11"
"timeStamp":"2022-03-14 08:48:00",
"quality":"Good"
}
]
}
四、参数值
1、平台类型说明:
DT-MQTT/HTTP/UDP-DEFAULT(谛听标准默认上报数据格式,预留)
DT-MQTT-DEBUG (谛听格式,文件见《DT-MQTT-DEBUG格式V2.1.txt》)
HN-MQTT-BJ (华能用得上报数据格式,文件见《HN-MQTT-BJ格式V2.n.txt》)
SC-MQTT-DEFAULT(数采上报数据格式,文件见《SC-MQTT-DEFAULT格式V2.n.txt》)
WG-MQTT-DEFAULT(预留,用于动态库)
选项内容
{
"physicalInterface":"eth0",//物理接口选项如下
eth0
eth1
eth2
eth3
eth4
eth5
eth6
eth7
com1
com2
com3
com4
com5
com6
com7
com8
}
{
"dataDisplay":"int16",//数据类型如下选项
bool
int8
uint8
int16
uint16
int32
uint32
float
int64
uint64
double
string
int16_AB
int16_BA
uint16_AB
uint16_BA
int32_ABCD
int32_BADC
int32_CDAB
int32_DCBA
uint32_ABCD
uint32_BADC
uint32_CDAB
uint32_DCBA
float_ABCD
float_BADC
float_CDAB
float_DCBA
double_ABCDEFGH
double_BADCFEHG
double_GHEFCDAB
double_HGFEDCBA
}
{
"libName":"libModbusRTU"//协议库选项
ADogOS
ModbusTCP
ModbusRTU
Siemens_S7
Siemens_PPI
Omron_FinsTCP
Omron_HostLnk
PineControl
DTL645_2007
DLT645_1997
Fatek
Mitsubishi_FxProgram
IEC104
}
{
"linkpar":"1"//驱动配置参数:
ModbusTCP 设备地址:1
DTL645_2007 设备地址:000000000000
}
上传策略
{
1、定时 timer 10
2、变化 change 10
3、高低阈值 HLlimit 100/N 10/N 5 //大于100或小于10 上报,如果满足条件时每5s上一次
4、标签触发:是modbus服务的地址或边缘计算的地址进行触发的,这服务在映射服务里面的
label 1.DI1/DI1/1x1/1.1x1 up/down/reversal
timer 10 || change 10 || label DI1 up
}