摩拜单车的智能锁,背后其实是面向物联网的云技术
2016年尾到2017年初,最火的互联网关键词就是“共享单车”,ofo、摩拜、小鸣、小蓝不仅占领了街道,也占领了手机屏幕,相信有关部门的监管规定会陆续出台。随着风险资本不断的参与和退出,共享单车市场不久也将会像网约车市场一样大面积洗牌。
共享单车的竞争如火如荼,感觉颜色已经不够用了
共享单车市占率最高的目前应该是ofo和摩拜,两家企业走的路线不同。ofo的单车成本低,且与支付宝有合作,用户可以免押金;摩拜2017年推出了小程序,据说新增用户数主要来自于微信小程序用户,用起来方便。两家在产品细节上有很多不同,商业模式上的差异也可能越走越远了。
今天不说两家如何获取用户,以及商业模式的问题,只说一下共享单车都有的锁。ofo早期采用的是机械锁,据说小学生都可以破解,不在我们的讨论范围之内,我们重点说的是摩拜单车用的智能锁。
如何开锁是共享单车要解决的核心技术问题
共享单车开锁流程
下图是网上流传的摩拜单车的开锁流程。这个图应该是摩拜单车早期的开锁流程,早期的摩拜单车主要依赖GPRS与服务器通信,实现开锁,但在GPRS信号不好的时候,用户就没法开锁了。所以后来的摩拜单车又加上了蓝牙,这样手机开启蓝牙以后,可以直接与智能锁建立蓝牙连接,实现开锁。
网上流传的摩拜单车开锁原理
早期摩拜单车开锁流程:
用户扫描二维码;
向云端请求解锁;
云端下达解锁指令给单车;
单车解锁以后,上报状态更新到云端,并不断上报定位信息;
云端向用户发送计费信息。
在开锁的过程中,关键是要保证所有的共享单车与云端服务器的实时通信,否则用户请求解锁就不能马上执行,这就要求所有的共享单车在云端是一直可见的。这也是一般物联网应用比较普遍的需求。
摩拜单车的云技术
在开发IM应用时,如果我们要保持客户端一直在线,就需要在客户端与服务器之间保持一个长连接,这样服务器就一直可以找得到我们的客户端。
共享单车的原理与之类似,所有单车也需要与服务器之间保持一个长连接,面向物联网的MQTT协议就可以满足这个需求。
MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。
MQTT协议尤其适合共享单车这种应用场景。当然我们也不用自己去实现这个协议,很多云平台都提供了对MQTT协议的支持,或者在MQTT协议基础上提供了封装程度更高的API。
摩拜单车的云技术
摩拜单车在物联网节点的管理上,就使用了云计算技术,摩拜选择了微软的Azure IoT平台。Azure IoT平台为每一个真实的物联网设备,都提供了与之匹配的虚拟对象(Device Twin),它的属性和状态与真实设备实时同步。
摩拜单车的实现基于微软的Azure IoT方案
摩拜单车的后端程序只需要修改Azure IoT中的Device Twin的状态,就可以影响到真实的设备,比如向单车发送解锁指令,完成开锁。Azure IoT平台中,低功耗物联网设备主要采用MQTT协议与云端通信。
云计算与物联网的结合愈加紧密,在许许多多的物联网应用中我们都可以看到云计算的身影。