java可应用于各种车辆监管场景和轻松构建车联网平台

java可应用于各种车辆监管场景和轻松构建车联网平台
不仅仅是TCP/UDP网关。基于Spring Boot 2.x技术,将硬件接口的复杂对接转化为简单易用的接口和消息推送方式,具备设备管理、数据分析和消息推送等多种能力,可广泛应用于各种车辆监管场景和应用平台。 bartender作为本网关的接口服务,能够为车辆联网监管和部标标准的实现提供强有力的支持,助力车辆监管的智能化和规范化。#车联网 #网关 #部标 #车辆监管 #车辆管理




系统配置要求[td]

配置项 规格
CPU内存 1w台设备以内2核4G
硬盘 每100台设备1年20G
操作系统 Linux

支持设备类型[td]

设备类型 协议
康凯斯有线/OBD接电设备 康凯斯私有协议
奇果OBD设备 奇果私有协议
零一OBD设备 零一私有协议
车葫芦OBD设备 车葫芦私有协议
车易控行车记录仪 JT808部标协议
合正行车记录仪 合正私有协议
新源润无线设备 新源润私有协议
ADAS设备 JT1078部标协议

支持报警类型[td]

类别 报警项
设备自带报警 电瓶拆除报警、非法拆除报警、震动报警、
风险地点报警、防劫持报警、开盖报警、
位移报警、pseudo base station报警
异常驾驶行为-疲劳/打电话/抽烟
平台判断报警 超速报警、进敏感区域报警、出敏感区域报警、
掉线报警、停车超时报警、分离报警、
出省报警、敏感区域停留报警、未进常用区域超时报警、
原地设防报警、进电力围栏报警、
出电子围栏报警、围栏内报警、围栏内停车超时报警

名词说明[td]

概念 定义
报文 硬件上行数据,例如定位、心跳、报警、OBD等信息。
服务器时间 平台接收报文时间。
定位时间 报文中GPS定位时间,即硬件使用自身GPS模块获得的GPS定位时间。
在线/离线状态 平台收到硬件最后一条报文10分钟后,更新设备状态为离线。上报报文期间为在线。
停车/行驶状态 时速大于5视为行驶,否则停车。离线时设备速度为0。
里程 根据上报定位点,按GPS时间排序,累加定位点间距获得。
停留点 从开始停车到行驶的一段时间视为停留点,停留时长最少10分钟。
轨迹 将历史定位数据按定位时间排序绘制的路线。
轨迹分段 将轨迹分隔为多个行程段。分隔条件默认为,点间距超过10米,定位时间间距超过15分钟。

安装说明

下载 docker-compose.yml 以及 lvn_bootstrap.sh,如果需要自定义可以使用文本编辑器对其中的参数进行自定义,两个文件放置在相同目录。

快捷安装

直接运行lvn_bootstrap.sh,适用于新服务器直接部署运行,会自动安装相关依赖的环境如docker、docker-compose

自定义安装

如已安装对应环境,可跳过该步骤,顺序执行下一个

安装docker

  1. sudo curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun

复制代码

安装docker-compose

  1. sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m) >/usr/local/bin/docker-compose
  2. chmod +x /usr/local/bin/docker-compose

复制代码

添加项目私库地址

  1. echo ‘{ “insecure-registries”: [ “123.234.31.106” ],  “registry-mirrors”: [ “https://docker.mirrors.ustc.edu.cn”, “https://registry.docker-cn.com” ] }’ >>/etc/docker/daemon.json

复制代码

启动docker

  1. systemctl start docker
  2. systemctl enable docker.service

复制代码

定义环境变量

  1. export \
  2.   LVN_DEPLOY_PATH=/user/local/lvn/ \
  3.   LVN_CLIENT_ID=yiqiyongche \
  4.   LVN_CLIENT_SECRET=’$2a$10$FsEwMOG57LvYUzZMehWnperN1nXnWXZLLWM516HFXn7rMPEoS4Da.’ \
  5.   LVN_APP_CODE=03pf80c2bae96vc49b80b917bea776d7123123asfasfas

复制代码

  • LVN_DEPLOY_PATH: 项目日志以及持续化文件保存的地方
  • LVN_CLIENT_ID、LVN_CLIENT_SECRET、LVN_APP_CODE:填写项目授权或试用时分发的KEY、CODE

使用账号密码登录docker私库

  1. docker login -u admin -p Harbor12345 http://123.234.31.106

复制代码

启动

  1. docker-compose up -d

复制代码

定义声明端口定义

  • 9000,网关服务端口
  • 9010,授权服务端口
  • 8012,应用服务端口
  • 7005,告警处理服务端口
  • 12061,部标协议TCP端口
  • 3306,Mysql数据库端口
  • 6379,Mysql数据库端口

环境变量[td]

环境变量 作用 是否必填 示例
LVN_DEPLOY_PATH 部署目录,日志以及持久化文件会存储在此目录 /user/local/lvn/
LVN_CLIENT_ID 终端ID 必填 yiqiyongche
LVN_CLIENT_SECRET 终端秘钥 必填 xxxxxx
LVN_BAIDU_GEO_KEY 百度逆地理编码key 必填 xxxxxxx,xxxxx
LVN_GAODE_WIFI_KEY 高德智能定位解析key 非必填 xxxxxxx,xxxxx
LVN_GAODE_LBS_KEY 高德lbs解析key 非必填 xxxxxxx,xxxxx
** 本项目逆地理编码、基站解析、热点解析调用两大地图商(百度和高德)的api,调用秘钥(key)需按调用量需求申请对应的配额,代码内默认使用了个人版key,不支持生产环境。 https://lbsyun.baidu.com/apiconsole/center#/home https://console.amap.com/dev/key/app

使用说明1. API鉴权

初次使用时我们会提供调用终端的鉴权信息client_id和client_secret,调用鉴权接口可获取凭证access_token,之后便可开始使用其他业务API接口。
 
 
鉴权接口 POST /oauth/token
此接口返回的token_type和access_token使用’ ‘(空格)连接后,在请求header中携带调用业务接口。
请求参数

[td]

名称 位置 类型 必选 说明
grant_type query string 固定参数
client_id query string 客户端ID
client_secret query string 客户端密钥
成功返回示例
  1. {
  2.   “access_token”: “this_is_an_example_access_token”,
  3.   “token_type”: “bearer”,
  4.   “expires_in”: 40528,
  5.   “scope”: “all”,
  6.   “jti”: “483fb3cf-e63b-415d-93bd-bdd4f12a8213”
  7. }

复制代码

返回结果

[td]

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline
返回数据结构

[td]

名称 类型 必选 约束 中文名 说明
» access_token string true none 鉴权token none
» token_type string true none 鉴权类型 none
» expires_in integer true none 多少秒后token过期 none

2. 设备接入与消息接收

系统搭建完成后,若使用第三方硬件,需将硬件配置到对应协议的TCP(UDP)上线端口,若使用我司设备,可联系客服配置。 如图所示,首先添加设备以确保设备上线,若需接收设备实时定位和告警,需开启事件推送。
 
 

设备-添加接口 GET /devices/syn

支持相同型号批量添加,使用默认参数,可绕过鉴权。
请求参数

[td]

名称 位置 类型 必选 说明
clientId query string 客户端ID
categoryNo query string 设备型号,长名称
deviceNums query string 设备号,批量使用逗号间隔
返回结果

[td]

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

设备-批量启停推送接口 GET /devices/batch

若设备导入时没有指定启用状态,则默认启用,不需要批量启用。若导入时指定设备初始状态为停用,则需要使用该接口控制,停用时,不推送定位状态、事件信息。
请求参数

[td]

名称 位置 类型 必选 说明
devices query string 需要启停的设备编号,多个时用逗号间隔
isEnable query string 0:启用 1:停用
返回结果

[td]

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

3. 验证设备上线设备位置-运维查看设备位置状态接口 GET /opt/location

运维使用查询设备最新定位状态,当设备号不存在时提示“设备号不存在”
请求参数

[td]

名称 位置 类型 必选 说明
deviceNum query string none
成功返回示例
  1. {
  2.   “code”: 200,
  3.   “data”: {
  4.     “categoryNo”: “DO90”,
  5.     “categoryNoShort”: “DO90”,
  6.     “createTime”: “2022-07-27 05:12:00”,
  7.     “deviceNum”: “868120250375836”,
  8.     “direction”: 28,
  9.     “directionName”: “东北”,
  10.     “gpsTime”: “2022-07-26 16:14:49”,
  11.     “isMoving”: 0,
  12.     “latBd”: 29.116056,
  13.     “latGc”: 29.109734,
  14.     “lngBd”: 119.654767,
  15.     “lngGc”: 119.648356,
  16.     “locMode”: 9,
  17.     “satCount”: 15,
  18.     “speed”: 0,
  19.     “startTimeMovingStop”: “2022-06-23 07:45:53”,
  20.     “startTimeOnOffLine”: “2022-07-27 05:12:00”,
  21.     “wifiFlag”: 1
  22.   },
  23.   “message”: “”,
  24.   “success”: true
  25. }

复制代码

返回结果

[td]

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline
返回数据结构

[td]

名称 类型 必选 约束 中文名 说明
» code integer true none none
» data object true none none
»» categoryNo string true none 设备类型 none
»» categoryNoShort string true none 设备类型短名 none
»» createTime string true none 创建时间 none
»» deviceNum string true none 设备号 none
»» direction integer true none 方向 none
»» directionName string true none 方向描述 none
»» gpsTime string true none 定位时间 none
»» isMoving integer true none 行驶中状态 行驶:1;停车:0 none
»» latBd number true none 百度坐标纬度 none
»» latGc number true none 高德坐标纬度 none
»» lngBd number true none 百度坐标经度 none
»» lngGc number true none 高德坐标经度 none
»» locMode integer true none 定位方式 0-GPS;1-LBS单基站;2-LBS多基站;5-WIFI;9-不定位 none
»» satCount integer true none 卫星数 卫星个数 none
»» speed integer true none 速度 none
»» startTimeMovingStop string true none 行驶/停车 + 起始时刻 年月日 时分秒 none
»» startTimeOnOffLine string true none 在线/离线起始时刻 年月日 时分秒 none
»» wifiFlag integer true none 设备类型 1:有线 none
» message string true none none
» success boolean true none none

4. 多媒体库

设备上报照片、视频存储到本地/media/下,可配置nginx便于通过url访问
nginx配置示例
  1. server {
  2.         listen       7001;
  3.         location /media/lib {
  4.                 alias  /media;
  5.                 autoindex on;
  6.         }
  7. }

复制代码

常见问题设备在线总数和各端口在线数

可根据各端口实时在线数量粗略判断端口健康状态,当某端口车辆较少或当前时间大部分车辆在停车状态,则不足以判断端口健康情况。可参考以下SQL query查询在线数量。
  1. SELECT COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS ‘在线总数’
  2. FROM dd_new.position p;
  3. SELECT p.TAG as ‘端口’,
  4. COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS ‘在线数’,
  5. COUNT(*) AS ‘累计上线数量’,
  6. MAX(p.CREATE_TIME) AS ‘最新服务时间’,
  7. NOW() AS ‘当前时间’,
  8. IF(TIMESTAMPDIFF(SECOND,MAX(p.CREATE_TIME),NOW()) <= SECOND(3), ‘正常’,
  9. IF(COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) < 100, ‘设备较少’, ‘异常’)) AS ‘端口健康’ — 该阈值需根据活跃车辆数进行调整
  10. FROM dd_new.position p
  11. GROUP BY p.TAG
  12. ORDER BY MAX(p.CREATE_TIME);

复制代码

设备不上线问题
定位更新回调接收不到该设备数据,或超过30分钟没有新数据。
 
运维建议:
 
确认设备是否已通电,车辆正常行驶。
与网络运营商确认物联网卡为可用状态。
避免将车辆置于地下停车场等信号差的位置,参看设备说明书,根据指示灯判断,确认网络信号良好,GPS信号良好。
设备定位不准问题
车辆于地图定位与实际位置有偏差。
运维建议:
确认车辆正常行驶,否则可能导致设备断电。
确认定位更新回调接收该设备数据正常,若无更新,怀疑存在设备不上线问题。
若回调数据中定位标识AV=V,说明设备搜索不到卫星信号,GPS定位失败,建议开车移动到信号较好的位置。
下载说明:
1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2.如果源码下载地址失效请联系站长QQ进行补发。
3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,由于源码具有复制性,一经售出,概不退换。用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【安安资源网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5.请您认真阅读上述内容,购买即以为着您同意上述内容,由于源码具有复制性,一经售出,概不退换。
安安资源网 » java可应用于各种车辆监管场景和轻松构建车联网平台