自主安全的智能家居服务器系统设计

2016-05-10 03:17周成明邬春学杨桂松吴志刚
电子科技 2016年4期
关键词:智能家居服务器

周成明,邬春学,李 锐,杨桂松,吴志刚

(1.上海理工大学 光电信息与计算机工程学院,上海 200093;2.东莞铵辉电子有限公司,广东 东莞 523000)



自主安全的智能家居服务器系统设计

周成明1,邬春学1,李锐1,杨桂松1,吴志刚2

(1.上海理工大学 光电信息与计算机工程学院,上海200093;2.东莞铵辉电子有限公司,广东 东莞523000)

摘要为实现实时对家居环境的监控以及满足人们对家居环境安全性的要求,设计一种结合ARM,Android,ZigBee,GSM,Redis以及BOA技术的安全智能家庭系统。家电节点传感器负责家电设备信息收集,ZigBee网络负责传输这些信息,ARM服务器进行处理,GSM模块发送报警信息,Android客户端进行信息显示并控制。针对实时性以及安全性要求,重点研究服务器的硬件通信、守护进程、数据接收以及解析、消息队列管理等。实验结果表明,系统通过手机端可随时随地对家居环境进行监控,操作几乎无延迟;服务器自主安全运行,无需人工干预;数据存储在本地服务器,不经过第三方;手机端每次登录比对号码,密码以及IMEI,安全性得到保障。

关键词智能家居;自主安全;服务器;数据解析;消息队列管理

现有智能家庭研究方案[1-2]:ARM作为服务器,以ZigBee网络实现数据收集,PC端实现系统的控制与数据显示,用户可在PC端对节点进行配置[3]。但这种方式没有做到实时的监控,手机端仍只是一个附属平台,只完成少量的监测,同时在发生突发情况时无法及时的通知用户,致使智能家居的安全防护功能降低。一些研究方案提出控制平台,这也是目前多数智能家居厂商的做法[1-5],诸如设备状态,服务器信息等数据存储在第三方平台上,用户访问平台获取各种信息或者设备数据后再去访问自身的家居情况,这大幅降低了系统的安全性以及私密性。智能家居的协议设计很重要,目前的一些研究方案中的协议设计过于简单,无法适应大量节点的监控要求[6-7],易导致数据接收延迟时间变大。同时过于简单的协议也使得通信安全性大幅降低[8-9],易造成数据丢失或错发[10-13]。

为提高系统的自主性和安全性,设计了基于Android、ARM、ZigBee、Redis以及传感器技术的嵌入式智能家居系统。系统自主运行,无需人工参与,同时在运行过程中服务器会以不同的指示灯告知用户运行情况;用户随时随地通过手机客户端监测家电节点;同时在发生火灾或其他一些突发情况时,服务器会发送报警短信给用户;根据设置的场景模式,系统智能调节各节点运行;设置安全的数据协议,确保数据正确传输与接收;采用了改进的消息管理机制以及结合数据库队列读取机制,减少节点控制延迟时间;手机号与IMEI以及用户名进行绑定,拒绝非法客户端的登入;家电节点信息存放在自己服务器,不从第三方平台获取,提高了安全性。

1智能家居系统总体框架

智能家居系统主要由用户端、嵌入式服务器端和家居设备终端3个部分组成,如图1所示。摄像头以及家电节点同属家居设备终端,家电节点通过ZigBee网络与服务器端进行数据传输,而摄像头通过Internet与服务器端进行通信。用户终端可通过Internet来访问服务器从而实现对家电节点的配置或控制。

图1 智能家居系统总体框架

2嵌入式服务器硬件通信设计

智能家居采用Cubieboard作为嵌入式服务器进行数据接收和处理,系统采用Lubuntu。服务器与ZigBee网络协调器之间的通信,以及驱动外载LED灯亮都是通过GPIO接口来实现数据传输。由于系统默认没有打开串口,首先打开GPIO接口,然后才可通过其进行数据通信。

2.1端口配置文件的修改

打开GPIO口首先需要修改script.bin文件。script.bin是被全志SoC内核驱动或LiveSuit使用的针对特定目标板的二进制配置文件,包含如何设置基于A10目标版的各种外设、端口和I/O针脚信息。要修改script.bin首先需要通过fex2bin工具将其变成文本格式script.fex:

./bin2fex script.bin>./script.fex? 主要修改内容为:

[uart_para3]

uart_used=1

uart_port=3

uart_type=2

uart_para3代表修改的串口是com4,uart_used代表此串口是否使用,使用为‘1’。重新生成script.bin文件,最后将其拷贝至原位置,重启系统。

2.2GPIO接口驱动LED

通过下载GPIO库来调用GPIO接口,在下载安装成功后,便可在程序中调用库中的程序从而驱动GPIO。程序在读写GPIO口之前首先需调用sunxi_gpio_init()初始化GPIO口,初始化成功后将端口(port代表端口号)设置为写或读sunxi_gpio_set_cfgpin(SUNXI_GPE(port),OUTPUT),sunxi_gpio_set_cfgpin(SUNXI_GPI(port),INTPUT),在设置成功后便可调sunxi_gpio_output(SUNXI_GPE(port),LOW/HIGH),sunxi_gpio_input(SUNXI_GPI(port),对port端口进行写和读。

3智能家居服务器守护进程

嵌入式服务器软件的主要工作是对各平台传过来的数据进行解析并进行相应的处理。在服务器运行两个守护进程来分别实现,对协调器传输来的数据进行接收处理并发送命令给协调器:parent进程和child进程。

3.1parent进程接收数据流程

parent主要是对协调器传过来的数据进行处理(图2)。parent进程反复读取串口,若有数据则解析出命令类型字段,再根据命令类型进行相应的处理。

图2 parent进程数据处理流程图

3.2child进程发送数据流程

child进程主要是将服务器生成的数据发送给协调器,如图3所示。child进程以堵塞方式读取redis数据库中名为server的队列,读取到数据则将其转发到串口并删除此数据。

图3 child进程流程图

4智能家居服务器的关键技术

4.1数据的解析与生成

系统主要是与ZigBee协调器以及手机通信,因此要解析两个平台的通信数据需要分别与各平台约定数据协议格式从而实现对不同平台的数据进行解析与生成。

4.1.1服务器与协调器通信

服务器与协调器的通信是整个系统的最重要的部分,为确保安全性以及满足大量节点的通信需求,将协议制定如图4所示。

目标节点号源节点号命令特征字内容MAC地址#网络地址校验码

图4通信协议

为保证数据传输的安全性以及正确解析与生成,采用3个标识来识别一个家电节点,分别是:目标节点号,MAC,网络地址,确保所发送的数据,可正确传输给目标节点,同时校验码用来保证只有正确的数据才会被接收。命令特征字包括:WE,KZ,BJ,ZJ,WL,WS分别代表写配置信息,控制节点,报警,刷新数据,确认网络地址和握手信息。“内容”根据不同的控制字分别是不同的数据内容。服务器在收到协调器发来的数据后,首先检测校验码,若校验码正确,则将数据按照数据协议格式转换成程序中的结构体,结构体格式如下:

struct cmd_struct{

char dst_id6〗;

char src_id[6];

char cmd_type[6];

char cmd_data[34];

char cmd_tail[6];

}

各个数组分别代表了目标号,源节点号,控制字,数据内容,校验码。接下来程序根据不同的控制字调用不同的程序对数据进行处理。算法如下:服务器最初收到的数据是十六进制的,要将其转换为字符串后,再将其转换成结构体。

输入:收到的十六进制数据hex

输出:结构体str

if(verify(hex)==0)

{hex_to_string(cmdch,hex,31);

cmd_to_struct(cmdch,str);

}

Switch(str→cmd_type){

Case “ZJ”:

Case “WE”:

…}

当发数据给协调器时,首先需要得到各个结构体中数组中的内容,接着按照数据协议格式生成数据字符串,算法如下:

输入:命令结构体str

输出:命令字符串cmdch

memcpy(string,str,62);

verify_string(string,rt);//生成校验码

memcpy(str→cmd-_tail+4,rt,2);

memcpy(str→cmd_tail+6,”0D0A”,4);

memcpy(cmd,str,sizeof(*str));

4.1.2服务器与手机通信

服务器与手机客户端采用Http协议进行通信,客户端直接通过调用服务器的CGI程序来对家电节点进行监控。服务器与手机之间的数据传输采用JSON数据格式。服务器与手机之间的JSON格式如下:

发送JSON数据格式

{“telephoneID”:“xxx”,//手机ID

“phoneNumber”:“xxx”,//手机号

“imei”:”xxx”,//手机IMEI

“versionID”:“xxx”,//服务器数据版本号

“deviceID”:”xxx”,//要操控的设备ID

“commandType”:”XX”,//操作类型编码

“command”:”xx”//操作码

}

服务器回复格式

{“telephoneID”:“xxx”,

“versionID”:“xxx”,

“deviceID”:”xxx”,

“commandType”:” XX”,

“result”:”xxx”//返回值

}

4.2消息队列管理技术

手机控制节点,服务器在将手机端传过来的JSON数据按照协议格式生成命令字符串后,会先将字符串存储到数据库中名为server的队列中,然后子进程再去读取,子进程读取到数据后等待串口空闲的时候再将其发送到串口,最后传给协调器。由于此种办法会造成较大的延迟,同时当有多个操作时,数据库里会有多个操作命令队列,会造成一定的操作混乱,因此系统采用改进的队列管理方法。首先服务器采用了堵塞方式去发送队列。当两条队列数据发送时间间隔过小时,则暂缓发送下一条数据,只有当一条队列数据完全发送出去后才会发送下一条队列,这能减少数据库的访问次数,从而有效减小操作延迟时间。其次每次从队列中读取到一条数据后,就将这条数据保存在本地,同时从数据库server队列中删除这条数据,保证队列中只有一条数据,这样操作就不会产生混乱。算法如下:采用Linux中time函数来获取当前系统时间。

输入:数据库指针C,串口号portno

输出:无

static time_t t_now,t_old=0;

char sf[63];

time(&t_now);

if(Readlist(c,”server”,1,sf)==0)//从队列中读取数据

{

if((t_now-t_old)<1) usleep(200000);

ComWrt(portno,sf,31);//发送到串口

t_old=t_now;

}

5智能家居服务器实现与测试

智能家居服务器采用Cubieboard;系统使用Lubuntu系统,数据库采用Redis数据库,Beb服务器使用小巧的Boa服务器;手机客户端基于Android系统编写;网页采用HTML语言编写。测试采用华为Android手机。在整个测试运行过程中,外接LED正常闪烁提示用户运行情况。

5.1网页端的实现

5.1.1系统家电显示

在浏览器中输入智能家居服务器的网络地址,便可以访问服务器,网页每隔5 s便可刷新一次,实时显示当前系统中所有的家电节点的详细信息,并可对断线的家电节点以及刚上线的节点以不同颜色显示。用户可以对各个节点进行修改,删除以及恢复出厂设置。

图5 家电节点显示

5.1.2配置节点

在网页上可对家电节点的信息进行修改以及配置,如图6所示。

图6 系统配置界面

5.2手机端实现

5.2.1手机端数据显示

手机客户端登录时,会先获取服务器中所有已有节点的最新的状态信息,并在客户端界面上予以显示,如图7所示。在手机客户端可控制各个在线节点,并在收到服务器返回的反馈信息后,显示节点当前状态。

图7 手机端实现

5.2.2手机端时间测试

智能家居系统优劣的一个主要标准是手机控制所产生的延迟时间,在未采用消息队列管理机制前,延迟时间较大,改进后,经过测试发现,延迟时间明显变小,两次10组测试数据如表1和表2所示。

表1 原节点延迟时间表 s

表2 改进后节点延迟时间表 s

将两次10组测试数据计算出平均值,画出折线图如图8所示。

图8 改进前后延迟时间比较

从表2及图8可看出,经过改进后,控制延迟时间明显减小。

6结束语

本文基于ARM,ZigBee,GSM等技术,对智能家居嵌入式服务器技术进行了设计与研究。服务器自主运行无需人工干预;手机客户端随时随地监控家电节点;根据场景模式,系统根据家庭情况智能调节家电节点;改进了消息队列管理方式,使得操作延迟时间大幅减小;在安全性方面,设计了安全的数据协议,保证了命令字符串安全正确的送达;节点所有数据存放在本地服务器,不依赖于第三方平台;每个访问服务器的手机端都需要先在网页端注册,拒绝非法访问。实验结果表明,该嵌入式软件系统基本完成了智能家居服务器的功能,具有很好的实用价值。下一步的工作是优化场景控制模式,完善智能控制策略,实现无错控制;继续提高安全性,对传输数据采用加密传输。

参考文献

[1]宁焕生,徐群玉.全球物联网发展及中国物联网建设若干思考[J].电子学报,2010,38(11):2590-2599.

[2]尹纪庭,袁佳,焦志曼,等.基于ARM和ZigBee的智能家居控制系统研究与开发[J].计算机测量与控制,2013,21(9):2451-2454.

[3]闵丽娟,卢捍华,王亚石.智能开关照明控制系统中的上位机软件设计[J].计算机工程,2011,37(22):290-293.

[4]陈超,罗楠稀,冯璐.智能家居无线传感器网络网关设计与开发[J].现代电信科技,2012(5):11-15.

[5]Durrett J B,Burnell L J,Priest J W.A hybrid analysis and architectural design method of development of smart home components[J].IEEE Transactions on Wireless Communications,2002,9(6):85-91.

[6]李治斌,邓小芳,张余明,等.基于ZigBee技术的智能调光开关设计[J].传感器与微系统,2014,33(1):60-63.

[7]陈帅,钟先信,刘积学,等.基于GPRS的智能家居安全监控[J].计算机测量与控制,2011,19(2):326-328.

[8]宋冬,廖杰,陈星,等.基于ZigBee和GPRS的智能家居系统设计[J].计算机工程,2012,38(23):243-246.

[9]吴佳兴,李爱国.基于云计算的智能家居系统[J].计算机应用与软件,2013,30(7):240-243.

[10]陈慕君,张剑锋,李春雨.一种云平台智能家居系统设计与实现[J].计算机测量与控制,2014,22(10):3392-3395.

[11]陈海旺,张振娟,黄明.智能家居中无线智能插座系统设计[J].电视技术,2013,37(21):80-83.

[12]Yuan X R,Peng S G.A research on secure smart home based on the Internet of things[C].Wuhan:IEEE International Conference on Information Science and Technology,IEEE,2012.

[13]张荣荣,李彬,邹小平,等.基于BOA服务器的智能家居控制系统设计[J].北京信息科技大学学报,2013,28(4):88-92.

Design of and Research on Independent and Security Intelligent Home Server System

ZHOU Chengming1,WU Chunxue1,LI Rui1,YANG Guisong1,WU Zhigang2

(1.School of Optical-Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai 200093,China;2.Dongguan Anhui Electronics Co.,Ltd.,Dongguan 523000,China)

AbstractA secure intelligent home system combining Android,ZigBee,GSM and sensor technology is designed.The sensor node is responsible for collecting information of home appliances,ZigBee for the transmission and the ARM server for processing the information,the GSM module for sending alarm message,while the Android client for displaying the status of appliances and control home appliances.With the real-time and security requirements in mind,we focus on the server’s hardware communication,guardian process,data receiving and parsing,and message queue management.The experimental results show that household appliances control can be realized mobile phone with little delay.The system run on its own without human intervention.The data is stored in the local server,not through the others;each time the user logs on to the server,the server will check the number,password and IMEI,and thus security is guaranteed.

Keywordsintelligent home;customize security;server;data analysis;message queue management

中图分类号TP273.5;TP368.2

文献标识码A

文章编号1007-7820(2016)04-079-05

doi:10.16180/j.cnki.issn1007-7820.2016.04.021

作者简介:周成明(1991—),男,硕士研究生。研究方向:物联网与嵌入式。邬春学(1964—),男,教授。研究方向:物联网与计算机控制技术。

基金项目:国家自然科学基金资助项目(61202376);上海市教委晨光计划基金资助项目(10CG49);上海市研究生创新基金资助项目(JWCXSL1402)

收稿日期:2015- 08- 16

猜你喜欢
智能家居服务器
基于PLC的智能家居控制系统研究
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
基于Zigbee的无线通信技术在智能家居中的应用
智能家居发展或将实现弯道超车
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
关于智能家居真正需求的探讨
智能家居的发展趋势分析