【摘 要】当今社会,家庭的安全防盗成为了重大的问题,为了维护家庭的生命财产安全,及时发现危险情况,安装一套家庭安防系统是很有必要的,家庭安防系统的重点在于安防数据的通信,以便实时预警。本文阐述了安防系统的整个数据通信过程,并对具体的通信部分提出了解决方案,有利于实现更加安全、高效率的安防系统。
【关键词】家庭安防;数据通信;Mina框架;WebService技术;手机推送
0 引言
随着社会经济的飞速发展,社会结构和社会治安都日趋复杂,入室抢窃、偷盗等诸多社会问题时有发生,使得人们对家庭生命财产的安全越来越重视。为了满足人们对家庭安全防范的更高要求,及时发现入室抢劫等危险情况,并在第一时间内迅速通知给用户,将险情遏制在萌芽阶段,从而更好的保护住宅用户的利益。家庭安防系统应运而生,家庭安防系统的研究,可以使用户跨越时间、空间的阻隔进行远程监控工作[1],提高了住宅的安全防盗性能,可以有效的保护用户的生命财产安全,具有较高的应用价值。
家庭安防系统是基于网络的,系统功能实现的重点在于数据通信,数据通信是通信技术和计算机技术相结合而产生的一种新的通信方式。需要把文本、图像、视频、音频等元素与二进制数据进行转换传输。本文在实现了一套家庭安防系统的基础上,着重对系统的数据通信问题做出研究,并提供了一套有效的解决方案。
1 开发工具简介
1.1 MyEclipse
2 系统功能简介
家庭安防系统主要由三部分组成,硬件端采集系统、服务器管理系统和手机移动终端。硬件端利用温度传感器、振动传感器与摄像头,实现对家庭安全防盗信息的采集;服务器端对数据进行存储分析;手机端对数据进行展示,以及防盗报警。系统主要功能是实现对家庭内部的监控,能够采集家庭内的温度、振动、图像信息,并且能将这些信息发送到服务器上。当家庭内有异常(陌生人非正常进入)时,可以检测出异常,然后通过服务器将报警信息发送到用户的手机上。用户可以通过手机登录服务器来查看家中的温度、振动、图像信息,并且可以发送特定的指令信息给服务器,修改家庭内监控网络的一些参数(采集频率、开关状态等)。
3 通信功能实现
图1 系统数据通信框架图
3.1 硬件端与服务器端通信
家庭安防系统面对的用户群非常广泛,同一时间需要支持大量的硬件端数据上传,而且数据上传的频率非常高,因此,服务器需要支持大规模的并发连接。传统的Socket通信是阻塞的、非异步的,连接数较多将会出现资源不足的情况,程序响应出现延迟,甚至崩溃。Apache Mina是一个网络通信应用框架,也就是说,它主要是基于UDP/IP和TCP/IP协议栈的通信框架,我们可以使用Mina 快速的开发高性能并且高扩展性的网络通信应用,Mina 提供了基于事件驱动和异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型[2]。messageReceived是Mina中用于接收消息的方法,在此方法中进行消息的处理。核心代码如下:
public void messageReceived(IoSession session, Object message)
throws Exception {
IoBuffer buffer = (IoBuffer) message;
Context ctx = getContext(session); byte[] b = new byte[buffer.limit()];
buffer.get(b);
System.out.println(b.length);
DataOutputStream dos = ctx.getDos();
boolean isopen = ctx.isIsopen();
System.out.println(isopen);
int len = b.length;
for(int k=0;k
2222