体验共享单车后对于Locman技术实现的几点思考

体验共享单车后对于Locman技术实现的几点思考html

原创 2017-02-28安全

关键点:服务器

  • 共享单车体验
  • 摩拜单车技术实现的思考
  • ofo单车技术实现的思考
  • Locman现阶段技术实现分析
  • 对于Locman后期实现的一点小思考

   自2015年Uber、Airbnb火热起来以后给O2O创业带了一个新的名词 共享经济(所谓的共享经济模式就是经过一个平台化的互联网工具,把社会上具备相同属性的闲散资源整合到一块儿,以更加高效的方式知足市场的供给),在国内就出现了一大批如滴滴、易到用车、神州专车等基于共享模式号称解决人们打车难的平台出现,统治了打车这个行业,但在人们“最后一千米”出行方面仍是面临了难题。世界就是这么奇妙,哪里有需求哪里就会有解决方案,在2016年中相继出现了摩拜单车、ofo单车、小蓝单车等方便出行的“原始交通工具”,在一开始出来以后,做为屌丝的我为了避免给 29九、99 元的押金,并无想过会使用它们,然而一次出行让我不得不使用上它,后来居然喜欢上了。下面就来讲说我使用到的共享单车以及体验感觉:网络

摩拜单车

   第一次使用上宣称 触手可骑 的摩拜单车是在2017年2月6日,因为出行须要开通并使用了摩拜单车。模块化

  • 找车:摩拜App感受是比较轻量级的实现,仅包含了我地图找车、开锁、投诉等几个主要功能模块,找车直观简洁,在此次骑行选择上我用了mobike lite,经过地图上显示的车位置,很快找到了。
  • 用车扫码->开锁->go 短短几秒钟就完成了开锁功能,这体验感受比较方便快捷,知足了人们习惯上使用的扫码功能,也增长了蓝牙开锁功能。
  • 骑行:摩拜单车第一代骑行很笨重,这有可能与其使用了实心胎、单臂前轴、大功率电机有关。相较于传统自行车体验非常很差,在第二代上摩拜单车作出了改进,使用了与传统自行车基本同样的设计,在重量上来讲已经减轻不少,可是相较于ofo单车仍是比较笨重。
  • 结束行程:摩拜在还车计费上作到了也比较智能, 只须要将锁开关关闭便可完成还车计费,比较方便,不须要用户手动操做App结束计费。

ofo单车

   第一次使用ofo单车是在2017年2月10日,骑行了摩拜单车后感受坐垫不能调节,骑行比较费力,当时也没有在周边找到摩拜单车,就开通了宣称 随时随地有车骑(ANYTIME ANYWHERE) 骑行体验比较好的ofo单车。工具

  • 找车:下载ofo单车App后,说实话在找车方面相较于摩拜作的实在太不智能,从App上只能了解到周边有多少辆车,并无一个很直观的标注告知车的位置,给找车上带了了必定的困难,可是ofo单车的数量也还多,也可以比较快速的找到车。
  • 用车:与摩拜相似,在App上有一个扫码开锁的功能,可是还提供了一个用户直接输入车牌号开锁的入口(这对于骑行者手机摄像头不行或者二维码损坏是一个比较好的解决策略)。因为ofo使用的是机械锁,因此在开锁方面并无给我带来所谓科技感,开锁也不是很方便,须要用户手动调节密码,按下弹簧开关才可以开锁。
  • 骑行:骑行体验上感受与传统自行车相差无几,可是感受更加轻便,更没必要提与摩拜笨重的车体,加上可充气轮胎与可调节高度的坐垫使骑行更加温馨,这也是我一直比较喜欢使用小黄车的缘由。
  • 结束行程:在还车体验上也是并无互联网带来的便捷感,须要用户手动关闭锁以后,打乱密码,在还车以后还需手动在App上点击结束行程才能中止计费。这里也存在一个比较大的漏洞就是用户能够先结束行程或者记住该辆车的密码长期使用,这也是ofo单车在小区单元楼下、地下车库常常见到的缘由。

   以上就是我在使用了共享单车的一些直观感觉,可是做为一个Coder我比较关注的是摩拜单车整个用车流程的体验,如下就是我参考网络大牛,以及本身的一些感觉揣测的摩拜单车开锁、关锁的技术实现(由于与如今的工做遇到的问题以及解决办法类似),若是有不合理的地方欢迎指正,联系个人邮箱组件化

摩拜单车的开锁、关锁技术实现思考

   做为一个Coder,在现阶段项目中遇到不少问题,发现与摩拜单车实现技术相似,可是未作到与摩拜单车同样的体验。在体验了摩拜单车以及参考了各位网络大神对于摩拜单车通讯的讲解,也有一点本身的体会,现只对摩拜通讯记录以下(关于硬件方面如何设计及工做此处省略1000......字):优化

摩拜单车通讯示意图

摩拜整个通讯中,有三个比较关键节点url

  • [x] 自行车:最重要的设备
  • [x] 手机终端:也能够叫作咱们的一个用户
  • [x] 服务器:处理相关信息

   上述图示,能够看出,这三者之间存在两两相互通讯:单车与手机终端、手机终端与服务器、单车与服务器,再这三者之间相互通讯,技术最为难实现也最重要的一环是单车与服务器之间的通讯。设计

  • 单车与服务器通讯
       从网络各位大神分享的技术博客综合(由于硬件方面不是太懂,网上有大神对摩拜的车锁进行了一个拆解),单车与服务器之间的通讯方式存在两种方式:一种是使用SIM卡经过短信方式向单车发送开锁/关锁命令,这种是不须要TCP/IP创建一个长链接的,这种方式存在一个弊端就是发送短信的寻址须要一个比较长的时间,因此在摩拜单车的第一代部分单车开锁就存在一个延迟较大、不稳定的一个状况;第二种就是经过TCP/IP建立长链接,在这里猜测使用长链接的方式主要是用在单车像服务器发送定位信息使用,毕竟摩拜是在其单车中提供了发电装置,并且在我使用单车的过程当中关闭了手机终端的网络,一样是在结束行程以后查看个人行程轨迹。

  • 单车与手机终端通讯
       在第一阶段,摩拜采用的是手机扫描二维码的方式读取单车信息,这是一个手机主动读取数据的过程,在此过程当中应该是不存在手机与单车的通讯机制的;摩拜后期新增了蓝牙开锁(也是摩拜比较推崇的一个开锁方式),毕竟低功耗蓝牙4.0在技术上已经很成熟,价格低廉,特别是耗电量低等诸多有点。本人猜想可能出于省电考虑,使用蓝牙以后单车无需实时在线(全部命令能够经过手机端连接服务器,接收并取得命令激活单车 这里只是一种猜想,可是具备可行性),在蓝牙开启的状况下摩拜App会主动尝试链接单车蓝牙,连接成功后经过蓝牙指令读取单车信息,而后经过App的网络传输指定单车信息至服务器请求开锁。在此过程后,摩拜能够经过两种方式向单车发送开锁指令:第一种是与扫描二维码方式同样,经过服务器端直接发送开锁指令到单车;另外一种是将开锁指令下发给手机端,而后手机端经过蓝牙发送指令开锁并将单车从睡眠状态激活(我以为应该是采用的此种方式,否则摩拜也没有必要再作一个蓝牙开锁)。

  • 手机终端与服务器端通讯
       在这里就比较简单了,与咱们常见App服务器交换数据相似。在行程开始前App获取单车信息直接上传服务器请求开锁,服务器下发开锁指令(无论是二维码方式下发到单车,仍是蓝牙方式下发至App而后经过App发送开锁指令),获得单车锁已开回执后开始计费;行程结束后,服务器收到了单车的关锁信息,结束计费并向手机下发结束计费指令。

摩拜整个通讯流程

  • 二维码方式开锁猜测

    二维码开锁方式

  • 蓝牙开锁方式猜测
       关于摩拜单车蓝牙开锁,在这里我的以为有两种方式:一种是与二维码相同直接向服务器请求开锁指令后,经过服务器发送指令到单车开锁;另外一种是请求成功后指令直接发送到用户手机端,此时在经过手机与单车的蓝牙发送指令开锁,我的比较倾向于第二种(否则摩拜在后阶段也不会大力推行蓝牙开锁方式,有可能还存在更多好处,暂时未分析出来),此种方式能够减小服务器与单车连接的不肯定性,增长开锁成功概率,同时经过蓝牙开启成功后,单车的锁已开状态信息能够又经过手机直接上传至服务器并同时开启计费。 蓝牙开锁-方式1

    蓝牙开锁-方式2

ofo单车开锁、关锁技术实现

   相较于摩拜单车,ofo在实现开锁、关锁功能上,并无用到任何复杂的技术,虽然也存在单车、手机终端、服务器这三个关键节点。从下图图示能够看出,ofo单车也存在单车与手机终端、手机终端与服务器之间通讯,只比摩拜少了一个单车与服务器端的通讯。在ofo中单车与手机终端通讯也能够弱化,虽然存在扫码开锁,其实单车与手机终端是没有任何实质通讯。 ofo单车通讯模型

  • 手机终端与服务器之间的通讯
       ofo在与服务通讯过程当中,其实主要也只有三个比较重要的请求:一个是向服务器请求开锁密码,请求成功后一段时间开始计费,与摩拜单车请求成功后单车回执锁已开命令存在实质性差异;一个是请求关锁而后结束行程;另外一个就是向服务器上传已经记录的GPS定位轨迹数据(这里也是ofo在开始骑行前为何须要开启GPS定位功能)。这与其余全部手机终端与服务器Request-Response并没有差别,在技术上也很简单。

现阶段Locman技术实现分析

   先后已经开发过两个版本的Locman软件(存在N多个定制版本,应该在后续考虑引入模块化组件化开发):一个是Locman2.0,另外一个是现阶段的哑资源管理平台;对于这两个版本不做软件硬件实现以及工做流程不作任何评价,这里我只是谈一谈我在作了这两个版本以后的整个开锁关锁流程 (仅表明我的理解)。
   现阶段Locman与摩拜单车实现流程很是相似也是存在三个很是重要的节点+人工操做:

  • [x] 硬件设备:人井,光交等(自研硬件)
  • [x] 手机终端:移动管理软件
  • [x] 服务器:C/S、平台系统

Locman通讯模型

   从上图能够看出,Locman平台开锁、关锁通讯方式与摩拜基本是一致的,也是存在:硬件设备与服务器、硬件设备与手机终端、手机终端与服务器之间的两两通讯,可是在实现上存在许多不一样(与业务场景相关),比较重要的一点是咱们的硬件设备必须手动激活,加入了应急开锁功能。

  • 硬件设备与服务器通讯
       当硬件设备手动激活后,在手机终端发送远程开启请求指令,服务器会经过两种方式:一种是SIM卡发送短信远程开锁指令;另外一种是经过GPRS发送。同理设备上报状态信息也采用以上两种方式。

  • 硬件设备与手机终端通讯
       这种通讯现阶段仅存在于光交设备。当设备人工激活后,经过手机App链接设备,链接成功以后读取设备信息并请求开锁指令,经过蓝牙向设备发送开锁指令开锁。

  • 手机终端与服务器通讯
       手机终端与服务器通讯方式比较简单:一个是服务器经过推送方式提示手机用户告警信息;另外一个是当设备手动激活后,须要经过工单中已知的设备信息(这里手机终端并未与设备通讯)向服务器请求远程开启指令。服务器并无向手机终端返回确实已开启设备的信息(由于是现场做业,并且无需其余附加操做:例如摩拜单车的计费功能,能够经过设备锁人工断定)。

Locman开锁流程

蓝牙开锁方式

远程开锁方式

为何现阶段咱们开锁存在人工操做

  • 省电
  • 省电
  • 省电

   这里与摩拜存在很大的区别,因为咱们的设备是须要长时间保持电量(无充电来源),因此咱们的设备并无经过TCP/IP与服务器端保持长链接,而且设备在使用后会自动进入关机状态,若是在无人工参与时设备只会固定一个周期上报状态信息。

对体验共享单车后Locman后期的一点思考

   如下问题只是我的的一些思考,如存在不合理或者不全面欢迎指正,请联系个人公司邮箱,谢谢!

  • Locman能够不使用激活钥匙激活设备吗?
       如今蓝牙4.0技术发展已经很成熟,相较于之前老的蓝牙2.0在功耗上大大下降,从如今使用的蓝牙鼠标来看,两节5号电池雷柏蓝牙鼠标可使用大约3个半个月(亲身体验),若是是4节1号电池应该使用周期会更长(这个有待技术后期验证)。以上的说法在技术上来讲至关不严谨,这里我从网上找到了关于蓝牙4.0相关功耗文章:
    蓝牙4.0低功耗技术及其认证要求,提到可使一枚纽扣电池工做长达数年;
    nRF8001纽扣电池续航的超低功耗蓝牙4.0技术,讯通科技电子技术公司;
    更多关于蓝牙4.0功耗问题,请进入百度文库 搜索 蓝牙4.0功耗

       经过上述了解后,若是咱们设备使用蓝牙能够直接保持蓝牙在线,而且能够被搜索到(至于如何与咱们本身的App安全配对问题,须要硬件与软件共同解决),当施工人员靠近设备便可直接链接上蓝牙,此时有两种方式开锁以及上报设备状态信息:

    • App经过蓝牙近距发送激活命令,设备接收到激活命令以后按照之前手动插入激活钥匙相同,激活设备;等待设备激活后,发送远程控制开锁命令开锁,并上报状态信息。相较于以前只是去除了人工手动激活,也并无解决掉开锁延时、开锁成功率不高的问题;
    • App经过蓝牙近距离发送激活命令获取到设备信息,经过App网络请求服务器远程控制权限命令后经过蓝牙直接开锁,而且能够同App直接上报设备状态。快速方便、开锁成功率高。
  • Locman可使用二维码扫描开锁吗?

   在现阶段设备开锁状况只须要读取到咱们的设备信息而且具备开锁权限的用户均可以开锁。权限已由服务器自动判断,如今主要的就是设备信息问题,咱们能够经过在设备上加入具备设备信息的二维码标签便可。后续的开锁流程:一种是就可直接参照现阶段远程开锁流程操做;另外一种是结合上一个问题已讨论的蓝牙进行开锁。

  • Locman能够增长离线开锁功能吗?

   关于Locman离线开锁功能,在完成2.0版本以后就有了这个想法。在外施工的工做人员会遇到网络信号很差,这种状况应该是比较常见的,这不只仅是只包含咱们手机终端设备信号,也包括咱们硬件设备在不少时候请求了远程开锁并不可以成功的开启。
   在现阶段实现流程中加入离线开锁功能是不现实的,首先咱们设备是须要手动激活,而后经过服务器发送开锁命令才可以完成开锁流程。可是若是结合上述 Locman能够不使用激活钥匙激活设备吗? 可以新增蓝牙开锁。大体流程以下:
   施工人员在处于有网络状态下,下载离线设备数据,而且根据用户权限获取开锁命令(命令能够是:根据用户权限生成的一次性命令、永久命令),在用户处于网络很差的状况,经过蓝牙链接发送获取设备信息而且获得信息与离线存储口令进行匹配,匹配成功后再经过蓝牙直接发送开锁命令直接开启设备。

  • Locman能够增长预定功能吗?

   我以为答案是确定的,参照 Locman能够增长离线开锁功能吗? 用户能够直接选择预先下载对应设备的开锁命令(这里的命令与离线命令须要区分开来)进行预定,在用户预定以后冻结该设备(冻结时长或者其余参考因素)为其余人操做。后续操做方式与上述 Locman能够增长离线开锁功能吗? 相同。

  • 关于以上问题思考后Locman开/关设备实现流程图
       整个流程主要是结合上述提出的几个问题进行一个简单得梳理,在现阶段正在使用的流程中加入/新增了:
    • 手动激活改成蓝牙自动激活;
    • 预定流程;
    • 读取设备信息从离线数据、蓝牙读取、二维码扫描;
    • 设备上传信息修改成手机App与设备能够同时上传。
      Locman流程优化

   最后这些想法是否合理还有待验证,在这里感谢个人同事邓xx(就不写全名了)对我在Locman整个开锁流程上的梳理与帮助。

相关文章
相关标签/搜索