定位设备数据平台,接收并解析定位数据,可支持多种设备协议。 基于 SpringBoot,Netty 框架。
- 可自定义通信协议
- 支持基站定位和 GPS 定位
- 提供 RESTful 接口
Github : location-service
移动定位设备
移动定位设备一般搭载 GPS 和 GPRS 模块,可以采集定位信息并定时发送到指定到数据平台上。 对于每一台入网设备,都具有唯一的 IMEI (国际移动设备识别码),因此使用 IMEI 来识别设备身份。由于 GPRS 网络的特性,移动设备没有固定的 IP 地址,因此连接只能由设备发起,只能使用 TCP 连接。 当平台需要主动向终端发送数据时(例如设置命令)需要等待终端建立连接或者使用长连接。
定位方式
定位方式一般包括卫星定位( GPS 、北斗),基站定位和 Wi-Fi 定位。其中卫星定位精度最高,使用方便(直接返回位置经纬度),但是不能在室内使用,接受不到 GPS 信号时可以切换到基站定位。基站定位只会返回包含 4 个字段的基站 ID ,需要到基站数据库中查找基站位置( LBS ),基站数据库需要向运营商购买,如果按使用次数付费可以用 缓存服务器 来减少调用次数。Wi-Fi 定位的误差较大且不方便获取位置,一般不采用。
性能分析
用于人员的定位设备一般不具备固定电源,只能定时充电,因此设计协议时应当考虑设备的续航问题。对于定位功能来说,接收 GPS 信号的消耗大于采集基站信息。主要性能消耗:GPS 定位 > 使用 GPRS 网络 > 基站定位 > 设备待机。其中使用长连接的消耗远大于定时连接平台发送数据后断开连接。长连接的好处在于可以实时与平台通信,平台不需要等待设备上线建立连接后再向设备发送消息。另一种实时通信的方式是使用短信发送消息,可以作为补充来发生实时性需求强的消息(例如设备关机、实时定位等),需要短信发送平台同时也要考虑费用问题。
通信协议
通信协议定义了数据包的格式,一般由标识位、消息头、消息体、校验和等部分组成。 消息类型主要包括注册信息、心跳包、定位数据、设备状态等。
通信协议设计
示例: Alpha通信协议
数据平台设计
数据平台主要用于接收定位设备发送的位置信息,同时支持多种设备协议。对于不同的协议,定义了一种统一的处理方式,使平台可扩展增加其他设备协议。
MessageProcess术语定义
术语 | 说明 |
---|---|
device | 定位设备 |
telegram | 报文,在 socket 中传输的原始数据 |
message | 消息,报文经过解码后构造出的对象 |
protocol | 协议,由设备厂商定义的通信协议,可以指导报文和消息互相转换 |
data | 数据,写入数据库的位置数据 |
网友评论