序言
在弄过车载终端项目后,涉及到了一个车联网的项目。通过别人的设计文档,整理下车联网相关的知识点。这个是笔记。
车联网
截图自百度百科
车联网的组成
- 主机: 主机主要用于车内的影音娱乐,以及车辆信息显示
- 汽车T-BOX:主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控制。
- 手机APP:当用户通过手机端APP发送控制命令后,TSP后台会发出监控请求指令到车载T-BOX,车辆在获取到控制命令后,通过CAN总线发送控制报文并实现对车辆的控制,最后反馈操作结果到用户的手机APP上,仅这个功能可以帮助用户远程启动车辆、打开空调、调整座椅至合适位置等。
- 后台系统:这里的后台系统其实就可以理解为[email protected]
一些常用的概念
TSP
车载信息系统(telematics) 是指:通过在汽车上安装车载信息设备(car informatics device 简称CID),利用通信网络
为驾驶员和乘客提供多样化的信息服务,主要包括行车导航,路况信息,行车安全预警,免提通话,天气服务,紧急救援,车辆性能检测等。提供以上服务的企业既为车载信息服务供应商(telematics service provider,后简称tsp)(在软件工程当中即为上面所说的 后台系统TSP)
Protocol Buffer
Tbox 需要与TSP连接,数据需要在网络上传输,那数据则需要双方约定一种 序列化的方式。
Protocol Buffer 和 XML、JSON一样都是结构数据序列化的工具,但它们的数据格式有比较大的区别:
- 首先,Protocol Buffer 序列化之后得到的数据不是可读的字符串,而是二进制流
- 其次,XML 和 JSON 格式的数据信息都包含在了序列化之后的数据中,不需要任何其它信息就能还原序列化之后的数据;但使用 Protocol Buffer 需要事先定义数据的格式(.proto 协议文件),还原一个序列化之后的数据需要使用到这个定义好的数据格式(网上很多java的使用方法介绍。首先就是编辑一个proto的数据结构文件,就像是一个java domain 类。后面就是针对该domain类进行 设置属性值和获取属性)
- 最后,在传输数据量较大的需求场景下,Protocol Buffer 比 XML、JSON 更小(3到10倍)、更快(20到100倍)、使用 & 维护更简单;而且 Protocol Buffer 可以跨平台、跨语音使用(车载终端是直接穿的2进制数据,速度和Protocol Buffer是一样的)
通过将结构化的数据(拥有多种属性)进行序列化,从而实现(内存与硬盘之间)数据存储和交换的功能(这个东西的使用除非修改原有的数据结构否则几乎不会改动,就是获取对象类属性和设置对象属性)
- 序列化: 按照
.proto协议文件将数据结构或对象转换成二进制流的过程 - 反序列化:将在序列化过程中所生成的
二进制流转换成数据结构或对象的过程
物联网
物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。(物联网的物物相连会引出 MQTT,因为这不是我们理解的,设备与软件相连了。)
而在物联网的应用上,对于信息传输,MQTT是一种再合适不过的协议工具了。(好引出这个协议了,该协议也是基于tcp/ip的基础上的,这是废话)
MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务(这是特点)。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。(这是应用范围)
MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
- 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。(这不就是JMS么~~~~~这个的实时指令下达能否及时响应呢,现在看只是从带宽,网络的优势上选择了该技术)
- 对负载内容屏蔽的消息传输。
- 使用TCP/IP提供网络连接:主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。
- 有三种消息发布服务质量:“至多一次”,“至少一次”,“只有一次”
- 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
(2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
EMQ(到这也就理解了,为什么用Protocol Buffer作为序列化了,订阅发布的是对象)
EMQ 是一个百万级分布式开源物联网 MQTT 消息服务器(因为物联网使用MQTT的传输协议,相对应的是Netty,网上也说Netty也支持MQTT)
如下的EMQ,api地址:https://docs.emqx.net/broker/v3/cn/index.html
TFS
Telematics Finance System:远程信息金融系统 这个是自定义的名词。
车载娱乐系统IVI(又称HU)怎么叫都行
TSP为IHU主要提供两种基本服务:一种是TSP托管的第三方服务包括天气、新闻、违章查询等;一种是车辆配置服务。