杜乐仁
2014年7月加入去哪儿网,先后在目的地事业部、大住宿事业部从事 Android 客户端开发工作,现在大住宿 Easy 住部门从事自助入住机研发工作,致力于为客户提供更好的入住体验。
简介
现在自助机已经成为一种趋势,银行、机场、影院、医院都有客户自己办理业务的机器。酒店也需要一种客户能办理入住,离店的机器,自助入住机是一种酒店客户自己办理入住,离店手续的机器,有办理速度快、成本低、免排队、全天24小时不间断工作、有效减少前台工作等优点,为酒店节约成本。
传统入住离店流程
入住:客户到前台办理入住,把身份证给前台,前台就可以为客户办理入住手续,办理完后把房卡和入住单交给客户,客户拿房卡,入住手续就办完了。离店:把房卡交给前台,前台办理退房手续。
这当中客户不知道前台做了哪些操作,客户也不需要关心,只要能拿到房卡入住就可以了。但是如果客户想换房间,就需要跟前台确认有哪些房型、价格等信息,但这些信息不能直观的展示在客户面前。
那么, 前台做了什么工作呢?前台拿到客户身份证后, 一般会问有没有预订,如果客户有订单,就会去 PMS (酒店管理系统)查询订单,然后选定房间、确认入住信息、 写房卡、打印入住单交给客户。如果没有订单, 前台会问用户要住什么房型、价格多少,用户确定价格和房型后,前台需要先在 PMS 里面下一个订单,然后选房、办理入住、缴费、 写房卡打印入住单 交给客户。离店时,前台刷房卡,查询客户房间信息,办理离店手续。还有, PSB 会将入住人信息上传公安系统,这个是后台做的,前台和客户都感知不到。
自助入住业务流程
原本前台做的工作,客户是不需要了解的,但是如果是客户自己办理入住,就需要了解前台所做的工作,自己刷身份证、确认订单、添加入住人、支付、取房卡、取入住单。从新的流程图可以看出,现在客户需要知道入住和离店的详细流程以方便自己办理。
自助机架构演进
从上面的流程可以看出,有几个关键的地方:用户操作界面,酒店的 PMS , PSB ,自助机的身份证扫描仪,发卡机,打印机。
Windows 版
操作系统用 Windows 7 , 用户操作界面为 windows 风格,通过 windows 连接 PMS、PSB、身份证扫描仪、发卡机、打印机。 这个目前市场上的自助机大部分都在用的这个方案,这个方案的优点是技术实现方便, PMS 基本都是 windows 版,硬件驱动成熟,门锁写卡大部分都是基于 windows 。缺点是操作界面用户体验不好, windows 的触摸操作不是很方便。
Android 版
Android 版的好处就是用户体验好、操作界面友好,触摸操作和手机差不多,更符合用户使用习惯。不好的地方就是一些硬件驱动不支持, Android、PMS 大部分都是基于 Windows 的,还有很多门锁都是10多年前开发的,给的开发包都是10几年前写的,肯定是没有 android 版本的,所以这个方案基本上是不适用的。
双板(Android + Windows)
机子上安装2块主板, 一块装 Android 系统, 另一块安装 Windows 系统,两个系统配合工作, Android 负责显示用户界面和操作, Windows 负责连接PMS,PSB和硬件,在 Windows 上面搭建 LocalServer,Android 连接。 Localserver ,既能优化用户体验,又能连接各种硬件和系统,实现显示和服务分离,缺点是系统会变得复杂,后期维护成本高。
身份证扫描器
身份证扫描器客户获取客户的身份信息, 如姓名、证件号码、出生年月日、有效期、照片等。
身份证扫描器厂商给我们提供的接口有:打开端口,寻卡,读卡,获取姓名、证件号码、有效期、照片等接口。需要特殊说明的是,寻卡需要循环调用,寻到卡后才能读卡,读卡成功后,再获取姓名等信息。这个硬件比较稳定,碰到最大的坑是端口号设置不对。
发卡机收发卡流程
用发卡机取代前台发房卡,客户自己取房卡。
发卡机简介
目前我们用的有2种发卡机,非循环发卡机和循环发卡机,只能读写非接触卡,磁条卡只能收发,无法实现读写。
发卡机结构
发卡箱:用于存放房卡,循环发卡机可用户回收房卡存放。
读写区:从发卡箱发卡到读写区,在读写区写入房卡数据。
卡口:写卡成功后,吐卡到卡口,用户可以取卡。
回收箱:用户回收房卡,非循环发卡机只能把房卡回收到回收箱,循环发卡器可以回收到发卡箱。
发卡机传感器:用于检测卡机、卡片状态、马达传送带等其他组件。
发卡机指令
主要有卡机复位、查状态、特动卡、设置出卡口进卡等。
这里只介绍非循环发卡机 CRT571卡机指令:
参考《CRT-571-V10通讯协议》
状态查询结果:
发卡流程
从发卡箱发到读写区,写卡,写卡成功后发卡到卡口,等待用户拔卡,用户拔卡后,发卡成功。
收卡流程
办理退房时,用户先插入房卡,读取房卡信息,查询客户订单,办理退房。
卡机通讯协议
了解一下通讯协议:
串口调试工具
开发过程中会出现各种各样的问题,了解下发的命令和返回的数据,对解决问题很有帮助。
看下面这个例子,发送的数据是:
F2 00 00 03 43 31 30 03 B0
F2:起始字符; 00:卡机地址; 00 03:数据长度; 43:命令头; 31 30:发送的指令,对应的是查询卡机状态;
03:结束字符 ; B0是异或校验码,这个指令没有附加数据。
接受的数据是:
F2 00 00 06 50 31 30 30 31 30 03 97
F2 00 00 06 分别对应起始字符、卡机地址、数据长度;
50表示操作成功;31 30是返回命令;
30 31 30分别是返回的卡机状态 st0、st1、st2, ascii 码30 对应的是数字0;31对应1;
这个状态是卡机通道无卡、 发卡箱卡少、回收箱未满;
03 97分别是结束符、异或校验码。
打印机业务流程
打印机简介:打印模块是一个带切纸功能的热敏打印机,热敏纸宽58 mm ,有效打印宽度48 mm ,支持 GB18030-2000大汉字库,支持二维码,条码打印,支持实时状态检测。打印机每行只支持32个英文字符,16个汉字,支持字体倍宽倍高放大。
打印样式:
打印方式:打印机支持驱动打印和串口指令打印2种方式。
驱动打印和普通打印机基本一样,需要先生成一个文件,通过 windows 系统文件打印方式打印。
串口指令打印可以不生成文件,直接将打印命令、格式、打印数据发送给打印机,完成打印,我们采用的是串口指令打印方式。打印流程:打开串口,初始化打印机,设置打印机中文字符(默认支持中文),获取打印机状态,检测纸状态,有纸或无纸,设置打印格式,逐行或逐字打印。
硬件监控介绍
监控内容:
身份证扫描监控:读身份证是否成功。
卡机监控:发卡流程和收卡流程中,会出现卡机状态不正常的现象,需要对卡机状态进行监控,主要监控包括:
1、打开串口是否成功;
2、卡机状态查询是否成功;
3、发卡箱是否有卡;
4、回收箱是否卡满;
5、读写区是否有卡,卡阻塞;
6、卡片移动是否成功。
打印机监控:打印机是否有纸。
自助机门卡写卡方案
门卡的多样性和复杂性:门锁厂家众多,各个锁厂的数据也不一样,同一个 PMS ,不同的酒店使用,可能是不同的门锁,同一种门锁,可能不同的 PMS 在使用,针对各种不同的情况,我们封装3个接口,分别是读卡、写卡、销卡,不同的门锁使用不同的实现。
自助机部署网络方案网络环境
酒店内网:只能酒店内部使用,无法访问 Internet 。一般 PMS 部署在内网。
酒店外网:可以访问 Internet,但不能访问酒店内网。
PSB 专网:专门用于连接公安系统,上传客户信息。
有的酒店可能没有内外网之分,但肯定有专网。
多网卡方案
适用于酒店有内外网、专网的情况, Windows 上面需要3个网卡,分别接酒店的内网、外网、专网, Android 上1个网卡,接外网。内网访问酒店 PMS 、门锁数据库等,外网访问公司云服务,专网上传客户信息到公安系统。如果酒店没有内外网之分, Windows 上面有2个网卡就可以。如果酒店有专门上传 PSB 信息的机器,1个网卡就可以解决。实际使用中,根据酒店网络情况,进行方案调整。
桥接方案
适用于酒店没有内外网之分,并且有专门的机器连接 PSB 上传用户信息。 Windows 上需要2个网卡, Android 需要1个网卡,酒店的网线连接的 Windows 上面, Windows 和 Android 直接用交叉线通过桥接连接。这个方案的缺点是 Android 需要依赖 Windows ,必须 Windows 开机能联网后, Android 才能联网。
以上是自助机的简单介绍,当然还有很多细节问题。
我们的目标是让客户轻松入住,客户只要刷下身份证,房卡入住单就出来了。其他的订房选房都在网上完成即可。
参考资料:
CRT-571-V10产品说明书
CRT-571-V10通讯协议
PM58T 用户手册
PM58T 技术手册 B02
身份证阅读器 SDK 使用手册