周炳贵, 刘庆楷, 邱 桔
(暨南大学 电气信息学院,广东 珠海 519070)
基于树莓派与微信的室内物联网安防系统
周炳贵, 刘庆楷, 邱 桔
(暨南大学电气信息学院,广东珠海519070)
为实现对室内环境的安防监控,利用传感器和摄像头对室内环境进行数据采集,并通过树莓派将数据上传至服务器或数据库中,供用户通过微信公众平台查看。当室内环境出现异常情况时,微信公众平台自动向用户发送报警信息,并根据时间间隔和异常情况是否得到处理确定是否重新发送报警信息。测试结果表明:系统工作可靠,可移植性高,对室内安防具有重要意义。
物联网技术; 室内安防监控; 传感器阵列; 树莓派; 微信
室内环境的安防问题一直受到重视。随着计算机、通信和微电子技术的飞速发展和人民生活水平的提高,对于室内环境的安全性与可管理性也有了更高的要求[1]。视频监控作为最传统的室内安防手段,在使用中暴露出来的缺点有:缺乏对环境参数如温度,光照强度等的监控,工程量大,成本高,需要人工关注而无法自动报警等。随着物联网、传感器技术、现代通信技术的不断发展,室内安防也得到了飞跃性的发展。嵌入式远程监控安防系统出现并一直向着低功耗、多功能、高性能方向发展[2]。为了实现监控的专业化、自动化,降低成本以及提高安防系统的质量,本文进行了以下尝试:以树莓派为主机,使用传感器阵列与摄像头收集环境参数,以微信作为用户终端,构建了一套可操作性强且成本较低的室内安防系统。
如图1所示,系统由传感器阵列、摄像头、树莓派3B、服务器、微信服务器、微信公众平台6个部分组成。树莓派作为物联网服务器[3,4],一方面负责与传感器阵列和摄像头连接,采集环境数据与拍摄环境图像,另一方面将数据与图像上传至服务器。当用户通过微信公众平台发起菜单事件请求,微信服务器响应这一事件,根据事件请求的类型,或是访问服务器的数据库以读取环境数据,或是要求服务器上传最新的图像到微信服务器,然后将数据转发到用户的微信公众平台。此外,对服务器设置定时任务,使得其每隔一段时间便可以自动检查环境数据,出现危险情况时及时通过微信公众平台的模板消息功能向用户发出警报。服务器使用Linux虚拟主机,价格较为低廉。
图1 系统结构框图
采集的数据分为两种:传感器采集的数值型数据与摄像头拍摄的图像数据。某些室内环境对环境参数的要求很高,尤其存放重要电子设备的场所,环境必须受控,所以,有必要在监控系统中加入检测环境参数传感器[5]。传感器可以选用集成有微处理器的传感器,加装无线串口模块实现与树莓派的通信。采用无线串口模块可以实现在面积较大的室内环境中布置较多的传感器而无需考虑布线问题。本文安防系统使用了5种数值型传感器,分别为光敏传感器、温湿度传感器、烟雾传感器、火焰传感器和人体感应传感器。摄像头一般仅需安装一个,通过USB线直接与树莓派相连即可,也可以通过USB延长线在其他位置安装。软件方面采用的是motion运动捕获软件[6,7],当从摄像头画面中捕获到运动时,软件会拍摄图像并录制视频记录整个运动过程。
3.1 数值型数据
3.1.1 数据接收与辨识
传感器通过无线串口向树莓派发送数据,树莓派将判断串口发来的数据是否正确(有无丢包或错乱等),并判断数据由哪一只传感器发来,将认定为正确的各传感器数据上传至服务器MySQL数据库[8]中。
采用Python程序识别数据长度以及数据中的标识字符(加在传感器数值的前面,与有效数据共同发送),以判断数据有无丢包或错乱,同时确定数据的上传通道。如表1所示为传感器与相应串口数据格式。相较于利用串口号固定各传感器发送数据的上传通道,采用Python脚本判断数据格式确定数据的上传通道更为可靠,因为在故障发生后,失电、再上电,或者插拔无线串口,均可能改变系统识别的串口号,导致数据上传位置错误,甚至造成脚本运行错误,系统无法正常运行。
表1 传感器与相应串口数据格式
注:各‘X’均代表一位数字。
3.1.2 数据上传服务器数据库
就跨国公司而言,他们通常可以在公司的利润中获利,以降低税收,减少投资和盈余。由于跨国公司的价格转移,税收部分通常被定义为相互关联的企业的两个方面。
编写Python脚本将辨识过的数据上传至数据库中指定的表内[9],并加上时间戳,以便确认数据的时效性。如表2所示为数据与数据库相应表名及属性。
表2 数据与数据库相应表名及属性
3.1.3 数值型数据上传程序流程
系统将数据辨识和上传功能结合在一个Python程序中。读取串口数据使用Python提供的pyserial模块,上传数据库使用Python提供的MySQLdb模块。程序的流程如图2所示,图中N为最多被使用的串口数,即传感器数,文中N=5。
图2 数值型数据处理与上传程序流程
3.2 图像数据
系统的图像数据包括两类,摄像头拍摄的图像和摄像头摄录的视频。出于成本考虑,本文安防系统所用的服务器采用低端的虚拟主机,处理速度慢、带宽小,所以图像数据处理时仅将图像通过POST方法[10]上传到服务器,同时新图像将覆盖旧图像。视频数据则仅存储本地,可以访问树莓派的存储卡查看。采用POST方法上传图像可避免大的数据流,对数据库读写造成过大的压力。上传到服务器而不是直接调用微信公众平台的临时素材接口是因为这一接口有5 000次/天的调用限制[11],为了实现更好的监控效果,刷新频率应当足够高,5 000次/天的刷新频率远远不能满足要求。
要用Python实现POST方法上传图像,需要服务器运行服务器端(Server)程序,树莓派运行客户端(Client)程序。服务器端脚本使用Python提供Cgi模块和BaseHTTPRequestHandler模块。客户端脚本使用Python提供的Requests模块。程序流程如图3。
图3 图像上传程序流程
由于图像在云端和本地均仅一张,按时间顺序由新的覆盖将旧的,所以不需要进行特别的管理。
考虑到服务器性能、存储空间的限制、查询数据库的流畅度以及过期数据的重要性不高等原因,通过开启MySQL数据库的事件调度器设置定时事件[12],对3天前的数据在每天6:00进行定时清除。
5.1 功能菜单
功能菜单包含3个主菜单:运动捕获、环境信息、其他数据,其中其他数据主菜单下还有3个子菜单:人体感应、烟雾感应、火焰感应。功能菜单通过调用微信的自定义菜单接口产生[13]。
按下运动捕获菜单,微信服务器将返回安防系统检测到的上一次运动发生时的图像,同时附带时间。
按下环境信息菜单,微信服务器将返回室内光线强度与温湿度信息,同时附带时间。
按下其他数据下的子菜单可以实现烟雾传感器、火焰传感器、人体感应传感器数据查询,确认室内环境安全。
5.2 警报推送
在服务器的指定路径下存储着能够实现警报推送功能的PHP文件,设置crontab定时任务每隔5 s访问该文件一次,该文件将访问数据库查询当前最新的烟雾传感器、人体感应传感器和火焰传感器的数据,如果符合报警条件,将会调用微信的模板消息接口,向指定微信账号发送警报消息。为避免满足报警条件时频繁的警报信息骚扰,在发出警报的同时将向目录下的.json文件中写入当前时间,保证当时间间隔到1 min以上时才会发送第二次警报消息。
实现警报推送功能的PHP程序的流程如图4。
图4 警报推送功能程序流程
图5为系统测试运行情况。系统安装在实验室中进行测试,对室内环境进行了测量,模拟了触发人体警报、烟雾警报和火焰警报的条件,经过测试,证明系统工作可靠,测量数据准确,发送警报即时,对室内安防有重要意义。
图5 系统测试情况
基于树莓派与微信的室内物联网安防系统利用了树莓派微型计算机成本低廉、工作可靠的特点,配合微信服务的稳定性、及时性,实现了室内安防的基本功能,同时保证了数据的隐私性与安全性。系统成本较低、可移植性高,可以根据具体使用的室内环境条件增加硬件,实现更好的服务,对保护人员与财产安全有着重要的意义,具有广阔的市场前景。
[1] 杨国斌,李秋红,王太宏.基于WSNs和3G网络的无线远程安防监控系统[J].传感器与微系统,2012,31(12):76-78,82.
[2] 林飞龙,彭诗瑶.基于多传感器的高性能监控系统设计[J].传感器与微系统,2014,33(2):119-122,126.
[3] 于志强,温志渝,谢瑛珂,等.基于树莓派的多参数水质检测仪控制系统[J].仪表技术与传感器,2015(6):20-23,27.
[4] 关静丽,艾 红,陈雯柏.基于树莓派和Yeelink的开放实验室监控系统设计[J].实验室研究与探索,2017(3):116-119.
[5] 郭 苎,郭晓冉,毛向东,等.基于GSM和WSNs的实验室温湿度采集报警系统设计[J].传感器与微系统,2017,36(8):92-94.
[6] 汪 鑫,彭雨薇.基于树莓派的网络监控系统的研究与实现[J].硅谷,2014,7(14):25-26.
[7] Membrey P,Hows D.树莓派学习指南[M].张志博,孙峻文,译.北京:人民邮电出版社,2014:170-173.
[8] 汪志敏.基于树莓派的智能监控系统设计[J].科技广场,2017(3):89-91.
[9] 杨佩璐,宋 强.Python宝典[M].北京:电子工业出版社,2014:296-299.
[10] 陈 雷,刘嘉勇.基于HTTP协议的POST数据分析与还原[J].通信技术,2011,44(4):132-134,169.
[11] 腾讯微信团队.微信公众平台技术文档[EB/OL].https:∥mp.weixin.qq.com/wiki.
[12] 林 松.工业控制中实时数据库系统的设计与实现[D].福州:福州大学,2006:23-27.
[13] 方倍工作室.微信公众平台开发最佳实践[M].北京:机械工业出版社,2014:68-74.
IndoorIOTsecuritysystembasedonRaspberryPiandWeChat
ZHOU Bing-gui, LIU Qing-kai, QIU Ju
(CollegeofElectricalandInformation,JinanUniversity,Zhuhai519070,China)
Based on Raspberry Pi and WeChat,an interior IOT security system is designed by using sensors array and a camera to monitor the indoor environment.The sensors array and camera are used for data acquisition from indoor environment and Raspberry Pi for uploading collected data to a server or database for users to view through WeChat.Whenever an abnormal situation occurs in indoor environment,WeChat public platform automatically sends alarm information to users.It also determines whether or not to repeat sending alarm information depended on the time interval and whether abnormal conditions are processed.This system is verified to be reliable and portable,which is of great important for indoor security.
Internet of things(IOT)technology; indoor security monitoring; sensors array; Raspberry Pi; WeChat
10.13873/J.1000—9787(2017)11—0109—03
TP 277
A
1000—9787(2017)11—0109—03
2017—09—01
周炳贵(1996-),男,专业方向为电气测量与检测研究,E—mail:466554018@qq.com。
邱 桔(1966-),女,通讯作者,博士,副教授,主要从事软件工程与理论、嵌入式系统相关研究工作, E—mail:t_orange001@jnu.edu.cn。