概述
http转发功能,允许用户通过简单配置,将网关子设备数据转发至自己的云平台。转发服务中涉及到的相关参数(gatewayMac、serverId、deviceId、数据上报格式等)可参考相关参数获取和数据格式说明 。
一. 转发配置
1.1 添加http转发
登录网关管理界面->服务->转发,类型选择HTTP->私有HTTP,配置完成后点击确定。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22567652/1639122279227-564253df-cff7-43e9-9918-8c341e6e4635.png#clientId=uf92fb60e-da3c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=756&id=u6adab2ea&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1512&originWidth=2870&originalType=binary&ratio=1&rotation=0&showTitle=false&size=214278&status=done&style=none&taskId=u3fc8b4cd-1013-4017-b87c-eecfbded92d&title=&width=1435)
1.2 基本配置
点击刚刚创建的http转发服务的编辑按钮,点击基本配置。添加相关参数。
其中 Username、Password、MD5加密、MD5盐均用于请求token时使用。如果不使能md5加密,请求token时Password将会以明文形式发送。启用MD5加密时,Password将配合MD5盐进行加密。
加密示例:
Password: test
加盐为空时,加密后的结果为:098f6bcd4621d373cade4e832627b4f6
加盐为”123123”时,加密后的结果为:3b4df34a31840b455ba7e8be9659030d
2.2 接口设置
点击接口配置,添加相关接口。接口配置为空时,将不会请求。例如:Token获取接口配置为空时,将不会请求token。
- Token获取:网关使用”基本配置”中的用户名和密码向服务器请求token,后边所有请求都将会在http header里面添加该token。
- 数据上报:将网关采集到的数据转发到该接口。
- 下发获取:网关定时向服务器请求要下发的数据。该接口可以添加${gatewayMac}变量,网关在请求时,会使用网关唯一ID替换${gatewayMac}。
- 下发结果上报:数据下发结果,会通过该接口发送至服务器。
- 网关属性上报:网关SIM卡ID,信号强度、GPS信息(支持GPS的型号),通过该接口上报至服务器。
- 设备属性上报:网关子设备的通信次数、丢包率、是否在线等参数,通过该接口上报至服务器。
- 事件上报:网关子设备上线、下线事件,通过该接口上报至服务器。
- 串口接收上报:发送到串口的数据,通过该接口,发送到http服务器。
- 串口发送获取:网关定时向服务器请求要下发的数据。该接口可以添加${COM}变量,网关在请求时,会使用实际串口号替换${COM}。
注意:使用串口接收上报和串口发送获取功能时,需要先配置好本地资源-本地串口子设备。
3.3 高级设置
点击高级设置,修改默认参数。
- 离线缓存:是否使能离线缓存功能。
- 存储位置:SD卡或网关内部存储。
- 存储大小:内部存储最大支持80M,SD卡最大支持32G(需要额外插入内存卡)。
- 数据格式:参考私有MQTT接入附录3。
- 数据上报周期:数据上报接口请求频率。单位:秒。
- 下发获取周期:下发获取接口请求频率。单位:秒。
- 网关属性上报周期:网关属性上报接口请求频率。单位:秒。
- 设备属性上报周期:设备属性上报接口请求频率。单位:秒。
二. 接口说明
网关所有请求的接口,服务器均需要返回code值,否则网关认为请求失败。
成功:{“code”: 0}
token验证失败:{“code”: -1}, 网关收到该参数,会重新请求token。
2.1 Token获取
- 请求方式:POST
- 请求参数(假设用户名为test,密码为test,未开启MD5加密):
{
"gatewayMac":"92320e7f173f",
"password":"test",
"username":"test"
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
username |
用户名 |
password |
密码 |
- 服务器返回:
{
"code":0,
"token": "xxxxxxxxxxxxxxxxxxxxxxx",
"validity":30
}
参数含义
参数 |
含义 |
code |
0:成功;-1:代表验证失败 |
token |
返回的token值,后边请求其它接口,都会在header里面添加该token |
validity |
token有效期,单位:秒。需要大于20s。网关会在token到期前10秒重新获取token |
2.2 数据上报
- 请求方式:POST
- 请求参数
{
"deviceId":"1122",
"gatewayMac":"92320e7f173f",
"serverId":"standard",
"time":1639040484593,
"params":
{
"wendu":7
}
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
serverId |
转发服务ID |
deviceId |
网关子设备标识 |
time |
UTC事件戳,单位:毫秒。 |
params |
子设备数据点的值(数据格式可变,参考私有MQTT接入附录3) |
params->wendu |
点表配置中,数据点标识 |
- 服务器返回:
{"code": 0}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
2.3 下发获取
- 请求方式:GET
请求参数:该接口可以在URL里面配置网关唯一ID,例如网关唯一为92320e7f173a,接口信息配置为:
http://192.168.0.6:8899/data/dataSet?gatewayMac=${gatewayMac}
则实际请求接口为:
http://192.168.0.6:8899/data/dataSet?gatewayMac=92320e7f173a
服务器返回
{
"code": 0,
"id": 123,
"gatewayMac":"92320e7f173a",
"deviceId":"1122",
"data":{
"wendu":11
}
}
注意:如无待下发数据
- url里面含有${gatewayMac},则只需返回
{"code": 0}
- url里面不含有${gatewayMac},则返回
{"code": 0, "gatwayMac":"92320e7f173a"}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
id |
请求标识。数据下发结果上报时,会使用该参数 |
deviceId |
子设备唯一ID |
gatewayMac |
网关唯一ID |
data |
待下发的数据 |
data->wendu |
点表配置中,数据点标识 |
2.4 下发结果上报
- 请求方式:POST
- 请求参数
{
"gatewayMac": "92320e7f173f",
"serverId": "standard",
"params": {
"deviceId": "1122",
"id": 123,
"result": {
"wendu": {
"success": true
}
}
}
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
serverId |
转发服务标识 |
params |
下发结果相关参数 |
params->deviceId |
子设备标识 |
params->id |
2.3中数据下发参数的id |
params->result |
数据下发结果 |
params->result->wendu |
点表配置中,数据点标识 |
params->result->wendu->success |
执行结果。true:成功;false:失败 |
- 服务器返回:
{"code": 0}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
2.5 网关属性上报
- 请求方式:POST
- 请求参数
{
"gatewayMac":"92320e7f173f",
"serverId":"standard",
"params":{
"csq":23,
"iccid":"2334CA457ABCCCAD",
"imei":"866569876387634"
"operators":"LT",
"simInsert":true
}
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
serverId |
转发服务标识 |
params |
网关属性相关参数 |
params->simInsert |
SIM卡是否已插入。true:插入;false:未插入 |
params->iccid |
SIM卡唯一ID,SIM卡欠费后,用户可通过该ID进行充值 |
params->operators |
SIM卡运营商。”LT”:中国联通;”YD”:中国移动;”DX”:中国电信 |
params->csq |
4G信号强度。范围0-31。31时信号强度为100% |
params->imei |
4G模组唯一ID。 |
- 服务器返回:
{"code": 0}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
2.6 设备属性上报
- 请求方式:POST
- 请求参数
{
"gatewayMac":"92320e7f173f",
"serverId":"standard",
"params":{
"siemens001":{
"CommFailCnt":2410,
"CommTotalCnt":4275,
"code":0,
"isOnline":true,
"lastCommRTC":"2021-12-09 16:56:48",
"lossRate":0.3605086,
"msg":""
}
}
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
serverId |
转发服务标识 |
params |
设备属性相关参数 |
params->siemens001 |
子设备标识 |
params->siemens001->CommFailCnt |
网关与子设备siemens001通信失败次数 |
params->siemens001->CommTotalCnt |
网关与子设备siemens001通信总次数 |
params->siemens001->code |
网关与子设备siemens001通信错误码。0:无错误;其它:通信错误,原因见msg字段 |
params->siemens001->isOnline |
子设备siemens001是否在线。true:在线;false:离线 |
params->siemens001->lastCommRTC |
网关与子设备siemens001最后一次通信的时间 |
params->siemens001->lossRate |
网关与子设备siemens001通信丢包率(通信失败次数/总通信次数 * 100%) |
params->siemens001->msg |
通信错误原因。无错误时为空 |
- 服务器返回:
{"code": 0}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
2.7 设备事件上报
- 请求方式:POST
- 请求参数
{
"gatewayMac": "92320e7f173f",
"serverId": "1231231",
"params": {
"connect": true,
"device": "modbus"
}
}
参数含义
参数 |
含义 |
gatewayMac |
网关唯一ID |
serverId |
转发服务标识 |
params |
设备事件参数 |
params->siemens001 |
子设备标识 |
params->connect |
true:子设备上线;false:子设备离线 |
params->device |
设备标识 |
- 服务器返回:
{"code": 0}
参数含义
参数 |
含义 |
code |
0:表示成功;-1:token验证失败,需要重新请求token。其它:失败 |
2.8 串口透传数据上报
- 请求方式:POST
- 请求参数: 该接口可以在URL里面配置网关唯一ID和COM口,例如网关唯一ID为92320e7f173a,COM口为COM1。接口信息配置为:
http://127.0.0.1:8899/data/serial/send?gatewayMac=${gatewayMac}&com=${COM}
实际请求地址为:
http://127.0.0.1:8899/data/serial/send?gatewayMac=92320e7f173a&com=COM1
串口参数,可以为任意参数。参数放在http请求的body里面。
服务器返回:
{"code": 0}
2.9 串口透传数据下发
请求方式:GET
- 请求参数:该接口可以在URL里面配置网关唯一ID,例如网关唯一为92320e7f173a,接口信息配置为:
http://127.0.0.1:8899/data/serial/receive?gatewayMac=${gatewayMac}
则实际请求接口为:
http://127.0.0.1:8899/data/serial/receive?gatewayMac=92320e7f173a
- 服务器返回(该接口的body里面存储串口发送的数据,可能不是json。因此需要在http header里面返回code和COM,如:header[“code”] = “0”; header[“COM”] = “COM1”,当code不配置时,不进行错误检查。COM不配置时,默认将数据发送的网关的所有串口。)。将需要发送到串口的数据放到body里面,