bartender

轻车车联网网关
授权协议 GPL-2.0
开发语言 Java
所属分类 其他开源、 开源汽车/车载系统
软件类型 开源软件
地区 国产
投 递 者 于飞飙
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

轻车车联网网关 bartender

不仅仅是TCP/UDP网关。基于Spring Boot 2.x技术,将硬件接口的复杂对接转化为简单易用的接口和消息推送方式,具备设备管理、数据分析和消息推送等多种能力,可广泛应用于各种车辆监管场景和应用平台。

bartender作为本网关的接口服务,能够为车辆联网监管和部标标准的实现提供强有力的支持,助力车辆监管的智能化和规范化。

bartender接口说明文档

文档

软件架构

轻车车联网网关架构

产品线路图

轻车车辆网网关线路图

系统配置要求

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

支持设备类型

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

支持报警类型

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

名词说明

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

使用说明

1. API鉴权

初次使用时我们会提供调用终端的鉴权信息client_idclient_secret,调用鉴权接口可获取凭证access_token,之后便可开始使用其他业务API接口。 

鉴权接口 POST /oauth/token

此接口返回的token_type和access_token使用' '(空格)连接后,在请求header中携带调用业务接口。

请求参数

名称 位置 类型 必选 说明
grant_type query string 固定参数
client_id query string 客户端ID
client_secret query string 客户端密钥

成功返回示例

{
  "access_token": "this_is_an_example_access_token",
  "token_type": "bearer",
  "expires_in": 40528,
  "scope": "all",
  "jti": "483fb3cf-e63b-415d-93bd-bdd4f12a8213"
}

返回结果

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

返回数据结构

名称 类型 必选 约束 中文名 说明
» 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

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

请求参数

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

返回结果

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

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

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

请求参数

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

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline
  1. 验证设备上线

设备位置-运维查看设备位置状态接口 GET /opt/location

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

请求参数

名称 位置 类型 必选 说明
deviceNum query string none

成功返回示例

{
  "code": 200,
  "data": {
    "categoryNo": "DO90",
    "categoryNoShort": "DO90",
    "createTime": "2022-07-27 05:12:00",
    "deviceNum": "868120250375836",
    "direction": 28,
    "directionName": "东北",
    "gpsTime": "2022-07-26 16:14:49",
    "isMoving": 0,
    "latBd": 29.116056,
    "latGc": 29.109734,
    "lngBd": 119.654767,
    "lngGc": 119.648356,
    "locMode": 9,
    "satCount": 15,
    "speed": 0,
    "startTimeMovingStop": "2022-06-23 07:45:53",
    "startTimeOnOffLine": "2022-07-27 05:12:00",
    "wifiFlag": 1
  },
  "message": "",
  "success": true
}

返回结果

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

返回数据结构

名称 类型 必选 约束 中文名 说明
» 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

常见问题

设备在线总数和各端口在线数

可根据各端口实时在线数量粗略判断端口健康状态,当某端口车辆较少或当前时间大部分车辆在停车状态,则不足以判断端口健康情况。可参考以下SQL query查询在线数量。


SELECT COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS '在线总数' 
FROM dd_new.position p;

SELECT p.TAG as '端口',
COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) AS '在线数',
COUNT(*) AS '累计上线数量',
MAX(p.CREATE_TIME) AS '最新服务时间',
NOW() AS '当前时间',
IF(TIMESTAMPDIFF(SECOND,MAX(p.CREATE_TIME),NOW()) <= SECOND(3), '正常', 
IF(COUNT(p.ALM_OFFLINE = 0 AND (p.ISSLEEPING=0 OR p.ISSLEEPING IS NULL) OR NULL) < 100, '设备较少', '异常')) AS '端口健康' -- 该阈值需根据活跃车辆数进行调整
FROM dd_new.position p
GROUP BY p.TAG
ORDER BY MAX(p.CREATE_TIME);

设备不上线问题

定位更新回调接收不到该设备数据,或超过30分钟没有新数据。

运维建议:

  1. 确认设备是否已通电,车辆正常行驶。
  2. 与网络运营商确认物联网卡为可用状态。
  3. 避免将车辆置于地下停车场等信号差的位置,参看设备说明书,根据指示灯判断,确认网络信号良好,GPS信号良好。

设备定位不准问题

车辆于地图定位与实际位置有偏差。

运维建议:

  1. 确认车辆正常行驶,否则可能导致设备断电。
  2. 确认定位更新回调接收该设备数据正常,若无更新,怀疑存在设备不上线问题。
  3. 若回调数据中定位标识AV=V,说明设备搜索不到卫星信号,GPS定位失败,建议开车移动到信号较好的位置。
  • c# Bartender打印开发详解 Ericw_wang 于 2020-06-26 20:56:25 发布 2482  收藏 5 分类专栏: Bartender 文章标签: c# 版权 Bartender 专栏收录该内容 2 篇文章0 订阅 订阅专栏 Bartender 打印开发遇到的坑 打印的写法,目前知道两种实现 1.引用 插入Bartender 自带dll,写法如下: (一般在安装SDK里

  • 图层是占据特定平面的对象或对象组。图层编辑器中经常使用图层来创建包含重叠对象的合成图像。在BarTender中,图层可以包含要包含在同一平面上的一个或多个文本对象,图像,条形码,形状和/或线条。即使两层上的物体不直接重叠,每层也会占据不同的平面。 >>下载最新版BarTender<< 使用图层工具箱 在BarTender中,图层主要通过“工具箱”的“图层”窗格进行管理。此窗格用于创建,编辑和维护图

  • The BarTender engine could not be started cd ...bartender路径 bartend.exe /register 打印注意事项 打印份数字段给定

 相关资料
  • 物联网时代的智能交通,全面涵盖了信息采集,动态诱导,智能管控等环节,交通模式会更加安全,节能和高效率。 我们能够提供: 更加耐高温和腐蚀的SIM卡片,适应各种复杂外部环境; 区分用户使用的不同场景和应用,分别进行控制和计费; 提供高速,覆盖范围广,稳定,安全的4G网络; 支持4G VoLTE语音技术。

  • 1.自我介绍 2.手撕,最长回文子串 3.问做的时间最久的项目 4.项目难点,如何解决 5.c/c++八股(static,死锁) 6.反问技术栈 面试官说蔚来看中的是应届生的潜力,,,, 总体体验还行,面试官也挺随和的,看着比较年轻。就是手撕的时候用c++不会写,最后用python完成的。

  • #面经#6个左右的面试官,没有一个开摄像头。先宣读个人承诺书,然后自我介绍,然后个人情况提问,然后专业技术提问。 个人情况提问:父母是否支持来长春发展,是否有另一半,成绩情况,是否有挂科,面过其他什么公司,目前拿到了什么公司的offer。 专业提问就问了下简历上的项目。面试时长5-10分钟。

  • 1. TCP和UDP的区别 2. 计算机网络的七层协议 3. 针对微信的测试用例 4. python常用函数 5. 你用过哪些python的包? 6. 用过哪些测试工具 7. 测试工作最重要的是啥工作? 8. python的字典怎么转成json? 9. 你的研究方向是啥? 总体时长不到20分钟,一道代码都没问,感觉肯定是kpi。#面经#

  • 这个程序用是开心网争车位的外挂,完全模拟IE操作。 主程序下载 Downlod SVN source svn checkout http://kaixinparking.googlecode.com/svn/trunk/ kaixinparking-read-only 运行该程序前,需要名字为match.yaml的配置文件,文件内容说明如下: --- 以下是match.yaml文件---- log

  • 再次更新,二面挂了😅我感觉双方还聊得挺好,嵌入式也不是后端吧。 —————————— 没想到给了二面,更新在下面了。 —————————— 华五本硕。leet才刷了80题,很菜。 ————718一面———— 上来就做题,一题给20分钟。 1 第一题leet88,easy。 两个有序数组合并,数组1预留了数组2的空间。 acm模式,输入写好了才跟我说不用写输入输出,直接写class solutio

  • 今早十一点面的滴滴,是我的第一次面试。其实我觉得我这水平,我挺惊讶竟然能够让我去面试的,估计是hr在冲业绩了。(笑的)还有就是确实问的比较简单,面试小哥也很温柔,但是我也是真的菜QAQ因为没有录音,所以我也记得不是很清楚了。 一、非技术环节 开场自我介绍,开始疯狂输出自己的技术栈,项目亮点,其中涉及自己使用什么技术解决了什么问题,从之前一小个月的寒假实习里面学到了什么东西。 面试官提问:1.怎样学

  • 9.1一面 一、实习 & 项目 Q:KM算法中的权重?动态变化? A:str / 接驾时长 Q:自注意力机制? 二、概率题 Q:30次都不点击的概率是0.936,问10次中至少点击一次的概率? A:1-(1-0.936)^(1/3) 三、算法题 不含重复字符的最小子串长度 9.14二面 一、问项目:实习相关 约40min Q:如何评估仿真系统的准确性? A:校准 二、深度相关问题 Q:平台补贴场景