潘力戈 张彤
摘 要:巡更是商务楼宇、专业市场、小区物业安全管理必不可少的一项内容,在电力、电信、石油、燃气、水务等行业也需要对线路、機房、设备进行定期巡检。随着移动互联网的快速发展,采用具备NFC功能的移动终端实现智能巡更巡检使管理人员更准确、及时、有效地进行巡更巡检的管理,同时使用移动终端的GPS、照片上传、内容录入等功能对巡更巡检过程中发现的问题及时上报、预警,避免各种事故的发生。采用具备NFC功能的手机NFC智能巡更使管理人员更准确、科学、规范地监督及掌握巡查人员的巡查情况。
关键词:NFC;巡更;巡检;智能终端
0 引言
随着移动互联网及智能手机的发展,手机终端越来越多地应用于行业应用中。其中利用手机的GPS定位功能、照片上传功能等实现管线、杆路、机房设备、销售终端、物业巡更等方面的巡检巡更功能,但使用手机GPS定位的主要问题是GPS定位的精度要在10-20米左右,在室内无法使用GPS定位功能,也无法定位到同一房间某个设备的巡检点上,之前曾考虑过使用二维码方式或蓝牙模块方式,但二维码图片容易被复制,蓝牙模块成功较高。
近年来,越来过多的手机具备了NFC功能,NFC又称近距离无线通信(Near Field Communication),是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据,这个技术由非接触式射频识别(RFID)演变而来。NFC目前主要应用于手机支付功能,如通过手机可以在座公交时刷公交卡,在超市买物品时进行闪付等功能。以上这些功能主要是通过手机NFC功能与SIM-SWP卡实现数据加密、安全认证功能实现,手机作为NFC信息的提供者。
NFC手机不仅能进行手机支付,还可以把手机作为一个读取NFC标签卡的设备,对写有不同信息及ID的标签卡内容读取ID并实现识别上传的功能。本系统就是利用NFC手机的读取NFC标签的功能,实现了精确定点的巡更巡检的功能,同时利用手机的GPS功能、照片上传功能、信息提交功能实现定点NFC标签内容识别、GPS位置信息上传、安全隐患照片上传、消息推送等其他相关功能。由于NFC标签价格便宜、防水,可适合于不同的使用环境,可广泛布放于杆路、机房设备及任意需要定时巡检的物品上,使用时只需打开手机APP在标签卡上一放即可立即读取卡中的信息。由于标签卡每一张的ID均不同,并且可以写取几百个字节的其他信息,因此可以作为定点巡检的唯一标识,同时通过GPS位置、照片上传等信息防止标签卡被移到其他地方作假使用,保证了巡检过程的真实性。通过手机将信息读取后,实时上传巡检信息,管理人员也可以实时看到巡更巡检的信息,起到对巡检人员的监督职能。
1 系统总体设计
1.1 手机终端要求
根据巡更、巡检人员的业务性质及消费能力,系统采用具备三防功能的Android手机终端,以适应室外、潮湿、高温等不同的工作环境要求,要求手机具备Android 2.3.3以上操作系统版本、4.7寸以上触摸屏幕,具备WCDMA 3G或TD-LTE、FDD-LTE4G通信模块及NFC、蓝牙功能模块,手机电池25000mAh以上,1G以上RAM、2G以上ROM,支持MicroSD卡扩展。
1.2 服务器端要求
服务器端要求Windows Server 2003以上操作系统,安装Apache+PHP+Mysql运行环境,4G以上内存,500G以上存储空间,Apache Web服务器开通80端口及8088(或其他端口),一个端口用于后台管理及上传数据报表查询,一个端口用于手机终端上传内容保存。
1.3 手机端系统开发
手机端开发采用Appcan基于混和模式的移动开发系统实现功能快速高效开发,由于该开发系统没有NFC功能插件,因此需要安装eclipse开发环境用于Android的NFC功能开发。采用Appcan提供的Eclipse下的开发标准开发NFC调用插件,实现NFC标签卡的读写功能。
采用Eclipse系统开发的NFC功能并测试通过后导出JAR文件,上传到Appcan移动开发平台供开发时调用。
AppCan SDK 是一套跨平台移动应用开发系统,基于业内领先的Hybrid App 开发引擎,采用HTML5 标准作为开发语言,支持一次开发多平台适配。该系统内置了GPS定位、照片上传等几十项插件功能,使用时只需通过HTML5的Javascript调用相应的函数即可。
通过HTML5设计的手机界面及功能调用,数据交互采用Ajax技术与后台服务器进行数据交互,数据交互格式为JSON格式。
1.4 服务器端功能开发
服务器端采用基于HTML5、Jquery技术的EasyUI开发框架设计,通过Jquery的Ajax技术将界面与数据交互功能进行分离,结构清晰易于模块化开发。功能交互端采用PHP开发语言及Mysql数据库进行数据存储,Apache+PHP+Mysql是目前Web开发中比较流行的组合,访问效率高、系统稳定。
1.5 NFC标签卡
NFC标签卡采用NXP原装进口NTAG216芯片,容量888字节,适合制作多任务NFC标签。该类标签在淘宝等网站上均有销售,价格便宜(小于10元/张)、兼容性好,可适应大多数NFC手机。
2 系统模块设计
2.1 手机端NFC功能设计
2.1.1 NFC API使用
自Android 2.3.3版本开始NFC近场通信功能已经被支持并提供了相应的调用API,Android中提供的与NFC相关的较高层的类都包含在android.nfc中,这个包中包含了用于与本地NFC适配器交互的类,用于代表已经识别的标签的类以及用来使用NDEF(Nfc Data Exchange Format )格式的类。
Android.nfc.tech包主要是包括了一些用于查询特定标签的特性和I/O操作的类。所有的这些类都需要实现TagTechnology接口,它们包括NfcA、NfcB、NfcF、NfcV、IsoDep、Ndef、NdefFormtable、MifareClassic、MifareUltralight这几个类。在使用时在相应原JAVA文件中import Android.NFC.*即可。
根据Android系统所遵循的权限机制,我们需要在AndroidManifest.xml中对需要使用的权限进行声明,这样在程序进行安装时将会提示用户该程序将会使用到哪些设备,让用户来决定是否赋予应用程序相应的权限,Android通过这样的机制来提高系统的安全性。因此当我们在应用程序中需要使用到NFC硬件的时候,我们应当在AndroidManifest.xml中加上:
另外,还需要声明的是能够支持应用程序的最低SDK版本,由于对NFC的支持是在API 10以后才比较完善,因此我们需要使用:
2.1.2 NFC标签卡数据读取
根据巡更巡检的功能要求,只需读出NFC标签卡中的ID号即可以区分每一张卡。每张卡ID是在出厂的时候已经写好的,不能更改,类似网卡中的MAC地址。读取每张卡的ID后,上传到后台数据库中,系统根据系统数据库中预先导入标签卡的ID与安装位置的名称等信息进行区配。读取的过程相对比较简单,用户启动APP后即开始调用NFC识别功能,该识别功能后台运行无须界面显示,相关代码如下所示:
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
//resolveIntent(intent);
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareClassic mfc = MifareClassic.get(tagFromIntent);
String result = "UID:"+Coverter.getUid(intent)+"|"+processIntent(intent);
//resultText.setText(result);
Intent in = new Intent(getIntent().getAction());
in.putExtra("result", result);
setResult(Activity.RESULT_OK, in);
finish();
}
}
2.1.3 NFC标签卡读取后的数据返回
采用AppCan移动开发工具提供的Android原生插件开发引擎,该引擎可以定义插件名称、调用方式等,定义内容在Plugin.xml文件中,内容如下:
<?xml version="1.0" encoding="utf-8"?>
className="com.nfc.UexNfcReadObject" uexName="uexNfc" > //插件名称
定义了接口方法后,在开发工程中进行方式定义及读取模块调用,主要代码如下:
public void startNfcResult(String[] parm){
Intent intent = new Intent();
intent.setClass(mContext, NfcRead.class);//初始化读取模块
try{
startActivityForResult(intent, mMyActivityRequestCode);
//返回數据后生成JSON格式或字任串格式数据返回JAVASCRIPT调用端
}catch (Exception e) {
Toast.makeText(mContext, "找不到此Activity!!", Toast.LENGTH_LONG);
}
}
2.1.4 手机调用端数据获取
采用AppCan移动开发平台,调用相应功能时只需使用Javascript调用相应函数即可,如在调用HTML5的index.html页面中,页面初始后自动调用Nfc读取插件:
window.uexOnload = function(type){
if(type == 0){
uexNfc.cbStartActivityForResult = funcD1; }
}
function funcD1(opCode, dataType, data){
alert("返回的NFC标签卡的ID是:"+data);
}
2.1.5 NFC标签数据获取后上传至服务器
由于Appcan采用混合的HTML5开发技术,因此与后台的交互采用Jquery的Ajax技术与后台服务器进行数据交互,交互格式采用Form变量提交方式,服务器端PHP程序获取的POST变量后保存到数据库并返回JSON格式的结果,手机端Jquery调用程序获取返回数据后进行异步结果判断及内容显示。Ajax上传主要代码如下:
function slinfo_tj(data)
{
var tjinfo=encodeURIComponent(JSON.stringify(data));
var m_url=ip+'func_sdb2.php?oper_db=slinfo_tj';
appcan.request.ajax({
type: 'POST',
url: m_url,
//添加参数
data: {tjinfo: tjinfo},
//期望的返回类型
dataType: 'json',
timeout: 3000,//超时时间
success: function(data){
//alert(JSON.stringify(data));
//获取内容
if (data.result=="success")
{
appcan.window.alert({
title:'提示',
content:'巡更信息提交成功!',
buttons:'确定'
});
processid="";
$("#imgs").html('');
$("#prodbm").val('');
$("#note").val('');
lat='';
lng='';
}
else
{
appcan.window.alert({
title:'提示',
content:'巡更信息提交失败,请重试!',
buttons:'确定'
});
}
},
error: function(xhr, type){
appcan.window.alert({
title:'提示',
content:'巡更信息提交失败,请重试!',
buttons:'确定'
});
}
})
}
2.1.6 手机界面设计
采用HTML5移动框架设计技术,界面友好、开发效率高。巡更巡检系统取NFC标签数据读取外,将GPS位置定位、照片上传、数据提交功能进行了有机结合,实现了巡更巡检内容的实时提交上传功能,同时还可以根据用户需求将通讯录、工作计划等内容进行功能集成。(图1)
2.2 后台管理端设计
后台管理端主要实现上传内容查询、统计报表生成、人员管理等功能。通过手机上传的数据提交后即可通过后台查询界面查看上传的内容信息,对于需要关注的安全隐患等内容可以通过短信、手机APP消息推送方式发送给相关人员。管理人员通过手机APP客户端或PC端Web访问系统可以看到上传的问题内容、GPS位置、照片等相关信息。(图2)
3 结论
在过去的十多年里,互联网带来了衣食住行和文化娱乐等消费领域的深刻改变,进行了广泛而深入的融合,并促进了这些领域消费形态的变化,运营商在消费互联网时代“起了个大早,赶了个晚集”,现在越来越被管道化、边缘化。因此运营商的经营服务模式需要转型升级,由卖产品向卖服务转变,由一次性服务向持續性服务模式转变。行业信息化应用产品是提高运营商移动宽带市场占有率、向行业用户核心业务渗透、提高用户粘性、促进流量经营的有力抓手。NFC手机巡更巡检系统的开发有效地促进了移动终端在物业管理、相关行业移动巡检方面的使用,为移动互联网行业应用发展起到了一定的示范作用。
参考文献:
[1]明日科技编著.Android从入门到精通[M].清华大学出版社.
[2]赵波.Android NFC开发实战详解[M].人民邮电出版社.
[3]AppCan移动混合模式开发手册[M].正益无线(北京)科技有限公司.
[4]陶国荣.jQuery权威指南[M].机械工业出版社.