其他分享
首页 > 其他分享> > 共享单车IOT物联网系统是怎么设计的?

共享单车IOT物联网系统是怎么设计的?

作者:互联网

共享单车IOT物联网系统是怎么设计的?

无敌码农 无敌码农
共享单车IOT物联网系统是怎么设计的?

前言


物联网(IOT)的概念很早就有了,只是在共享单车普及之前物联网并不被多数人所熟知,因此听起来很神秘。今天文章的主题就和大家一起聊一聊关于物联网(IOT)相关的话题,并从技术的角度解析下大家每天会使用到的共享单车在系统技术层面的运行原理,希望能够给大家的生活带来点小乐趣。

什么是IOT


对于从事互联网技术相关工作的朋友来说,IOT这个词多多少少应该都听说过,其实IOT这个词的就是英文“Internet Of Things”的简称,即我们所说的物联网。那么什么是物联网?它与我们现在使用的互联网是个什么关系呢?

从概念上来说物联网是指通过信息传感设备、按照约定的协议,将物品与互联网连接起来从而实现信息交换和通信,以实现传统物品设备的智能化。我们现在经常说的智能硬件,实质上就是物联网概念的落地与应用。例如,在实际生活中的很多场景,如通过手机控制空调的开关、电灯的开关以及各种智能跑步机、学习机等等都是IOT的应用场景。

通过上述阐述,也可以看出实际上物联网本质上也是依托互联网的,没有互联网特别是移动互联网3G、4G、WI-FI及未来5G网络的支撑,物联网也是玩不起来的。相对于传统互联网设备电脑、手机而言,由于物联网设备种类繁多,因此硬件部分定制化开发的场景会比较多,当然这一点并不用太担心,在我国的深圳做硬件嵌入式开发的公司非常多,只要你有需求和钱一切都不是问题!

关于硬件部分主要涉及电路板设计及嵌入式软件开发相关的工作,设备通过嵌入式软件逻辑与移动网络连接,例如蓝牙、WI-FI及移动互联网,一部分特殊场景还会通过物联网短信进行连接,如有些共享单车就会通过短信进行指令补偿传输之类,这里就不多说了,大家稍微知道下就行。

IOT协议之MQTT


接下来重点和大家讨论下IOT物联网协议的知识,MQTT是物联网中的一个基础性协议,英文全称是"Message Queue Telemetry Transport",翻译过来也称为遥测传输协议。MQTT是一个基于客户端-服务器端的消息发布/订阅传输协议,这种方式非常适合物联网的场景,在网络信号及稳定性不高的地方也可以有效的实现设备与网络服务的交互通信。

在MQTT协议中有三种身份:发布者(Publish)、代理服务器(Broker)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端、只有消息代理是服务器,消息的发布者也可以同时是消息的订阅者。从这几点看MQTT协议似乎与我们日常系统中使用的消息中间件类似,只是消息的发布及订阅被嵌入到设备的逻辑中了。在MQTT中传输的消息主要分为:主题(topic)和负载(payload)两部分。Topic可以理解为消息的类型,而payload则可以理解为消息的内容。MQTT设备与服务器端的交互示意图如下:
共享单车IOT物联网系统是怎么设计的?
在MQTT协议中,每个设备根据协议都有自己作为消息消费方而订阅的Topic以此来接收服务器端下发的操作指令;与此同时每个设备也会作为消息发布方向服务器端指定订阅的Topic发送消息,以此来实现设备与服务器端的通信交互。

共享单车IOT系统


通过上面的基本描述,相信你对IOT及IOT中设备与服务端交互的MQTT协议已经有了一些认识,那么日常使用的共享单车IOT系统是如何设计的呢?通过一张图来解析,如下:

共享单车IOT物联网系统是怎么设计的?

在共享单车中当你拿起手机扫码二维码进行开锁后,手机端会调用后台服务接口,之后会通过IOT连接服务,向具体的设备以MQTT协议的方式下发开锁消息,锁设备通过SIM卡会保持与物联网消息服务器的连接监听,对自己设备所约定的Topic实现消息订阅,如果收到开锁消息,则会触发自身的嵌入式软件逻辑完成机械马达动作从而实现开锁。

由于基于MQTT协议的开锁指令与设备收到指令完成开锁是一个异步的过程,所以锁设备在执行完开锁指令后会通过约定的上行Topic向IOT服务发送开锁状态上报信息,服务端通过监听制定Topic队列,感知锁的开关状态,从而触发后续的骑行相关的业务逻辑,如创建骑行订单、开始进行骑行计费等等。关锁及其他流程与此类似。

以上就是共享单车通过IOT物联网开关锁的基本逻辑,原理上就是通过消息队列来实现的,而在真实的场景中出于对网络不稳定性的补充,现在主流的共享单车还会以蓝牙及物联网短信作为补充,以提高开锁成功率,因为不是主要涉及IOT的逻辑所以大家理解下就行。

另外关于IOT系统的方案选择问题,现在各大云计算公司都已经提供了IOT云服务,如阿里云、AWS-IOT等,基于现有的IOT服务会减少设备管理及连接资源的负担。而如果想自己搭建物联网服务,也可以通过消息队列进行封装(如使用RocketMQ),只是如果设备量大,还需要考虑连接资源及系统性能问题,除此以外也需要考虑设备管理相关的内容。对于初创公司而言,在资源不是特别丰富的时候,通过成熟的云计算服务实现IOT也是一个不错的选择!

从内容上看,共享单车所采用的技术并没有什么特别之处,技术方案均为目前已经比较成熟的方案,本质上只是物联网技术结合移动支付场景的一个商业模式创新。不过我们也不得不承认,共享单车的出现的确改变了很多人的出行方式,方便了我们的生活!

推荐阅读:
分布式事务之如何基于RocketMQ的事务消息特性实现分布式系统的最终一致性?

—————END—————

标签:IOT,联网,MQTT,共享,单车,设备
来源: https://blog.51cto.com/15057819/2623048