乐高易车联网网关中间件使用手册
广西乐高易网络有限公司
www.legaoyi.com
修订日期:2024年2月20日
目录
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
1.引用标准
JT/T905.2-2014《出租汽车服务管理信息系统运营专用设备-通讯协议》
2.系统架构
netty/mina网关支持近200多种网络接入协议,全面覆盖市场上的终端设备,轻松连接各种车联网终端设备。网关采用MQ消息中间件以json消息(支持Kafka/RabbitMQ)与业务平台进行数据交换,能够无缝接入各种异构系统。车联网网关主要功能包括:
一、 协议封装
车联网网关屏蔽了车载终端设备通讯协议的复杂性以及异构性,提供标准的json消息与业务平台进行交互,业务平台只需要按照车联网网关规定的json消息格式将消息发送至指定MQ消息队列/主题当中即可。车联网网关对json消息进行数据转换、协议适配,封装成符合各种车载终端设备的通讯协议的消息。
二、 协议解析
车联网网关屏蔽了车载终端设备通讯协议的复杂性以及异构性,对车载终端设备上行的消息进行协议适配、数据转换,封装成标准的json消息,并发送到指定的MQ消息队列/主题当中与业务平台进行数据交换。
三、 链路管理
车联网网关根据车载终端设备通讯协议的通讯方式、链路管理规范,管理接入设备与车联网网关之间的链路通讯、状态维护、链路状态通知等。
四、 数据交换
车联网网关按照车载终端设备通讯协议的规范,现实车载终端设备与业务平台之间的数据传输功能。
五、 安全控制
车联网网关具备流量控制、过载保护、数据加密、IP黑名单等安全控制功能。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.消息定义
3.1 数据交换方式
车联网网关(中间件)与业务平台之间通过json+MQ消息队列/主题方式进行数据交换,载终端设备发送到车联网网关(中间件)的协议消息,由网关中间件进行数据转换成为标准的json消息并发送到对应的MQ消息队列/主题中,业务平台通过监听对应的MQ消息队列/主题获得对应的消息,然后根据自身业务需求进行业务处理。当业务平台需要与车载终端设备进行通信时,业务平台根据本文定义的消息格式把对应的消息发送至对应MQ消息队列/主题中即可,车联网网关(中间件)会监听对应的MQ消息队列/主题获取相关的消息并按照808协议的规定进行消息转换,封装成808协议指定的消息格式发送到车载终端设备上。
3.2 数据交换队列/主题
(1){elink.upstream.urgent.topic}:车联网网关紧急上行消息队列/主题,该队列/主题主要存放车载终端设备注册、鉴权、上下线等消息。业务平台可监听该队列/主题获取相关消息。
(2){elink.upstream.media.topic}:车联网网关多媒体上行消息队列/主题,业务平台可监听该队列/主题获取相关的多媒体数据。
(3){elink.upstream.file.topic}:车联网网关文件上行消息队列/主题,业务平台可监听该队列/主题获取相关的文件数据(注意:车载设备上传的文件,网关处理后存放在本地服务器中)。
(4){elink.upstream.gps.topic}:车联网网关位置信息上行消息队列/主题,业务平台可监听该队列/主题获取相关终端设备上传的位置信息。
(5){elink.upstream.common.topic}:车联网网关普通上行消息队列/主题,该队列/主题存放(1)、(2)、(3) 、(4)以外的上行消息。业务平台可监听该队列/主题获取相关的消息。
(6){elink.gateway.id}:业务平台普通下行消息队列/主题,业务平台通过该队列/主题下发消息到车载终端设备(该队列/主题对应的rabbitmq网关为“elink.downstream.message.direct.exchange”消息路由key为车联网网关的网关id(“elink.gateway.id”),业务平台把消息发送到该rabbitmq网关即可)。
3.3 数据交换消息类型
(1)上行消息(车载终端设备向业务平台发送的消息):
{
"messageId":"0000",
"gatewayId":"网关id",
"exchangeId":"消息流水号",
"createTime":"接收时间",
"message":{
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息体
},
"dataLength":"消息字节数"
}
注意:messageId固定为"0000"。其中消息体定义(message)格式:
{
"messageHeader":{
消息头
},
"messageBody":{
消息体
}
}
其中消息体定义(message)的消息头(messageHeader)参数是固定的,消息头格式
字段名
类型
描述
protocol
String
协议名称,如jt905
version
String
协议版本,如2014
deviceSn
String
设备ID,终端设备唯一标识
messageId
String
协议定义的消息id
messageSeq
Long
消息流水号
attributes
Map
消息头扩展属性
消息头样例:
{
"protocol":"jt905", "protocolVersion":"2014", "deviceSn":"440465321201", "messageId":"0200", "messageSeq":159, "encryption":true, "attributes":{ "undefinedBit":"00", "encryptType":0, "isSubpackage":false }
}
网关中间件支持的协议以及版本:
协议名称
协议版本
描述
jt905
2014
JTT905出租汽车服务管理信息系统运营专用设备-通讯协议
其中消息体定义(message)的消息体(messageBody)则根据协议定义各不相同。具体参考下文中对应的消息描述。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(2)下行消息(业务平台向车载ISU设备下发的消息):
{
"messageId":"8000",
"gatewayId":"网关id",
"exchangeId":"平台消息流水号",
"message":"{消息体定义}"
}
注意:messageId固定为"8000"。其中消息体定义格式(同上行消息格式一致):
{
"messageHeader":{
消息头
},
"messageBody":{
消息体
}
}
其中消息体定义(message)的消息头(messageHeader)参数是固定的,消息头格式(同上行消息格式一致):
{
"protocol":"jt905", ”version”:”2014”, "deviceSn":"100100000001", "messageId":"0200", "messageSeq":159
}
其中消息体定义(message)的消息体(messageBody)则根据协议定义各不相同。具体参考下文中对应的消息描述。
(3)车联网网关(中间件)应答消息车联网网关应答业务平台下行消息的处理结果,其中messageId固定为"0001"。消息格式:
字段名
类型
描述
result
String
-1:未知错误
0:成功
1设备不在线
2:消息有误
3:不支持该消息
desc
String
结果描述
messageId
String
对应下行消息的消息id
消息样例:
{ "messageId":"0001", "gatewayId":"网关id", "exchangeId":"平台消息流水号(平台记录id", "message":{
"messageId":"消息id",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"result":"消息处理结果", "desc":"消息处理结果描述" }}
(4)设备状态消息, 其中messageId固定为"0002",消息体描述见下文。
{ "messageId":"0002", "gatewayId":"网关id", "exchangeId":"", "message":{
"state":"0 or 1", "deviceSn":"013800000000"
}}
(5)流量异常消息, 如果车联网网关配置了流量控制策略,当车载ISU设备的发送消息的频率异常时会触发流量告警,其中messageId固定为"0008",消息体描述见下文。
{ "messageId":"0008", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
(6)解除黑名单消息, 如果车联网网关配置了流量控制策略,当车载ISU设备的发送消息的频率异常时会触发流量告警,其中messageId固定为"110",消息体描述见下文。
{ "messageId":"110", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
(7)网关重启消息,车联网网关程序重启后会发送消息通知业务平台,其中messageId固定"0009",消息体描述见下文。
{ "messageId":"0009", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
(8)多媒体消息, 车联网网关接收到车载ISU设备上报的多媒体消息后,会使用单独的消息
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
队列发送给业务平台,其中messageId固定为"0801",消息体描述见下文。
{ "messageId":"0801", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
(9)平台注销ISU消息, 当业务平台注销在线的车载ISU设备时,可以发送该消息给车联网网关,车联网网关接收到该消息之后立即强制ISU下线,其中messageId固定为"8003",消息体描述见下文。
{ "messageId":"8003", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
(10)平台应答ISU鉴权消息,业务平台接收到车载ISU设备的鉴权消息后,按照该消息格式应答车联网网关,其中messageId固定为"8102",消息体描述见下文。
{ "messageId":"8102", "gatewayId":"网关id", "exchangeId":"", "message":"{消息体定义}"}
3.4 车载ISU设备状态消息
消息概述
(1) 消息名称:车载ISU设备状态消息
(2) 消息id:0x0002
(3) 消息方向:车联网网关->业务平台
(4) 业务逻辑
a.当车载ISU设备连接平台通过鉴权之后,车联网网关向业务平台发布车载ISU设备上线消息;
b.当车载ISU设备与网关的链接断开后,车联网网关向业务平台发布车载ISU设备下线消息。
消息体定义
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
字段名
类型
描述
deviceSn
String
ISUsim卡号
state
int
0:下线
1:上线
消息示例
{ "exchangeId":"", "messageId":"0002", "gatewayId":"elink-device-gateway", "message":{ "state":1, "deviceSn":"100100000001" }, "createTime":1540916223639, "dataLength":0}
3.5 流量异常告警通知
消息概述
(1) 消息名称:流量异常告警通知
(2) 消息描述:车联网网关根据流量控制策略,当车载ISU设备上报平台的数量触发流量控制策略时,车联网网关会立即强制ISU下线,车载ISU进入黑名单中直至控制条件解除,并发送消息通知业务平台。
(3) 消息方向:车联网网关->业务平台
(4) 业务逻辑:业务平台该消息之后,可根据自身业务需要处理该消息,如弹框提醒等。
消息体定义
字段名
类型
描述
ip
string
车载ISU设备通讯ip
deviceSn
String
ISUsim卡号
type
int
1:上报数据字节数超频
2:上报数据条数超频
消息示例
{ "exchangeId":"", "messageId":"0008", "gatewayId":"elink-device-gateway",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"message":{ "type":1, "deviceSn":"100100000001",
"ip":"127.0.0.1" }, "createTime":1540916223639, "dataLength":0}
3.6 车联网网关应答消息
消息概述
(1) 消息名称:车联网网关应答消息
(2) 消息描述:业务平台对车载ISU设备发送下行消息,车联网网关处理消息后,向业务平台发送应答消息,告知业务平台消息处理结果。
(3) 消息方向:车联网网关->业务平台
(4) 业务逻辑业务平台该消息之后,可根据自身业务需要处理该消息,如改变下行消息的状态等。
消息体定义
字段名
类型
描述
result
String
-1:未知错误
0:成功
1设备不在线
2:消息有误
3:不支持该消息
desc
String
结果描述
messageId
String
对应下行消息的消息id
消息示例
{ "messageId":"0001", "gatewayId":"elink-device-gateway", "exchangeId":"000fa0641df04b2ca7d0b1a040844584", "message":{
"messageId":"8500", "result":0, "desc":"处理成功" }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.7 网关重启消息通知
消息概述
(1) 消息名称:车联网网关重启消息通知
(2) 消息描述:当车联网网关程序关闭重启之后,向平台发送消息通知网关已重启。
(3) 消息方向:车联网网关->业务平台
(4) 业务逻辑业务平台接收到车联网网关的网关重启通知后,可根据自身业务进行处理,如把连接该网关的车载ISU设备状态设置为下线状态消息。
消息体定义
字段名
类型
描述
消息示例
{ "exchangeId":"", "messageId":"0008", "gatewayId":"elink-device-gateway", "message":{ }, "createTime":1540916223639, "dataLength":0}
3.8 平台应答ISU鉴权消息
消息概述
(1) 消息名称:平台应答ISU鉴权消息
(2) 消息描述:业务平台向车联网网关发送ISU鉴权应答消息
(3) 消息方向:业务平台 ->车联网网关
(4) 业务逻辑业务平台接收到车联网网关的ISU鉴权消息(“0102”消息)后,对车载ISU设备的信息进行校验之后,需要按照规定格式应答,消息格式见下文。
消息体定义
字段名
类型
描述
protocol
string
协议名称
deviceSn
String
ISU设备id,messageId不为空时必须
result
int
鉴权结果,0是通过鉴权,1鉴权失败
protocolVersion
String
协议版本,可选值:2014
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
messageNumLimit
String
流量控制策略,允许上行消息条数频率控制。多个控制策略之间用“;”分隔;如值“10,150;60,720”表示允许ISU每10分钟不超过150条消息,并且每60分钟不超过720条消息,为空则不限制
messageByteLimit
String
流量控制策略,允许上行消息字节数频率控制。个控制策略之间用“;”分隔;如值“10,15;60,60”表示允许ISU每10分钟不超过15M数据,并且每60分钟不超过60M数据,为空则不限
messageLimit
String
流量控制策略,允许上行消息类型控制。值为“,”分隔的消息id列表,为空则不限制
消息示例
{ "exchangeId":"-1", "messageId":"8102", "message":{ "result":0, "messageNumLimit":"10,150;60,720", "messageByteLimit":"10,15;60,60", " messageLimit":"0200,0102,0100", "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"013100000000" } }}
3.9 平台解除黑名单消息
消息概述
(1) 消息名称:平台解除黑名单消息
(2) 消息描述:当车载ISU设备触发流量控制策略被车联网网关放入黑名单后,平台可向车联网网关发送该消息解除黑名单。
(3) 消息方向:业务平台->车联网网关
(4) 业务逻辑:业务平台解除车联网网关黑名单。
消息体定义
字段名
类型
描述
ip
string
车载ISU设备通讯ip,非必选
protocol
string
协议名称
deviceSn
String
ISU设备id,messageId不为空时必须
messageId
String
值为“,”分隔的消息id列表
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息示例
{ "exchangeId":"-1", "messageId":"110", "gatewayId":"elink-device-gateway", "message":{ "protocol":"jt905",
" deviceSn":"100100000001",
"ip":"127.0.0.1",
"messageId":"0200,0102,0100" }}
3.10 平台注销ISU消息
消息概述
(1) 消息名称:平台注销ISU消息
(2) 消息描述:当车载ISU设备与车联网网关之间的链路状态发生变化时,车联网网关发送消息通知业务平台
(3) 消息方向:业务平台->车联网网关
(4) 业务逻辑:业务平台需要注销在线车载ISU设备时,发送该消息可立即强制下线对应ISU。
消息体定义
字段名
类型
描述
protocol
string
协议名称
deviceSn
String
ISU设备id,messageId不为空时必须
消息示例
{ "exchangeId":"", "messageId":"8003", "gatewayId":"elink-device-gateway", "message":{ "protocol":"jt905",
" deviceSn":"100100000001"
}}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.11 ISU通用应答0x0001
消息概述
(1) 消息名称:ISU通用应答
(2) 消息Id:0x0001
(3) 消息方向: 车载ISU设备->车联网网关->业务平台
(4) 业务逻辑所有平台主发的消息均要求ISU应答,应答分为通用应答和专门应答,由各具体功能协议决定。
消息体定义
字段名
类型
描述
messageId
String
应答对应的平台消息id
messageSeq
Int
平台消息的流水号
result
Int
ISU处理结果,0:成功/确认1:失败2:消息有误
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "protocol":"jt905", ”version”:”2014”, "deviceSn":"100100000001", "messageId":"0200", "messageSeq":159 }, "messageBody":{ "messageId":"8500", "messageSeq":22, "result":0 } }, "createTime":1540915278102, "dataLength":10}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.12 ISU心跳0x0002
消息概述
(1) 消息名称:ISU心跳
(2) 消息Id:0x0002
(3) 消息方向:车载ISU设备->车联网网关
(4) 业务逻辑连接建立和ISU鉴权成功后,在没有正常数据包传输的情况下,ISU应周期性向平台发送ISU心跳消息,车联网网关收到后向ISU发送平台通用应答消息,发送周期由ISU参数指定。业务平台不必处理该消息。
消息体定义
字段名
类型
描述
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0002", ……此处省略其他属性 }, "messageBody":{ } }, "createTime":1540915278102, "dataLength":10}
3.13 ISU鉴权0x0102
消息概述
(1) 消息名称ISU鉴权
(2) 消息Id:0x0102
(3) 消息方向:车联网网关->业务平台
(4) 业务逻辑由于ISU设备连接平台后直接就是上传位置信息,网关中间件基于安全策略会在第一条消息上来时同时模拟一条0102鉴权消息。业务平台接收到鉴权消息之后,对ISU进行鉴权校验,并且回复车联网网关“平台鉴权应答”消息。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息体定义
字段名
类型
描述
authCode
String
鉴权码
消息示例
{ "exchangeId":"0", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0102", ……此处省略其他属性 }, "messageBody":{ "authCode":"a13vhdq" } }, "createTime":1540916071108, "dataLength":22}
3.14 查询ISU参数应答0x0104
消息概述
(1) 消息名称:查询ISU参数应答
(2) 消息Id0x0104
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑ISU接收到业务平台下发的“8104”消息后,上传ISU参数数据。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
messageSeq
Int
应答流水号
paramList
Object
参数项列表,key,value值。其中“key”为ISU参数id十六进制值,“value”为参数对应的十六进制字符串或者普通字符串(gbk字符类型值)
消息示例
{
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0104", ……此处省略其他属性 }, "messageBody":{ "messageSeq":349, "paramList":{ "0022":"0000012C", "0041":"13601012345", "0083":"D06322", "0080":"000F01C2" } } }, "createTime":1540915278102,"dataLength":80}
3.15 ISU升级结果报告消息0x0105
消息概述
(1) 消息名称ISU升级结果报告消息
(2) 消息Id:0x0105
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑ISU接收到业务平台下发的“8105”消息后,对ISU进行固件升级,升级完毕之后,把升级结果上传平台。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
deviceType
Int
升级类型
result
Int
升级结果
0:软件版本号一致,无须升级
1:升级成功
2:升级失败
3:厂商标识不一致
4:硬件版本号不一致
5:下载升级文件失败
6:升级服务器主动取消升级
7:设备主动放弃升级(非自身程序)
vendorId
Int
厂商标识
hardwareVersion
string
硬件版本号
softwareVersion
string
软件版本号
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息示例
{ "exchangeId":"0", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0102", ……此处省略其他属性 }, "messageBody":{ "deviceType":1, "hardwareVersion":"11", "softwareVersion":"1001", "vendorId":159, "result":1 }, "createTime":1540916071108, "dataLength":22}
3.16 位置信息汇报0x0200
消息概述
(1) 消息名称:位置信息汇报
(2) 消息Id:0x0200
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑ISU根据参数设定周期性发送位置信息汇报消息或者根据参数控制,ISU判断到车辆拐弯时可发送位置信息汇报消息。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
alarmEventId
Int
报警事件id
alarm
Long
报警位,
altitude
Int
海拔高度
ad
Long
模拟量
direction
Int
方向
dvrSpeed
double
行驶记录仪速度
extSignal
Long
扩展车辆信号状态位
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
gnss
Int
定位卫星数
time
Long
位置记录时间
inOutAlarmExt
Object
进出区域报警,key,value值
io
Long
io状态位
lng
double
经度
lat
double
纬度
mileage
double
里程
rssi
Int
无线通信网络信号强度
oilmass
double
油量
overSpeedAlarmExt
Object
超速报警,key,value值
runningTimeAlarmExt
Object
路段行驶时间不足或者超时报警
speed
double
速度
state
Long
状态位
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0200", ……此处省略其他属性 }, "messageBody":{ "alarm":"0", "state":"3", "lng":"116.607672", "lat":"40.076858", "altitude":36, "speed":0.6, "direction":271, "gpsTime":1541001676000, "mileage":1280, "oilmass":0, "dvrSpeed":0, "alarmEventId":0, "ad":"0", "rssi":20, "gnss":13 } }, "createTime":1540915278102, "dataLength":80
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
}
3.17 位置信息查询应答0x0201
消息概述
(1) 消息名称:位置信息查询应答
(2) 消息Id:0x0201
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:ISU接收到业务平台下发的“8201”消息后,立即上传当前位置信息。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
messageSeq
Int
应答流水号
gpsInfo
Object
位置信息,见0200消息字段
消息示例
{ "exchangeId":"36",
"messageId":"0000", "
gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0201", ……此处省略其他属性 }, "messageBody":{ "messageSeq":53, "gpsInfo":{
"0200消息体"
} } }, "createTime":1540915278102, "dataLength":80}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.18 位置跟踪信息汇报0x0202
消息概述
(1) 消息名称:位置跟踪信息汇报
(2) 消息Id:0x0202
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:ISU接收到业务平台下发的“8202”消息后,立即上传当前位置信息。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
messageSeq
Int
应答流水号
gpsInfo
Object
位置信息,见0200消息字段
消息示例
{ "exchangeId":"36",
"messageId":"0000", "
gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0202", ……此处省略其他属性 }, "messageBody":{ "messageSeq":53, "gpsInfo":{
"0200消息体"
} } }, "createTime":1540915278102, "dataLength":80}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.19 定位数据批量上传0x0203
消息概述
(1) 消息名称:定位数据批量上传
(2) 消息Id:0x0704
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:ISU通过该消息进行拐点补传或者盲区补报。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
type
Int
位置信息类型:
0:正常位置批量汇报
1:盲区补报
gpsInfoList
List
GPS信息列表,字段参考0200消息
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0201", ……此处省略其他属性 }, "messageBody":{ "type":1, "gpsInfoList":[ "0200消息体" ] } }, "createTime":1540915278102, "dataLength":80}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.20 事件报告0x0301
消息概述
(1) 消息名称:事件报告
(2) 消息Id:0x0301
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑事件项由业务平台预设到ISU,由事件编码和事件名称组成,驾驶员在遇到相应事件时操作ISU触发事件报告发送到平台。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
eventId
Int
事件id
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0301", ……此处省略其他属性 }, "messageBody":{ "eventId":12 } }, "createTime":1540915278102, "dataLength":80}
3.21 提问应答0x0302
消息概述
(1) 消息名称:提问应答
(2) 消息Id:0x0302
(3) 消息方向:车载ISU设备->车联网网关->业务平台
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(4) 业务逻辑业务平台通过发送提问下发消息,将带有候选答案的提问发到ISUISU即显示,驾驶员选择后ISU向平台发出提问应答消息。业务平台接收到该消息之后,根据自身业务进行处理。
消息体定义
字段名
类型
描述
answerId
Int
答案id
messageSeq
String
应答流水号
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0302", ……此处省略其他属性 }, "messageBody":{ "messageSeq":1, "answerId":20 } }, "createTime":1540915278102, "dataLength":80}
3.22 车辆控制应答0x0500
消息概述
(1) 消息名称:车辆控制应答
(2) 消息Id:0x0500
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑平台通过发送车辆控制消息(8500消息),要求ISU按指定的操作对车辆进行控制。ISU收到后立即回复ISU通用应答消息。之后ISU对车辆进行控制,根据结果再回复车辆控制应答消息。业务平台接收到该消息之后,可根据自身业务进行处理。
消息体定义
字段名
类型
描述
messageSeq
Int
应答流水号
gpsInfo
Object
位置信息,见0200消息字段
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0500", ……此处省略其他属性 }, "messageBody":{ "messageSeq":347, "gpsInfo":{
"0200消息体"
} } }, "createTime":1540915278102, "dataLength":10}
3.23 摄像头图片上传0x0800
消息概述
(1) 消息名称:摄像头图片上传
(2) 消息Id:0x0800
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑ISU发送图片多媒体数据上传消息,上传图片多媒体数据。
消息体定义
字段名
类型
描述
reason
Int
上传原因,该命令如果是查询上传的后续,该字段填充 0; 如果是立即拍摄命令的后续,则填充立即拍 摄命令的命令流水号
imgId
Long
图像id
channelId
int
摄像头ID
filePath
String
图片文件存放路径(网关所在服务器路径)
消息示例
{ "message":{
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"messageHeader":{ "messageId":"0800", ……此处省略其他属性 }, "messageBody":{ "reason":1, "imgId":1, "channelId":1, "filePath":"/usr/local/data/test.gif" } }, ……}
3.24 存储图片检索应答0x0802
消息概述
(1) 消息名称:存储图片检索应答
(2) 消息Id:0x0802
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑业务平台通过发送存储多媒体数据检索消息(8802消息),获得ISU存储多媒体数据的情况,该消息需要ISU回复存储多媒体数据检索应答消。
消息体定义
字段名
类型
描述
itemList
List
数据检索项
messageSeq
int
应答流水号
消息示例
{ "message":{
"messageHeader":{
……
}, "messageBody":{ "messageSeq":95, "itemList":[ 5, 6, 7, 8
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
] } }, ……}
3.25 驾驶员抢答0x0B01
消息概述
(1) 消息名称:驾驶员抢答
(2) 消息Id:0x0B01
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备应答“0x8B01”消息。
消息体定义
字段名
类型
描述
id
long
业务id
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B01"
…… }, "messageBody":{ "id":1 } }, "createTime":1540915278102, "dataLength":80}
3.26 驾驶员电召任务完成确认0x0B07
消息概述
(1) 消息名称:驾驶员电召任务完成确认
(2) 消息Id:0x0B07
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备向平台发送驾驶员电召任务完成确认消息。
消息体定义
字段名
类型
描述
id
long
业务id
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B07"
…… }, "messageBody":{ "id":1 } }, "createTime":1540915278102, "dataLength":80}
3.27 驾驶员取消订单0x0B08
消息概述
(1) 消息名称:驾驶员取消订单
(2) 消息Id:0x0B08
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备向业务平台发送驾驶员取消订单消息。
消息体定义
字段名
类型
描述
id
long
业务id
reason
Int
取消原因
0:事故;
1:路堵;
2:其他
消息示例
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B08"
…… }, "messageBody":{ "id":1, "reason":0 } }, "createTime":1540915278102, "dataLength":80}
3.28 上班签到信息上传0x0B03
消息概述
(1) 消息名称:上班签到信息上传
(2) 消息Id:0x0B03
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备向业务平台发送上班签到信息。
消息体定义
字段名
类型
描述
gpsInfo
Map
位置信息
businessLic
String
企业经营许可证号
qualification
String
驾驶员从业资格证号
plateNo
String
车牌号
time
String
开机时间
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B03",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
……此处省略其他属性 }, "messageBody":{ "businessLic":"企业经营许可证号", "qualification":"驾驶员从业资格证号", "plateNo":"车牌号", "time":"开机时间", "gpsInfo":{ } } }, "createTime":1540915278102, "dataLength":80}
3.29 下班退签信息上传0x0B04
消息概述
(1) 消息名称:下班退签信息上传
(2) 消息Id:0x0B04
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:通过该消息,车载ISU设备与业务平台可扩展当前协议,满足个性化的业务定制需求。
消息体定义
字段名
类型
描述
gpsInfo
Map
位置信息
businessLic
String
企业经营许可证号
qualification
String
驾驶员从业资格证号
plateNo
String
车牌号
k
int
计程计价装置 K值
onTime
String
当班开机时间
offTime
String
当班关机时间
mileage
Double
当班里程
runningMileage
Double
当班营运里程
tripNo
int
车次
startTime
String
计时时间
totalAmount
double
总计金额
totalNoncash
double
非现金收入
noncashNum
int
非现金收费次数
workingMileage
double
班间里程
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
totalMileage
double
总计里程
totalRunningMileage
double
总营运里程
price
double
单价
totalRunningNum
long
总营运次数
type
int
0x00:正常签退
0x01:强制签退
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B04", ……此处省略其他属性 }, "messageBody":{ "businessLic":"企业经营许可证号", "qualification":"驾驶员从业资格证号", "plateNo":"车牌号", "onTime":"当班开机时间", "gpsInfo":{ } } }, "createTime":1540915278102, "dataLength":80}
3.30 运营数据上传0x0B05
消息概述
(1) 消息名称:运营数据上传
(2) 消息Id:0x0B05
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备向业务平台发送运营数据。
消息体定义
字段名
类型
描述
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
optId
Long
营运 ID
feedBackId
Long
评价 ID
feedBackType
Int
0x00: 没 有 做 出 评 价;
0x01: 满 意;
0x02: 一般;
0x03:不满意;
0x04:投诉
orderId
Long
订单ID
workingGpsInfo
Map
空转重时车位置信息
freeGpsInfo
Map
重转空时位置基本信息
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0900", ……此处省略其他属性 }, "messageBody": { "optId":1, "feedBackId":2, "feedBackType":8, "orderId":5, "workingGpsInfo;":{ }, "freeGpsInfo;":{ } } }, "createTime":1540915278102, "dataLength":80}
3.31 外围设备指令上行透传0x0B10
消息概述
(1) 消息名称:外围设备指令上行透传
(2) 消息Id:0x0B10
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:通过该消息,车载ISU设备与业务平台可扩展当前协议,满足个性化的业务定制需求。
消息体定义
字段名
类型
描述
typeId
Int
见协议表 5
dataType
Int
命令类型:见协议表 58
data
String
数据包,十六进制字符串
vendorId
Int
厂商标识
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B10", ……此处省略其他属性 }, "messageBody":{ "typeId":1, "dataType":0, "vendorId":0, "data":"8B100609" } }, "createTime":1540915278102, "dataLength":80}
3.32 设备巡检应答0x0B11
消息概述
(1) 消息名称:设备巡检应答
(2) 消息Id:0x0B11
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备应答业务平台发送的“0x8B11”消息。
消息体定义
字段名
类型
描述
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
dataList
List
应答数据列表
type
Int
设备类型
sn
String
设备序列号
hardwareVersion
String
硬件版本号
softwareVersion
String
软件版本号
state
Long
ISU 设备状态
alarm
Long
ISU 设备状态
signInNum
Int
签到缓存数据条数
signOutNum
Int
签退缓存数据条数
optNum
Int
营运记录缓存条数
tradeNum
Int
一卡通交易缓存条数
消息示例
{ "exchangeId":"36", "messageId":"0000", "gatewayId":"elink-device-gateway", "message":{ "messageHeader":{ "messageId":"0B11" }, "messageBody":{ "dataList":[ { "type":1, "sn":"45678", "hardwareVersion":"100", "softwareVersion":"115", "state":0, "alarm":0, "signInNum":0, "signOutNum":0, "optNum":0, "tradeNum":0 } ] } }, "createTime":1540915278102, "dataLength":80}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.33 音频检索应答0x0805
消息概述
(1) 消息名称:音频检索应答
(2) 消息Id:0x0805
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备应答业务平台下发的8805消息。
消息体定义
字段名
类型
描述
itemList
List
数据检索项
messageSeq
int
应答流水号
消息示例
{ "message":{
"messageHeader":{
……
}, "messageBody":{ "messageSeq":95, "itemList":[ 5, 6, 7, 8 ] } }, ……}
3.34 音视频上传0x0806
消息概述
(1) 消息名称:音视频上传
(2) 消息Id:0x0806
(3) 消息方向:车载ISU设备->车联网网关->业务平台
(4) 业务逻辑:车载ISU设备向业务平台上传音视频文件。
消息体定义
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
字段名
类型
描述
messageSeq
Int
存储图像/音频上传命令流水号
mediaId
Long
音频 ID
dataSize
Long
文件大小
filePath
String
音视频文件存放路径(网关所在服务器路径)
消息示例
{ "message":{
"messageHeader":{ "messageId":"0800", ……此处省略其他属性 }, "messageBody":{ "reason":1, "imgId":1, "channelId":1, "filePath":"/usr/local/data/test.mp4" } }, ……}
3.35 中心通用应答0x8001
消息概述
(1) 消息名称:平台通用应答
(2) 消息Id:0x8001
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑数据通信链路正常时,所有ISU主发的消息均要求平台应答,应答分为通用应答和专门应答,由各具体功能协议决定。
消息体定义
字段名
类型
描述
messageId
String
ISU消息id
messageSeq
int
ISU消息的流水号
result
int
平台处理结果,0:成功/确认1:失败2:消息有误
消息示例
{ "exchangeId":"36",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"messageId":"8000", "message":{ "messageHeader":{ "messageId":"8001", ……此处省略其他属性 }, "messageBody":{ "messageId":"0200", "messageSeq":22, "result":0 } }}
3.36 设置ISU参数0x8103
消息概述
(1) 消息名称:设置ISU参数
(2) 消息Id:0x8103
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:平台通过发送设置ISU参数消息设置ISU参数,ISU回复ISU通用应答消息。平。
消息体定义
字段名
类型
描述
paramList
Object
参数项列表,key/val键值对,key对应参数id,参考协议表中的定义,如0001;val为要设置的ISU参数的值,DWORD,WORD,BYTE类型的参数值要转成十六进制值。
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", ”version”:”2014”, "deviceSn":"100100000001", "messageSeq":159,
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"messageId":"8103" }, "messageBody":{ "paramList":{ "0029":"5" } } }}
3.37 查询ISU参数0x8104
消息概述
(1) 消息名称:查询ISU参数
(2) 消息Id:0x8104
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:平台通过发送查询ISU参数消息查询ISU参数,ISU回复查询ISU参数应答消息(0x0104消息)。
消息体定义
字段名
类型
描述
paramTypes
List<String>
参数id列表,参数id值参考协议的定义,0001
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8104" }, "messageBody":{ "paramTypes":[ "0001", "0002"
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
] } }}
3.38 ISU控制0x8105
消息概述
(1) 消息名称ISU控制
(2) 消息Id:0x8105
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:平台通过发送ISU控制消息对ISU进行控制,ISU回复ISU通用应答消息。
消息体定义
字段名
类型
描述
commandParam
Map<String, Object>
命令参数,值参考协议定义
commandWord
int
命令字,如无线升级:"1"
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8105" }, "messageBody":{ "commandParam":{ "deviceType":1, "hardwareVersion":"11", "softwareVersion":"1001", "apn":"159", "userName":"userName", "password":"password", "ip":"127.0.0.1",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"port":22 }, "commandWord":"4" } }}
3.39 位置信息查询0x8201
消息概述
(1) 消息名称:位置信息查询
(2) 消息Id:0x8201
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑平台通过发送位置信息查询消息,查询指定车载ISU当时位置信息,ISU复位置信息查询应答消息。
消息体定义
字段名
类型
描述
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8201" }, "messageBody":{ } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.40 临时位置跟踪控制0x8202
消息概述
(1) 消息名称:临时位置跟踪控制
(2) 消息Id:0x8202
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:平台通过发送临时位置跟踪控制消息启动/停止位置跟踪,位置跟踪要求ISU停止之前的周期汇报,按消息指定时间间隔进行汇报。ISU回复“0x0202”应答消息。
消息体定义
字段名
类型
描述
expire
Int
持续时间或持续距离,时间单位为秒(s)距离单位为米(m)
interval
Int
时间间隔或距离间隔,时间单位为秒(s)距离单位为米(m)
type
Int
属性
0x00:按时间间隔、持续时间
0x11:按距离间隔、持续距离
0x01:按时间间隔、持续距离
0x10:按距离间隔、持续时间
0xFF:停止当前跟踪
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8202" }, "messageBody":{ "expire":600, "interval":5, "type":0
} }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.41 文本信息下发0x8300
消息概述
(1) 消息名称:文本信息下发
(2) 消息Id:0x8300
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑平台通过发送文本信息下发消息,按指定方式通知驾驶员。ISU回复ISU用应答消息。
消息体定义
字段名
类型
描述
flag
Int
协议对应的位转成十进制数字
text
String
文本信息
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8300" }, "messageBody":{ "flag":1, "text":"测试文本" } }}
3.42 事件设置0x8301
消息概述
(1) 消息名称:事件设置
(2) 消息Id:0x8301
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑事件项由平台预设到ISU,由事件编码和事件名称组成,驾驶员在遇到相应事件时操作ISU,触发事件报告发送到平台。
消息体定义
字段名
类型
描述
eventList
List
事项列表(列表为空则删除所有事件)key/val键值对,key包括事件id:eventId和事件内容:content
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8301" }, "messageBody":{ "eventList":[ { "eventId":1, "content":"测试事件1" } ] } }}
3.43 提问下发0x8302
消息概述
(1) 消息名称:提问下发
(2) 消息Id:0x8302
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑平台通过发送提问下发消息,将带有候选答案的提问发到ISUISU立即显示,驾驶员选择后ISU向平台发出提问应答消息。 提问下发消息,需要ISU回复ISU用应答消息。
消息体定义
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
字段名
类型
描述
flag
Int
标识,协议二进制对应的位转成十进制
question
String
问题
answerList
List
候选答案列表,key/val键值对,包括答案id:answerId,答案内容:answer
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8302" }, "messageBody":{ "flag":1, "question":"是否空车", "answerList":[ { "answerId":1, "answer":"" }, { "answerId":2, "answer":"" } ] } }}
3.44 电话回拨0x8400
消息概述
(1) 消息名称:电话回拨
(2) 消息Id:0x8400
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:车辆遇到紧急状况时,平台通过向车载ISU设备发送该消息实时监听车辆的情况或者与驾驶员进行对话。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息体定义
字段名
类型
描述
type
Int
回拨类型,0:普通通话;1:监听
tel
String
回拨电话号码
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8400" }, "messageBody":{ "type":1, "tel":"13609616322" } }}
3.45 设置电话本0x8401
消息概述
(1) 消息名称:设置电话本
(2) 消息Id:0x8401
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑平台通过发送设置电话本消息,ISU设置电话本,该消息需要ISU回复ISU通用应答消息。
消息体定义
字段名
类型
描述
itemList
List
联系人列表(列表为空则删除所有联系人),key/val值,key包括标志:type,联系人:name,电话号码:tel
消息示例
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8401" }, "messageBody":{ "itemList":[ { "type":1, "name":"张三", "tel":"075551274321" } ] } }}
3.46 车辆控制0x8500
消息概述
(1) 消息名称:车辆控制
(2) 消息Id:0x8500
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑业务平台通过发送车辆控制消息,要求ISU按指定的操作对车辆进行控制。ISU收到后立即“0x0500”应答消息。
消息体定义
字段名
类型
描述
commandType
Int
控制项,参考协议定义
command
Int
控制命令,参考协议定义
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8500" }, "messageBody":{ "commandType":1, "command":0 } }}
3.47 摄像头立即拍摄命令0x8801
消息概述
(1) 消息名称:摄像头立即拍摄命令
(2) 消息Id:0x8801
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑平台通过发送摄像头立即拍摄命令消息,对ISU下发拍摄命令,该消息需ISU回复ISU通用应答消息。若指定实时上传,则ISU拍摄后上传摄像头图像/视频,否则对图像/视频进行存储。
消息体定义
字段名
类型
描述
channelId
Int
通道id
commandType
Int
拍摄命令:
0:表示停止拍摄
1:表示录像;
2:表示拍照
executionTime
Int
拍摄间隔/录像时间
saveFlag
Int
保存标识:
1:保存;
0:实时上传
totalPicture
Int
拍摄张数,拍照时使用(commandType=2
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
resolution
Int
分辨率:
1:320*240;
2:640*480;
3:800*600;
4:1024*768;
5:176*144;[Qcif];
6:352*288;[Cif];
7:704*288;[HALF D1];
8:704*576;[D1];
quality
Int
图像/视频质量,值1-10,1 代表质量损失最小,10 表示压缩比最大
luminance
Int
亮度,值0-255
contrast
int
对比度, 值0-127
saturation
int
饱和度, 值0-127
chromaticity
Int
色度,值0-255
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8801" }, "messageBody":{ "commandType":2, "totalPicture":1, "executionTime":0, "saveFlag":0, "resolution":2, "quality":1, "luminance":127, "contrast":1, "saturation":1, "chromaticity":1, "channelId":1 } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.48 存储图片检索0x8802
消息概述
(1) 消息名称:存储图片检索
(2) 消息Id:0x8802
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑业务平台通过发送存储多媒体数据检索消息(8802消息),获得ISU存储多媒体数据的情况,该消息需要ISU回复存储多媒体数据检索应答消息。 根据检索结果,业务平台可以通过发送存储多媒体数据上传消息,要求ISU上传指定的多媒体数据,该消息需要ISU回复ISU通用应答消息。
消息体定义
字段名
类型
描述
channelId
Int
通道id,0表示检索该媒体类型的所有通道;
reason
Int
事件项编码:
0:进入重车拍照
1:服务评价拍照
2:报警拍照
3:中心主动拍照
startTime
String
起始时间,格式yyyy -mm-dd HH:mm:ss
endTime
String
结束事件,格式yyyy -mm-dd HH:mm:ss
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8802" }, "messageBody":{ "channelId":0, "reason":0, "startTime":"2018-03-22 12:58:16", "endTime":"2018-03-22 12:58:17" } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.49 存储图像/音视频上传上传0x8803
消息概述
(1) 消息名称:存储图像/音视频上传
(2) 消息Id:0x8803
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑业务平台可以通过发送存储多媒体数据上传消息,要求ISU上传指定的多媒体数据。
消息体定义
字段名
类型
描述
type
Int
多媒体类型:
0x00:照片;
0x01:音频;
0x02:视频;
其他:RFU
imgId
Int
文件 ID
offset
Int
本包数据在整个位置图像数据中的偏移量, 第一包数据为 0
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8803" }, "messageBody":{ "type":0, "imgId":1, "offset":0 } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.50 订单任务下发0x8B00
消息概述
(1) 消息名称:订单任务下发
(2) 消息Id:0x8B00
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:平台向车载ISU设备订单任务下发。
消息体定义
字段名
类型
描述
id
long
业务ID
type
Int
业务类型,0:即时召车;1:预约召车;2:车辆指派
time
String
要车时间
remark
String
业务描述,对乘客要车大概地点的描述
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B00" }, "messageBody":{ "id":1, "type":0, "time":"2022-07-10 20:00:00", "remark":"福田区" } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.51 抢答结果下发0x8B01
消息概述
(1) 消息名称:抢答结果下发
(2) 消息Id:0x8B01
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:业务平台接根据业务需要向ISU下发抢答结果。
消息体定义
字段名
类型
描述
id
long
业务ID
type
Int
业务类型,0:即时召车;1:预约召车;2:车辆指派
time
String
要车时间
startLng
Double
乘客位置经度
startLat
Double
乘客位置纬度
endLng
Double
目的地位置经度
endLat
Double
目的地位置纬度
tip
Double
电召服务费 ,xxx.x 元
tel
string
乘客电话号码
remark
String
业务描述,对乘客要车大概地点的描述
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B01" }, "messageBody":{ "id":1, "type":0, "time":"2022-07-10 20:00:00", "startLng":112.885,
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"startLat":11.885, "endLng":112.885, "endLat":11.885, "tip":5, "tel":"13609520000", "remark":"福田区" } }}
3.52 中心取消订单0x8B09
消息概述
(1) 消息名称:中心取消订单
(2) 消息Id:0x8B09
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑当因乘客原因或驾驶员请求取消订单时,中心发送该指令通知驾驶员订单被取消(或取消请求被 处理) ISU 语音提示驾驶员。
消息体定义
字段名
类型
描述
id
long
业务id
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B09" }, "messageBody":{ "id":1 } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
3.53 外围设备指令下行透传0x8B10
消息概述
(1) 消息名称:外围设备指令下行透传
(2) 消息Id:0x8B10
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:业务平台接根据业务需要向ISU发送外围设备指令下行透传。
消息体定义
字段名
类型
描述
typeId
Int
见协议表 5
dataType
Int
命令类型:见协议表 58
data
String
数据包,十六进制字符串
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B10" }, "messageBody":{ "typeId":1, "dataType":0, "data":"8B100609" } }}
3.54 音频检索0x8805
消息概述
(1) 消息名称:音频检索
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
(2) 消息Id:0x8805
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑业务平台通过发送音频数据检索消息(8805消息),获得ISU存储音频数据的情况,该消息需要ISU回复音频检索应答消息。 根据检索结果,业务平台可以通过发送音视频上传消息,要求ISU上传指定的音视频文件,该消息需要ISU回复ISU通用应答消息。
消息体定义
字段名
类型
描述
reason
Int
录音原因:
0:正常录音;
1:乘客投诉;
2:报警录音
startTime
String
起始时间,格式yyyy -mm-dd HH:mm:ss
endTime
String
结束事件,格式yyyy -mm-dd HH:mm:ss
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8805" }, "messageBody":{ "reason":0, "startTime":"2022-03-22 12:58:16", "endTime":"2022-03-22 12:58:17" } }}
3.55 中心确认报警0x8B0A
消息概述
(1) 消息名称:中心确认报警
(2) 消息Id:0x8B0A
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:业务平台向车载ISU设备发送中心确认报警消息。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
消息体定义
字段名
类型
描述
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B0A" }, "messageBody":{ } }}
3.56 中心解除报警0x8B0B
消息概述
(1) 消息名称:中心解除报警
(2) 消息Id:0x8B0B
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:业务平台向车载ISU设备发送中心解除报警消息。
消息体定义
字段名
类型
描述
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014",
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
"deviceSn":"100100000001", "messageSeq":159, "messageId":"8B0B" }, "messageBody":{ } }}
3.57 中心巡检设备0x8B11
消息概述
(1) 消息名称:中心巡检设备
(2) 消息Id:0x8B11
(3) 消息方向:业务平台->车联网网关->车载ISU设备
(4) 业务逻辑:业务平台向车载ISU设备发送中心巡检设备消息。
消息体定义
字段名
类型
描述
typeList
List<Int>
巡检设备类型代码,为空时巡检所有设备。时
消息示例
{ "exchangeId":"2c9299d466679ce60166bf97b06f0012", "messageId":"8000", "message":{ "messageHeader":{ "protocol":"jt905", "protocolVersion":"2014", "deviceSn":"100100000001", "messageSeq":159, "messageId":"8B11" }, "messageBody":{ "typeList":[ 2, 3, 5,
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
6 ] } }}
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
4.二次开发
4.1 二次开发准备
一、了解java基础,熟悉搭建java环境
二、熟悉RabbitMQ/Kafka的使用,包括部署、开发、运维监控等
三、熟悉905协议消息的相关业务流程
4.2 数据交换流程
4.3 消息处理demo
elink-iov-message-processor以责任链方式处理消息,详细逻辑在代码中有注释。代码下载地址:
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
4.4 快速测试程序
为了快速完成测试,业务平台在部署RabbitMQ时,可开启web管理端,通过web管理端发送对应消息到相关队列中,即可与车载终端设备进行通讯,如下图所示:
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
4.5 应用程序部署
4.5.1依赖环境
操作系统:建议使用linux,centOS 7以上版本。
Java环境:建议安装jdk 1.8。
Rabbitmq:建议安装rabbitmq最新版本。
4.5.2应用程序
elink-iov-jt905-2014-message-gateway,为java应用程序,运行在java环境上,依赖rabbitmq
4.5.3配置文件
车联网网关配置文件application.properties,存放目录为应用程序根目录下的conf文件夹该文件夹下所有的文件必须,不能删除)。其中application.properties文件修改rabbitmq配置以下两项配置(红色部分),其他的默认配置即可:
#rabbitmq配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
#rabbitmq登陆用户名
spring.rabbitmq.username=admin
#rabbitmq登陆密码
spring.rabbitmq.password=123456
注意其中配置“elink.*.server.port =6030,为车载终端设备连接网关的tcp端口,注意操作系统配置防火墙开放该端口。
4.5.4程序运行
elink-iov-jt905-2014-message-gateway应用程序复制到安装有java环境的操作系统中即可,应用程序的启动脚本文件放在应用程序根目录下的bin文件夹中。注意启动应用程序前需检查端口是否已被其他应用程序占用(linux下执行命令:netstat -ano|grep 6030)。
windows操作系统
方式一双击 bin/startup.bat执行文件启动应用程序,以该方式启动,命令窗口关闭之后,程序也将停止,不建议以该方式启动。
方式二:以后台服务形式运行,操作步骤
1双击bin/installAppService.bat执行文件把应用程序注册成为win后台服务。注册成功之后,会在win服务列表中有一个名字为“elink-iov-jt905-2014-message-gateway
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
的服务,该服务为开机自动启动;
2、可以在命令窗口中使用命令或者在服务列表中手动启动或者停止。命令方式:
启动程序:net start elink-iov-jt905-2014-message-gateway
停止程序:net stop elink-iov-jt905-2014-message-gateway
3、双击bin/uninstallAppService.bat执行文件,则卸载elink-iov-jt905-2014-message-gateway”已经注册的win后台服务。程序卸载时可双击该执行文件。
linux操作系统
bin/startup.shlinux下启动脚本(需要赋予该文件执行权限:chmod 777 startup.sh)。
启动程序命令:./startup.sh start
停止程序命令:./startup.sh stop
linux命令注解:
console
启动并显示控制台信息
start
作为一个守护进程后台启动
stop
停止程序
restart
重启程序
condrestart
重启已经运行的程序,与前者区别是程序必须已经在运行
status
查看该程序状态
install
将程序安装为自启动服务,即随系统启动而启动
remove
卸载自启动服务
dump
报告运行时的Java thread dump(thread dump百度百科:http://baike.baidu.com/view/5111187.htm)
注意事项:
a启动前需要检查车联网网关所使用的端口是否被占用,linux下命令netstat -ano|grep 6030
b、查看程序是否启动linux命令:ps -aux | grep elink-iov-jt905-2014-message-gateway
c、若需要重启车联网网关应用,在停止程序之后,需要查看程序所监听端口(如:netstat -ano|grep 6030一般等待一两分钟就能完全释放,取决于操作系统的socket timeout配置)否完全释放在重新启动应用,否则程序启动会报错。
4.5.5日志管理
logback-spring.xml为日志配置文件,通过修改该配置文件可以配置输出日志的级别,台默认级别为info”。当平台已经进入稳定运行阶段,接入的车辆数量比较大时,为了减少打印日志对系统的性能影响,建议把日志级别调整为“error”级别。见以下标红部分:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志级别 -->
<property name="log.level" value="INFO"/>
<logger name="com.legaoyi.iov.gateway.mq" level="INFO" additivity="false">
<appender-ref ref="mqAppender" />
<appender-ref ref="errorAppender" />
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
</logger>
<!-- 设备上行消息日志 -->
<logger name="com.legaoyi.iov.protocol.server.LoggerChannelInboudHandler" level="INFO" additivity="false">
<appender-ref ref="inboundAppender" />
<appender-ref ref="errorAppender" />
</logger>
<!-- 设备下行消息日志 -->
<logger name="com.legaoyi.iov.protocol.server.LoggerChannelOutboudHandler" level="INFO" additivity="false">
<appender-ref ref="outboundAppender" />
<appender-ref ref="errorAppender" />
</logger>
<root level="${log.level}">
<appender-ref ref="fileAppender" />
<appender-ref ref="errorAppender" />
<appender-ref ref="consoleAppender" />
</root>
</configuration>
elink-iov-jt905-2014-message-gateway.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志,默认日志级别为“info”。该日志主要存放了中间件程序运行异常日志.
downstream-message.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志,默认日志级别为“warn”。该日志存放了业务平台发送到MQ消息日志。
inbound.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志,默认日志级别为“info”。该日志存放了车载终端设备发送给业务平台的原始消息。
outbound.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志,默认日志级别为“info”。该日志存放了业务平台发送给车载终端设备的原始消息。
online.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志。该日志存放了车载终端设备上下线日志。
乐高易软件 乐高易车联网网关中间件 技术支持:78772895QQ
error.log
日志文件放在应用程序根目录下的logs文件夹中,默认保留最近7天的日志。该日志存放了网关处理消息的错误日志。
4.5.6性能优化
一、linux操作系统网络参数优化
修改/etc/sysctl.conf文件,添加以下参数(修改文件之后远行命令/sbin/sysctl -p使配置生效):
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.nf_conntrack_max=6553600
二、linux修改TCP连接数
centos下使用命令ulimit -n-u可以查看linux的最大进程数和最大文件打开数。
修改/etc/security/limits.conf文件,添加以下配置,保存之后重启操作系统。
root soft nofile 204800
root hard nofile 204800
* soft nofile 204800
* hard nofile 204800