基于微信带场景值二维码的云端反向寻车系统研究

2017-09-08 16:30宋沩萱
物联网技术 2017年8期
关键词:云计算微信

宋沩萱

摘 要:针对目前大型室内停车场面积大、车位多导致车主找车困难的问题,文中提出了一种基于微信带场景值二维码的云端反向寻车系统方案,并进行了代码实现和现场测试。系统采用微信特有的带场景值二维码作为停车场内的位置标识提供微信服务号入口信息和车位信息,以微信服务号作为用户与云端服务器的信息交互通道,以“新浪”云计算平台和“图聚”室内地图开放平台为云端服务器实现服务逻辑、数据存储和室内地图导航功能。在停车场布设足量的标识二维码后,用户通过微信“扫一扫”功能和服务号自定义菜单即可便捷地获取保存停车位置和反向寻车服务。系统采用分步骤提示的方法为用户提供寻车路线指引,方便用户快速找到爱车。基于电子地图的模拟测试和现场测试结果表明,该系统具有使用便捷省时,提示简单易懂,数据流量小,跨平台通用性好,系统建设和运营成本低等优点,是一款能有效解决大型室内停车场找车难问题的“轻”应用方案。

关键词:微信;带场景值二维码;云计算;反向寻车

中图分类号:TP391 文献标识码:A 文章编号:2095-1302(2017)08-00-05

0 引 言

大型停车场内找车难是普遍存在的一个问题。其主要原因是车主在离开时没有留意停车位置所在楼层和车位编号,导致面对巨大的停车场时不知该从何处寻找。如果记错停车场就更无法快速找到爱车。此外,有些车主方向性较差,虽然记得车位号,但是在结构复杂,标志物特点不明显,遮蔽物多的室内停车场内往往会迷失方向,给找车带来很大困扰。

找车难问题大大降低了客户的消费体验,不仅困扰着消费者本身,也给商家带来了诸多困扰,于是他们开始寻求解决方案。有些停车场采用了基于视频图像处理技术和车牌识别技术的反向寻车系统。此类系统通过在每个车位上方安装视频车牌识别设备来获取车辆停车位置信息。用户在需要时通过专用终端进行查询获得指引。该系统的优点是用户在泊车时无需进行任何操作,节省了用户时间。但要找到停车位置必须在专用设备上搜索,花费较多时间。同时该系统使用识别设备复杂且数量要求多,系统建设和后期维护成本较高。此外,基于WiFi和蓝牙等室内导航技术的室内寻车方案也不断被提出,但由于存在室内定位精度要求高、定位接入点密集和硬件系统复杂,成本高等问题,此类技术还不成熟,距离广泛应用还有一定的距离。近年来,基于条码或二维码的停车场反向寻车方案被提出,该方案通过对车位进行编码并形成条码或二维码,用户扫码获得车位编码并通过专用数据库查询得到位置信息实现反向寻车。此类方案的主要优点是现场布设成本低,但要开发专门的应用程序进行扫码识别,同时需要制作复杂的专用数据库保存位置信息,全系统制作成本高、通用性差。且用户需要下载专用App,资源占用大,用户体验难以提升。因此此类方案和概念还未见被广泛接受的成熟应用出现。

随着移动互联网的不断成熟,智能手机广泛普及,微信用户群体急剧膨胀,微信公众平台、云计算和地图开发平台等网络资源日益丰富,为解决停车场找车难问题提供了坚实的物质和技術基础。本研究结合微信二维码应用的便捷性和条码使用的灵活性特点,充分利用互联网云资源,提出了一种基于微信带场景值二维码的云端反向寻车系统实现方案。该方案以微信带场景值二维码为保存车位信息的载体,以用户持有的智能手机为交互终端,以微信服务号为服务接口,以“新浪”云计算平台为后台服务器,以“图聚”开放平台为室内导航基础,采用分步骤提示寻车的方法,开发了基于“爱车去哪了”微信服务号的云端方向寻车系统。同时配套开发了基于电子地图的室内定位用微信带场景值二维码自动生成程序,为二维码生成与布设提高了效率。该系统所有服务资源都放置在云端,用户无需额外下载安装任何软件,具有使用便捷省时,提示简单易懂,数据流量小,跨平台特性好,布设和运营成本低等优点,可快速在大型停车场布设,是一款能有效解决大型室内停车场找车难问题的微信“轻”应用。

1 系统构成及原理

系统构成及原理系统结构如图1所示,包括微信带场景值二维码、智能手机终端、微信服务号、后台服务器和云地图服务器五部分。其中前两部分处于客户端,后三部分处于云端。两端之间通过互联网连接。

微信带场景二维码是实现室内精确定位的关键。每一枚二维码都包含两部分信息,一部分提供寻车服务的微信服务号入口信息,另一部分为场景值字符串。场景值字符串格式为“building*floor/properties&latitude:longitude”。其中,“building”为停车场所在建筑物名称、“floor”为楼层代号、“properties”为位置名称,“latitude”和“longitude”为该位置的经纬度坐标。这些二维码全部由微信公众平台生成,含有特定内容格式,可被微信软件正确解读。使用微信二维码既安全又方便。生成的带场景二维码被放置在停车场内附近,供后续泊车与寻车时使用。二维码布设位置必须准确,不能混乱。

智能手机终端是用户与服务器之间进行交互的硬件基础,需要安装微信应用软件并具有上网功能。用户通过微信“扫一扫”功能对附近带场景值二维码进行识别,并通过微信服务号与后台服务器和云地图服务器进行交互。

微信服务号是微信公众平台提供给企业用户的向微信用户提供运营者资讯和服务的平台。它是连接运营者和用户之间的桥梁。运营者和用户之间只能进行简单的数据交流,不能影响对方的系统功能,对用户而言具有很高的安全性,使用非常便捷。同时微信服务号对于用户和运营者都是透明的,用户只需做简单操作,而运营者只需知道如何接收和发送信息即可。由于本系统服务涉及不同的操作响应、信息存储和逻辑判断,微信服务号编辑模式不能满足要求,所以必须启用开发模式。

后台服务器是运营者响应用户请求、存储用户信息和实现服务逻辑的计算程序。后台服务器是整个寻车系统的核心。处于开发模式的微信服务号必须要有一个服务器来处理微信公众平台推送的信息。endprint

云地图服务器是提供室内电子地图服务的程序,它建立在图聚开发平台基础上。可以根据导航链接中包含的建筑物名称和楼层提供对应电子地图,在地图上标注出停车位置和用户当前位置,并规划出导航路线。

本寻车系统的基本原理是:用户泊车时,扫描停车位置附近二维码,并发出“存车”指令,微信服务号将用户信息、二维码场景值和用户动作推送给后台服务器,后台服务器根据用户指令将车位信息保存下来,泊车过程结束。用户需要寻车时,扫描任意位置二维码并发出“找车”指令,微信服务号将用户信息、二维码场景值和用户动作推送给后台服务器,后台服务器将用户当前位置和停车位置进行比较,如果两者不在同一楼层,则提示用户先到底停车楼层;如果用户当前位置与停车位在同一楼层,则提示用户先到达停车位所在车位区域,同时给出用户停车的车位号和导航链接。如果用户根据上述提示找车仍存在困难,则可以点击导航链接,通过地图和导航线路来找车。对于那些识图困难的用户,可以通过多次扫码停车场内二维码,逐渐逼近停车位置,直到找到自己的汽车,至此则寻车过程结束。

2 系统实现

2.1 后台服务器

本系统需要用户数据库和逻辑运算来完成寻车服务,所以需要创建一个服务器来响应微信公众平台的事件推送。本系统选择新浪云作为服务器。在完成注册和实名认证后,创建一个“zhaocheyi1”应用,选择PHP语音作为服务器开发语音,设定二级域名为zhaocheyi1.applinzi.com,其界面如图2(a)所示。

本系统开发完成后将会为大量用户服务,我们需要对这些用户进行管理,分別保存他们的信息。因此后台服务器还需要建一个共享数据库,并新建一个名为“findcar”的表单,它包含7个字段,其中user_id, present_position, car_position, scan_time为泊车寻车用主要字段,nickname,sex和click_time为辅助字段用于显示和调试,如图2(b)所示。其中user_id用以保存微信用户的账号(OpenID),便于用户管理;present_position用于暂时保存用户扫码时获得的当前位置信息;car_position用于保存用户的存车位置信息;scan_time字段用于保存用户事件推送的时间。

2.2 地图云服务器

室内电子地图是本系统开发的重要基础,本系统开发选择图聚(iPalmap)开放平台作为室内地图的服务器。iPalmap是国内最大的室内位置服务提供商,平台目前免费提供1 000多套室内地图,另有10 000多套室内地图数据可供开发者申请使用。

在iPalmap开放平台上注册账号成功后,创建一个名为“微信找车”的新场景,点击“地图管理”添加所需端停车场地图,如图3所示。地图添加完成后,应用程序可以通过iPalmap开放平台为每个应用场景提供AppKey对地图进行调用和显示。iPalmap开放平台为每个场景默认提供一个地图资源,用户可以根据需要申请增加地图数。本文以长沙市的德思勤城市广场为例,其它建筑物的室内地图操作类似,只需改变地图编号即可。

2.3 生成自定义菜单

为了实现本系统所有功能,需要获得微信公众平台提供的扫码推送、自定义菜单和二维码生成等高级接口权限,本系统申请了一个微信号为“searchingcar”的微信服务号,显示名称为“爱车去哪了”,并进行实名认证获得了高级接口权限。将该服务号配置为开发模式,并将服务器地址配置为云服务器的响应程序地址,http://zhaocheyi1.applinzi.com/wx_sample.php。设置成功后,微信服务器将关注用户的请求信息以文件包形式发送给云服务器。然后为微信服务号用户界面添加三个自定义菜单,如图4所示。“扫码”菜单的属性是scancode_push类型,该菜单被用户点击后微信会自动发起扫码功能。一旦扫码成功微信会推送一个“SCAN”类型的事件给本服务号的后台服务器,推送数据包中EventKey值为二维码的场景值。“存车”菜单的属性为 “click”类型,键值为“cunche”。该菜单被点击后微信会推送一个“click”类型的事件给本服务号的后台服务器,推送数据包中EventKey值为“cunche”。类似的找车菜单也是“click”类型,键值为“cunche”。该菜单被点击后微信会推送一个“click”类型的事件给本服务号的后台服务器,推送数据包中EventKey值为“zhaoche”。服务器根据菜单键值来判断哪个菜单被点击。

2.4 微信服务器代码实现

上述资源准备完成后,即可开始后台服务器代码实现。本系统的核心代码是后台服务器中wx_sample.php程序的responseMsg()方法,它是运营者响应微信客户请求的关键。本系统响应的程序流程如图5所示。用户使用微信“扫一扫”功能扫描布设在停车场的带场景二维码,或点击本系统微信服务号的“扫码”菜单时,微信客户端会将用户的操作信息和扫码结果通过网络发送到微信公众平台服务器,微信服务器会将用户信息、操作信息及扫码结果打包成XML(Extensible Markup Language)格式数据包,并推送给本系统服务号设定的后台服务器。后台服务器接到推送消息后立即执行responseMsg()方法。

responseMsg()方法首先读取XML数据包的事件类型Event、事件值EventKey和用户ID值FromUserName。然后以本次消息推送的FromUserName为关键字搜索“findcar”表单并读取相关数据,供后续使用。根据Event值进入分支结构:

如果是新用户第一次扫码,微信公众平台还会同时推送一个“subscribe”事件,程序便会进入“subscribe”分支。数据包中的 “EventKey”值为二维码场景值。程序首先在 “findcar”表单中新建一个条目,将FromUserName值保存到“user_id”字段,二维码所携带的场景值字符串保存到 “present_position”字段,然后向用户发送欢迎词、使用说明和当前位置,本次响应结束。endprint

如果已关注用户扫码,程序则会进入“scan”分支。程序首先将二维码所携带的场景值字符串保存到“findcar”表单中该用户对应条目的 “present_position”字段,然后将二维码场景值中包含的建筑物名称、楼层代号、车位编号和操作提示发送给用户,本次响应结束。

如果是用户点击“存车”或是“找车”菜单,程序则会进入“click”分支。进入分支后首先计算用户本次点击和上次扫码之间的时间间隔,如果大于10 s,则判断为误操作,直接发送操作提示,本次响应结束。如果时间间隔小于等于10 s,则判断此次操作有效,程序会进入基于“EventKey”值的多分支选择语句。

如果用户点击的是“存车”菜单,则程序会进入“cunzhe”分支。“cunzhe”分支将“findcar”表单中用户对应条目的 “present_position”字段内容保存到该条目的“car_position”字段,然后向用户发送停车位置信息,本次服务结束。

如果用户点击“找车”菜单,则程序会进入“zhaoche”分支。“zhaoche”分支读取用户对应条目的“present_position”和“car_position”字段,比较两者的建筑物和楼层是否相同,如果不同则发送信息提示用户到达停车位置所在楼层再扫码找车。如果两者的楼层相同则向用户发送一个图文信息。该图文信息包括用户停车位置的区号、车位编号和导航地图链接,本次服务结束。

2.5 导航地图显示实现

微信服务号在导航提示中只推送给用户一个导航地图链接,其格式为:http://zhaocheyi1.applinzi.com/js/index.html?building*floor/lat1:lng1&lat2:lng2。其中“?”之前的版本地图显示脚本所在位置,导航参数,依次为建筑物名称、楼层代号,停车位置坐标和当前位置坐标。用户点击导航地图链接后,微信客户端内置浏览器会执行服务器上的地图显示脚本index.html。该脚本会调用客户端程序app.js来完成地图显示相关工作。

app.js脚本具体执行过程如图6所示,首先提取导航地图链接携带的参数,然后利用在创建图聚应用场景“微信找车”时获得的“秘钥”创建NGR.View地图显示维护实例map和.DataSource地图查询实例res。为使本系统适用于多个建筑物,特地在图聚“微信找车”场景中添加了多个地图,需要通过建筑物名称来搜索用户所在停车场的建筑地图编号。找到建筑物地图编号后,通过楼层代号搜索可以得到停车楼层的地图编号。利用建筑物地图编号和楼层地图编号向图聚开放平台云服务器获取地图数据并显示在微信浏览器上。然后根据在地图上添加出发图标fromMarker和目的地destMarker图标将它们的坐标设置为当前位置坐标和停车位置坐标,然后利用“秘钥”创建导航实例并获取导航线路显示在地图上。

对于方向感较差的用户,还存在导航地图与实际地形匹配困难的问题。此时,用户可以将起点位置的地图放大,沿着导航线路寻找最近的车位编号,并与地图上的车编号对应,直至找到方向。

用户使用完成后,可以点击“返回”回到服务号界面。如果找车仍存在困难,还可以就近扫描下一个二维码,重复导航,直至找到停车位置。

3 系统测试

完成系统开发后即开展系统测试。系统测试分三个步骤,分别为模拟测试,系统跨平台性能测试,现场测试。

(1)模拟测试。首先模拟未关注用户的使用情况。用微信公众平台调试接口生成“德思勤商业广场”地下三层G203、H047车位和地下二层的B040车位的标识二维码。使用一个名为“骆驼”的微信号进行测试。该微信号没有关注本系统微信服务号。用微信“扫一扫”功能扫描该二维码,微信立刻跳出关注“爱车去哪了”微信号的提示。用户点击关注后,服务号会发送欢迎词及使用说明,如图7(a)所示。打开新浪云共享数据库“findcar”表单,该微信用户信息已保存在数据库中,扫码对应的位置保存在“present_position”字段下,用户关注成功,如图7(b)所示。点击“存车”菜单,由于间隔扫码时间过长,系统提示“间隔时间太长,请重新扫码并在10 s内点击“存车””,如图7(c)所示。按提示操作,重新扫码G203车位的标识二维码,保存停车位置成功,提示停车位置在“德思勤商业广场*B3/G203”,如图7(d)所示。点击自定义“扫码”菜单,扫码H063车位的标识二维码,然后点击“找车”,服务号反馈寻车信息和导航路线图文消息,如图7(e)所示。点击该消息,微信浏览器打开德思勤商业广场地下三层的地图和导航线路,并将G203标识为终点,H047标识为起点,如图7(f)所示。至此,寻车功能实现。采用不同车位的标识二维码,重复上述过程均能显示车位和导航地图,表明保存停车位置和寻车功能均正常。验证楼层区分功能,停车位置仍然为德思勤城市广场地下三层G203。选择地下二层B040为当前位置。扫码B040车位的二维码后点击“找车”。微信服务号会提示“请先到德思勤城市广场*B3”。表明提示楼层功能实现,如图7 (g)所示。如果建筑物不同,也可同样提示。

(2)跨平台特性测试。由于微信应用本身是跨平台的,所以本系统基于微信的所有功能在不同平台上都可正常实现。分别采用多台iOS手机和Android手机对本微信服务号进行测试,各功能均正常。表明本系统适用于当前主流智能手机软件平台。

(3)现场测试。主要用来验证电子地图与实际车库的匹配情況。本系统先后在长沙市万达广场(开福店)、步步高新天地和德思勤城市广场的地下停车场进行测试。在开始对地下停车场布设二维码之前,我们首先进行了现场勘查。出于施工和安全考虑,部分车位减少了,导致实际车位编号与电子地图车位编号发生错位。于是我们利用图聚电子地图的编辑功能,根据实际车位编号对电子地图中的车位编号进行调整。在确认电子地图车位编号与实际车位编号一致后,利用自主开发的标识二维码快速生成程序、二维码,打印后分别布设在对应车位附近。经过多人次现场测试,系统工作正常,指示路线正确。endprint

4 结 语

本研究针对大型室内停车场普遍存在的找车难问题,提出了一种基于微信带场景值二维码的云端室内寻车系统实现方案。我们以微信带场景值二维码为服务接口和车位信息载体,以用户持有的智能手机为交互终端,采用微信公众平台、新浪云服务器和图聚开发平台构建了一个“爱车去哪了”微信服务号,用PHP语言编写了微信服务后台程序,实现了为用户寻车提供便捷指引的功能。测试结果表明,系统具有以下优点:

(1)该系统使用便捷省时。用户无需下载程序,无需安装,无需与任何信息绑定,可以直接从微信的“扫一扫”打开服务。在存车或找车过程中,用户只需两次点击即可完成,无需输入任何字符,大大节省了时间。

(2)本寻车系统还采取了分步骤提示的方法,依次提示楼层、停车区和车位,最后提供室内地图和导航路线的链接,该方法符合人们日常的指路习惯,简单易懂。

(3)该系统以文本交互为主,必要时才打开地图,因此需要的数据传输量非常小,在地下停车场手机信号较弱的情况下也能正常使用。此外,本系统的所有服务资源都放置在云端,运行安全可靠,只要安装有最新版本的微信即可正常使用,极大地改善了用户体验。

(4)该系统具有成本低的优点。主要硬件成本是打印一定数量的标识二维码,价格低廉。一个大型停车场可以在一天内布设完成,投入使用。另外,本寻车系统所使用的微信平台和室内地图开发平台是免费的,新浪云服务器只需每天支付几角钱,所以资源使用成本非常低。同时全系统基本可以做到免维护,大大节约了运营者的开支。

(5)本系统还有很好的扩展性,多个停车场可以共用一套系统。

(6)本系统还具有极高的商业推广价值。首先,用户每次使用本系统至少有四次交互机会,为后续商场通过微信定向发布广告信息和安全提示提供了方便;其次,本系统不仅可方便用户寻车,还可用于寻找店铺,对提高商场内人员流动效率大有帮助。

综上所述,本系统对用户和商家都是一款解决大型室内停车场找车难问题的有效方案。

参考文献

[1]孙燕民.浅谈反向寻车系统在大型商业中的发展前景和介绍[J].管理观察,2012(34):7-10.

[2]赵炎,蓝箭,李印,等.基于QR Code的室内寻车定位方法研究[J].工业控制计算机,2015(7):70-72

[3]王扬,薛娟.智能停车场反向寻车系统设计与实现[J].无线互联科技,2012(11):97-99.

[4]冯小刚.基于二维码的停车场反向寻车设计与实现[D].青岛:青島科技大学,2015.

[5]郭芝源,李臻,李维龙.基于二维码的停车场反向寻车系统设计[J].物联网技术,2015,5(10):42-43

[6]周昌龙.基于WiFi的智能停车场系统的设计与实现[J].电子世界,2016(23):70-71.

[7]赵航,马树亮,李军伟,等.大型停车场泊车引导及反向寻车智能系统研究[J].现代建筑电气,2016,7(8):43-47.

[8]骆泽雨,杨雪,桑海伟.智能寻车和停车场车位引导系统[J].物联网技术,2017,7(1):100-101.endprint

猜你喜欢
云计算微信
微信
微信
实验云:理论教学与实验教学深度融合的助推器
微信
微信
微信