一. 概述
该功能可以将网关采集到的PLC、传感器、仪器仪表等数据,转发至用户私有mqtt broker(emqx、mosquitto等)。同时用户可以灵活的配置MQTT连接方式、数据上报和下发主题、数据上报格式等等。
二. 配置
2.1. 基本配置
登录网关管理界面->服务->转发,类型选择MQTT->私有云,配置完成,填写MQTT服务器IP(或域名)端口号。完成配置后点击确定。
2.2. 其它配置
如需配置MQTT用户名、密码等参数,请点击”编辑”->基本配置,根据需要进行完善。
2.3 主题设置
星原网关支持用户自定义MQTT主题,用户可根据需求,自行修改。其中主题内支持设置变量, 相关变量在数据上报时,会自动替换为实际值,以下变量实际的获取方式可以参考相关参数获取。
- ${username} :mqtt连接所用用户名。
- ${gatewayMac}: 网关唯一ID,获取方式参考相关参数获取。
- ${deviceId}: 设备标识,获取方式参考相关参数获取。 其中网关属性上报,不允许配置该参数。
- ${COM}: 串口号,对应网关的物理串口COM1和COM2。
2.4 上报周期
用户可以自行定义数据的上报周期。当数据上报周期等于0时,会将子设备采集到的数据,实时转发至broker。网关属性上报周期和设备属性上报周期等于0时,将不会上报网关属性和设备属性。
- 网关属性:网关SIM卡卡号、信号强度、SIM卡运营商等(支持GPS的型号,会同时上报经纬度)
- 设备属性:子设备的采集状态,通信次数、丢包率等。
2.5 数据格式
具体格式含义,请参考数据格式说明。
三. 数据格式
3.1 数据下发
私有broker的数据下发,需要用户指定gatewayMac和deviceId, deviceId既可以放在主题内,也可以放在下发的数据内。gatewayMac必须放在主题内,比如SBOX/${gatewayMac}/data/set。这样网关可以避免接收到许多不属于自己的垃圾数据,既节约流量,也减少网关不必要的开支。
例子:
- 数据下发:SBOX/${username}/${gatewayMac}/device/data/set
- 数据下发结果:SBOX/${username}/${gatewayMac}/device/data/setResult
使用mqtt.fx或者mqttbox工具,和网关连接相同的mqtt broker(mqtt 用户名相同)。这里假设mqtt用户名(${username})为demo,网关唯一ID(${gatewayMac})为9324ac870321。子设备ID(${deviceId})为modbus。
1. 下发成功示例:
实际主题:SBOX/demo/9324ac870321/device/data/set
下发的数据:
{
"id":121,
"deviceId": "modbus",
"data":{
"wendu":6
}
}
结果反馈
实际主题:SBOX/demo/9324ac870321/device/data/setResult
返回的数据:
{"id":121,"result":{"wendu":{"success":true}}}
2. 下发失败示例:
实际主题:SBOX/demo/9324ac870321/device/data/set
下发的数据:
{
"id":121,
"deviceId": "modbus",
"data":{
"wendu2":6
}
}
结果反馈
实际主题:SBOX/demo/9324ac870321/device/data/setResult
返回的数据:
{"id":121,"result":{"wendu2":{"success":false,"msg":"can not find this point"}}}
3.2 网关属性上报
例子:
- 数据上报主题设置为:SBOX/${gatewayMac}/gateway/attribute/push
这里假设网关唯一ID(${gatewayMac})为9324ac870321。
- 实际上报主题:SBOX/9324ac870321/gateway/attribute/push
- 上报数据:
4G型号的网关属性值
{
"csq":23,
"iccid":"2334CA457ABCCCAD",
"imei":"866569876387634"
"operators":"LT",
"simInsert":true
}
| 名称 | 数据类型 | 含义 | | —- | —- | —- | | csq | int | 信号强度,最大值为31 | | iccid | string | SIM卡的ICCID,可通过该卡进行充值 | | imei | string | 4G模组的唯一ID,有的卡开卡可能需要该参数 | | operators | string | 运营商名称首字母。LT:中国联通;YD:中国移动;DX: 中国电信 | | simInsert | bool | 网关sim卡是否已插入 |
WIFI型号网关属性值
{
"APOpen": false,
"address": "96:a4:08:20:0d:ef",
"connect": true,
"csq": 88,
"ip": "192.168.0.7",
"ssid": "huihui2.4G"
}
| 名称 | 数据类型 | 含义 | | —- | —- | —- | | APOpen | bool | WIFI的AP模式是否已启动 | | address | string | 已连接wifi热点的mac地址 | | connect | bool | 网关是否已连接到WIFI热点 | | csq | int | 信号强度,最大值为100 | | ip | string | 网关wifi的IP地址 | | ssid | string | 已连接热点的名称 |
3.2 设备属性上报
例子:
- 数据上报主题设置为:SBOX/${gatewayMac}/device/attribute/push
这里假设网关唯一ID(${gatewayMac})为9324ac870321。
- 实际上报主题:SBOX/9324ac870321/device/attribute/push
- 上报数据:
| 名称 | 数据类型 | 含义 | | —- | —- | —- | | modbus | string | 子设备标识 | | lastCommRTC | string | 最后一次通信时间 | | CommTotalCnt | int | 通信成功的次数 | | CommFailCnt | int | 通信失败的次数 | | lossRate | float64 | 丢包率 | | oneTotalCnt | int | 预留 | | oneCommFailCnt | int | 预留 | | isOnline | bool | 网关子设备 | | code | string | 错误标识{
"modbus": {
"lastCommRTC": "2022-04-22 11:58:41",
"CommTotalCnt": 9513,
"CommFailCnt": 9514,
"lossRate": 0.5000263,
"oneTotalCnt": 0,
"oneCommFailCnt": 0,
"isOnline": true,
"code": 10000
}
}
code=0: 无错误
code>0: 网关可以与子设备通信,但存在错误。具体错误内容看msg字段
code<0:网关无法与子设备通信。具体错误内容看msg字段 | | msg | string | 错误内容 |
3.3 事件上报
例子:
- 数据上报主题设置为:SBOX/${gatewayMac}/${deviceId}/device/event/push
这里假设网关唯一ID(${gatewayMac})为9324ac870321,子设备ID(${deviceId})为modbus。
- 实际上报主题:SBOX/9324ac870321/modbus/device/event/push
- 上报数据:
| 名称 | 数据类型 | 含义 | | —- | —- | —- | | connect | bool | 设备与网关的连接状态 | | device | string | 子设备id |{
"connect": true,
"device": "modbus"
}
3.4 串口接收上报
网关用于发布串口原始数据的主题。该主题上报的格式由串口接收的数据而定,没有具体格式。
3.5 串口发送下发
网关订阅,用于服务器向串口发送数据。该主题的所有数据,网关不会进行任何处理,直接发送到指定的串口。