基于Raspberry Pi的家庭远程监控系统
曹晓华 郑宇航 陈波 崔传金
关键词: 智能家居; Raspberry Pi; 人机交互; Python; 家庭监控系统; 家电控制
中图分类号: TN948.64?34; TB73.6 ? ? ? ? ? ? ? ?文献标识码: A ? ? ? ? ? ? ? ? 文章编号: 1004?373X(2019)04?0042?03
Home remote monitoring system based on Raspberry Pi
CAO Xiaohua, ZHENG Yuhang, CHEN Bo, CUI Chuanjin
(School of Electrical Engineering, North China University of Science and Technology, Tangshan 063210, China)
Abstract: A home remote monitoring system is designed in this paper combining the strong development function of the card computer Raspberry Pi and the convenience of personal WeChat subscription number. Taking the C/S architecture as the basis, the Python as the development language, and the Raspberry Pi as the platform, the system is designed by means of collaborative working of multiple sensors, with the WeChat application as the core human?machine interaction terminal and the Yeelink APP as the accessory terminal. The system can not only realize the home monitoring functions of surveillance and recording in the traditional sense, but also realize the household appliances control function, weather query function, personal blog service and cloud disk service, so as to develop the rich resources of the Raspberry Pi to the largest extent. Two monitoring schemes of the monitoring function are designed, including the real?time monitoring and intelligent monitoring. The design method with dual?terminal of WeChat subscription number and Yeelink provides users with more selections. The communication design between NodeMCU and Raspberry Pi is the highlight of the remote control function.
Keywords: smart home; Raspberry Pi; human?machine interaction; Python; home monitoring system; household appliances control
本系统是在智能化家居快速发展的背景下,结合Raspberry Pi卡片电脑强大的开发功能和个人微信订阅号的便捷性,所设计的一种远程家庭监控系统。功能和系统结构都是独创且具有实用价值的,是以C/S(Client/ Server)架构为基础,使用Python语言开发的,以Raspberry Pi为平台的,多传感器协同工作的,以微信应用为核心人机交互终端的,以Yeelink APP为辅助终端的家庭远程监控系统系统。1 ?主要研究内容
文中设计以C/S架构为基础的家庭远程监控系统,采用搭载Raspbian系统的Raspberry Pi3B型板作為家庭主服务器,也就是本系统的S(Server)部分,负责数据的收集、处理、传输等诸多功能。另外利用板上的40个GPIO口,驱动必要的传感器增加功能;并利用Yeelink云平台,使用Python的requests库,使本系统接入Yeelink云,以POST方法按一定间隔上传家庭环境数据,以GET方法按一定时间间隔获取用电器开关情况等。
本次设计的C(client)部分,由微信客户端构成,利用一个几乎智能机必备的社交软件,可以完成对家庭内环境的监测、图片的采集、用电器的开关控制等一系列功能。为了拓展此系统的实用性,引入NodeMCU的硬件部分,采用ESP8266WiFi芯片实现对家庭内部电器的远程控制。此外Socket编程实现数据无线传输,采用UDP传输协议,确保传输的及时性。针对目前大环境下个人家庭网络不具备外网IP的情况,用Ngrok服务器反向代理,通过创建Tunnel隧道,映射特定端口号到外网服务器,可确保系统的通用性。家庭远程监控系统结构简图如图1所示。
2 ?系统实现的功能及先进性
1) 系统层面将实现的功能有:使用Raspberry Pi驱动DHT11传感器收集室内温湿度数据;使用Raspberry Pi的摄像头模块采集室内图像;使用NodeMCU与Raspberry Pi建立Socket通信,实现局域网下的远程控制;使热释电人体感应传感器可以触发Raspberry Pi的程序事件,进而实现自动抓拍;使Raspberry Pi与外网服务器建立Ngrok隧道连接,并映射必要端口到外网环境。
2) 系统的先进性。传统的家庭监控往往是利用家庭监控网络摄像机,让人远程了解自己的家庭状况。在本系统中,用户不仅仅可以通过微信客户端实时查看家庭内静态照片和家庭内温湿度情况,还可以控制家庭内的用电器开关,查看用电器的开关状态,做到了同时具有监测和控制两大功能。
在硬件上采用Raspberry Pi为开发基础,而不是使用硬件结构更为简单的单片机。在用户界面,采用微信订阅号来实现,解决了传统家庭监控系统用户需要通过在电脑端才能查看监控信息的问题。利用微信这一几乎人人手机上都有的软件,使得每一个人在使用此远程家庭监控系统时都得心应手,大大优化了此系统的易用性。
3 ?系统的结构设计
系统结构按功能划分分为服务器和中央控制器两大部分。服务器功能部分主要是在Raspberry Pi上运行的三类服务,这三类服务将24 h不间断运行。系统结构功能划分图如图2所示。
其中,Yeelink服务主要是提供数据的上传与远程控制服务,负责将环境数据上传到Yeelink云平台,方便用户查看、统计和控制。Apache服务是一个网页服务,主要是提供系統中Owncloud云盘和Wordpress博客的功能,这两个功能算是除在家庭远程控制功能之外的实用附加功能。微信服务器则由Python代码编写,利用Web库打造的轻量网络服务,可以使用户通过微信订阅号与系统进行友好的交互,实现如查看服务器运行状态,查看天气情况,控制用电器状态等一系列强大功能。
中央控制器功能部分,是Raspberry Pi作为一个硬件控制中心所实现的功能,它所提供的服务不是不间断运行的,而是作为事件触发来实现功能。其中,可以通过Raspberry Pi上的40个GPIO口连接多种传感器,如用到的DHT11温湿度传感器,对GPIO口的控制可以通过Python的GPIO库来实现,来对环境中的数据进行采集处理。图像采集通过Raspberry Pi上的板载CAMERA接口来实现。通过运行命令即可抓拍制定分辨率大小的照片。Socket编程是实现网络数据传输的一种方法,也是本系统中采用的Raspberry Pi与NodeMCU的通信方法,使NodeMCU与Raspberry Pi处于同一局域网下,通过UDP协议编程即可实现Raspberry Pi对NodeMCU的任意I/O口的电平控制。另外由于UDP协议的特性,NodeMCU与Raspberry Pi之间不需要一直保持通信连接,当需要连接时,由客户端直接向服务端请求连接即可。4 ?系统软件部分程序设计
软件主要包括:DHT11传感器的驱动方法;NodeMCU与Raspberry Pi的Socket通信编程;实现了Raspberry Pi远程控制NodeMCU的引脚状态等,以此完成了本系统远程控制的功能。接下来是针对服务的编程。首先是Yeelink云服务的编程,将Raspberry Pi处理的数据传输到Yeelink云平台,并通过Yeelink终端控制家庭用电器。其次是微信订阅号的后台设计,XML字符串的解析方法,并可以通过XML字符串解析的内容做出相应的反应,鉴于篇幅不再赘述。5 ?系统功能测试
打开Yeelink客户端,进入控制界面,可以查看Raspberry Pi的CPU温度、室内温度、室内湿度、室内照片等数据,也可以控制各用电器开关,远程开关等。对于照片开关这一特殊功能开关,打开之后可以使Raspberry Pi每5 s拍1张照片,并上传到Yeelink云平台,通过室内照片可以查看这些照片,并且所有的历史照片都会被保留。这个功能是作为手动家庭远程监控功能使用,以便在用户离开家之后,对家庭内部做出实时监控。对于家庭监视状态这一特殊开关,打开之后使热释电人体传感器进入监视状态,当检测到有人活动时,热释电人体传感器会触发Raspberry Pi相机模块,每10 s会抓拍一张照片,并上传到Yeelink云平台,同样的,通过室内照片可以查看这些照片。这个功能是作为自动家庭远程监控功能使用,以便在用户离开家之后,对家庭内部做出自动高效的监控。在本系统中,提出双终端的控制办法,两种控制终端都可以完美实现系统中的功能,并且各有优势,相辅相成,为系统增加了更多的人性化设计,大大拓展了实用性和易用性。6 ?结 ?语
系统在实现传统意义上的家庭监控功能之外,如监视和记录等,还增加了家庭电器的控制功能、天气查询功能、个人博客和云盘的服务,最大限度开发了Raspberry Pi的丰富资源供用户使用。而且为监控功能设计了两种监控方案,包括实时监控与智能监控,另外微信订阅号,Yeelink双终端的设计方法,也为用户提供了更多的选择。针对微信订阅号服务对外网的要求也一并提出了解决方案,端口映射和反向代理,可供用户按情况选择。NodeMCU也是系统的亮点之处,MicroPython固件的烧录使其具有简单高效的开发环境,同时也统一了本次设计的系统的开发语言,降低了后期系统的调试和维护难度。
参考文献
[1] 唐彧,刘丽军.基于Raspberry Pi的智能家庭监控系统设计[J].福建电脑,2015,31(9):114?115.
TANG Yu, LIU Lijun. Design of intelligent home monitoring system based on Raspberry Pi [J]. Fujian computer, 2015, 31(9): 114?115.
[2] 朱磊.基于无线传感网的环境监测数据收集的设计与实现[D].苏州:苏州大学,2013.
ZHU Lei. Design and implementation of environmental monitoring data collection based on wireless sensor network [D]. Suzhou: Soochow University, 2013.
[3] 蔡燕敏,孔维通.基于树莓派网络监控系统的研究[J].实验室科学,2015,18(6):87?90.
CAI Yanmin, KONG Weitong. Research of network monitoring system based on Raspberry Pi [J]. Laboratory science, 2015, 18(6): 87?90.
[4] MONK S. Raspberry PI cookbook [M]. Sebastopol: OReilly Media Inc., 2014.
[5] 林巧生,赵育林.基于开源硬件和物联网云平台的远程控制应用[J].湖南工业大学学报,2016,30(1):64?69.
LIN Qiaosheng, ZHAO Yulin. Remote control application based on open?source hardware and cloud platform of Internet of Things [J]. Journal of Hunan University of Technology, 2016, 30(1): 64?69.
[6] 郑世珏,徐虹.基于Raspberry Pi的远程监测系统的设计与实现[J].微型机与应用,2014,33(19):105?107.
ZHENG Shijue, XU Hong. Design and implementation of remote monitoring system based on Raspberry Pi [J]. Microcomputer & its applications, 2014, 33(19): 105?107.
[7] KO P. Practical developing guide for Raspberry Pi [M]. Beijing: Tsinghua University Press, 2015.
[8] 樊振宇,戴小鹏,彭心雨,等.基于Raspberry Pi的智能家居監控系统的设计[J].福建电脑,2016,32(9):11?13.
FAN Zhenyu, DAI Xiaopeng, PENG Xinyu, et al. Design of smart home monitoring system based on Raspberry Pi [J]. Fujian computer, 2016, 32(9): 11?13.
[9] 刘城龙.基于监控的智能家居系统设计与实现[D].长春:吉林大学,2015.
LIU Chenglong. Design and implementation of smart home system based on monitoring [D]. Changchun: Jilin University, 2015.
[10] SHAH D, HARADI V. IoT based biometrics implementation on Raspberry Pi [J]. Procedia computer science, 2016, 79: 328?336.
关键词: 智能家居; Raspberry Pi; 人机交互; Python; 家庭监控系统; 家电控制
中图分类号: TN948.64?34; TB73.6 ? ? ? ? ? ? ? ?文献标识码: A ? ? ? ? ? ? ? ? 文章编号: 1004?373X(2019)04?0042?03
Home remote monitoring system based on Raspberry Pi
CAO Xiaohua, ZHENG Yuhang, CHEN Bo, CUI Chuanjin
(School of Electrical Engineering, North China University of Science and Technology, Tangshan 063210, China)
Abstract: A home remote monitoring system is designed in this paper combining the strong development function of the card computer Raspberry Pi and the convenience of personal WeChat subscription number. Taking the C/S architecture as the basis, the Python as the development language, and the Raspberry Pi as the platform, the system is designed by means of collaborative working of multiple sensors, with the WeChat application as the core human?machine interaction terminal and the Yeelink APP as the accessory terminal. The system can not only realize the home monitoring functions of surveillance and recording in the traditional sense, but also realize the household appliances control function, weather query function, personal blog service and cloud disk service, so as to develop the rich resources of the Raspberry Pi to the largest extent. Two monitoring schemes of the monitoring function are designed, including the real?time monitoring and intelligent monitoring. The design method with dual?terminal of WeChat subscription number and Yeelink provides users with more selections. The communication design between NodeMCU and Raspberry Pi is the highlight of the remote control function.
Keywords: smart home; Raspberry Pi; human?machine interaction; Python; home monitoring system; household appliances control
本系统是在智能化家居快速发展的背景下,结合Raspberry Pi卡片电脑强大的开发功能和个人微信订阅号的便捷性,所设计的一种远程家庭监控系统。功能和系统结构都是独创且具有实用价值的,是以C/S(Client/ Server)架构为基础,使用Python语言开发的,以Raspberry Pi为平台的,多传感器协同工作的,以微信应用为核心人机交互终端的,以Yeelink APP为辅助终端的家庭远程监控系统系统。1 ?主要研究内容
文中设计以C/S架构为基础的家庭远程监控系统,采用搭载Raspbian系统的Raspberry Pi3B型板作為家庭主服务器,也就是本系统的S(Server)部分,负责数据的收集、处理、传输等诸多功能。另外利用板上的40个GPIO口,驱动必要的传感器增加功能;并利用Yeelink云平台,使用Python的requests库,使本系统接入Yeelink云,以POST方法按一定间隔上传家庭环境数据,以GET方法按一定时间间隔获取用电器开关情况等。
本次设计的C(client)部分,由微信客户端构成,利用一个几乎智能机必备的社交软件,可以完成对家庭内环境的监测、图片的采集、用电器的开关控制等一系列功能。为了拓展此系统的实用性,引入NodeMCU的硬件部分,采用ESP8266WiFi芯片实现对家庭内部电器的远程控制。此外Socket编程实现数据无线传输,采用UDP传输协议,确保传输的及时性。针对目前大环境下个人家庭网络不具备外网IP的情况,用Ngrok服务器反向代理,通过创建Tunnel隧道,映射特定端口号到外网服务器,可确保系统的通用性。家庭远程监控系统结构简图如图1所示。
2 ?系统实现的功能及先进性
1) 系统层面将实现的功能有:使用Raspberry Pi驱动DHT11传感器收集室内温湿度数据;使用Raspberry Pi的摄像头模块采集室内图像;使用NodeMCU与Raspberry Pi建立Socket通信,实现局域网下的远程控制;使热释电人体感应传感器可以触发Raspberry Pi的程序事件,进而实现自动抓拍;使Raspberry Pi与外网服务器建立Ngrok隧道连接,并映射必要端口到外网环境。
2) 系统的先进性。传统的家庭监控往往是利用家庭监控网络摄像机,让人远程了解自己的家庭状况。在本系统中,用户不仅仅可以通过微信客户端实时查看家庭内静态照片和家庭内温湿度情况,还可以控制家庭内的用电器开关,查看用电器的开关状态,做到了同时具有监测和控制两大功能。
在硬件上采用Raspberry Pi为开发基础,而不是使用硬件结构更为简单的单片机。在用户界面,采用微信订阅号来实现,解决了传统家庭监控系统用户需要通过在电脑端才能查看监控信息的问题。利用微信这一几乎人人手机上都有的软件,使得每一个人在使用此远程家庭监控系统时都得心应手,大大优化了此系统的易用性。
3 ?系统的结构设计
系统结构按功能划分分为服务器和中央控制器两大部分。服务器功能部分主要是在Raspberry Pi上运行的三类服务,这三类服务将24 h不间断运行。系统结构功能划分图如图2所示。
其中,Yeelink服务主要是提供数据的上传与远程控制服务,负责将环境数据上传到Yeelink云平台,方便用户查看、统计和控制。Apache服务是一个网页服务,主要是提供系統中Owncloud云盘和Wordpress博客的功能,这两个功能算是除在家庭远程控制功能之外的实用附加功能。微信服务器则由Python代码编写,利用Web库打造的轻量网络服务,可以使用户通过微信订阅号与系统进行友好的交互,实现如查看服务器运行状态,查看天气情况,控制用电器状态等一系列强大功能。
中央控制器功能部分,是Raspberry Pi作为一个硬件控制中心所实现的功能,它所提供的服务不是不间断运行的,而是作为事件触发来实现功能。其中,可以通过Raspberry Pi上的40个GPIO口连接多种传感器,如用到的DHT11温湿度传感器,对GPIO口的控制可以通过Python的GPIO库来实现,来对环境中的数据进行采集处理。图像采集通过Raspberry Pi上的板载CAMERA接口来实现。通过运行命令即可抓拍制定分辨率大小的照片。Socket编程是实现网络数据传输的一种方法,也是本系统中采用的Raspberry Pi与NodeMCU的通信方法,使NodeMCU与Raspberry Pi处于同一局域网下,通过UDP协议编程即可实现Raspberry Pi对NodeMCU的任意I/O口的电平控制。另外由于UDP协议的特性,NodeMCU与Raspberry Pi之间不需要一直保持通信连接,当需要连接时,由客户端直接向服务端请求连接即可。4 ?系统软件部分程序设计
软件主要包括:DHT11传感器的驱动方法;NodeMCU与Raspberry Pi的Socket通信编程;实现了Raspberry Pi远程控制NodeMCU的引脚状态等,以此完成了本系统远程控制的功能。接下来是针对服务的编程。首先是Yeelink云服务的编程,将Raspberry Pi处理的数据传输到Yeelink云平台,并通过Yeelink终端控制家庭用电器。其次是微信订阅号的后台设计,XML字符串的解析方法,并可以通过XML字符串解析的内容做出相应的反应,鉴于篇幅不再赘述。5 ?系统功能测试
打开Yeelink客户端,进入控制界面,可以查看Raspberry Pi的CPU温度、室内温度、室内湿度、室内照片等数据,也可以控制各用电器开关,远程开关等。对于照片开关这一特殊功能开关,打开之后可以使Raspberry Pi每5 s拍1张照片,并上传到Yeelink云平台,通过室内照片可以查看这些照片,并且所有的历史照片都会被保留。这个功能是作为手动家庭远程监控功能使用,以便在用户离开家之后,对家庭内部做出实时监控。对于家庭监视状态这一特殊开关,打开之后使热释电人体传感器进入监视状态,当检测到有人活动时,热释电人体传感器会触发Raspberry Pi相机模块,每10 s会抓拍一张照片,并上传到Yeelink云平台,同样的,通过室内照片可以查看这些照片。这个功能是作为自动家庭远程监控功能使用,以便在用户离开家之后,对家庭内部做出自动高效的监控。在本系统中,提出双终端的控制办法,两种控制终端都可以完美实现系统中的功能,并且各有优势,相辅相成,为系统增加了更多的人性化设计,大大拓展了实用性和易用性。6 ?结 ?语
系统在实现传统意义上的家庭监控功能之外,如监视和记录等,还增加了家庭电器的控制功能、天气查询功能、个人博客和云盘的服务,最大限度开发了Raspberry Pi的丰富资源供用户使用。而且为监控功能设计了两种监控方案,包括实时监控与智能监控,另外微信订阅号,Yeelink双终端的设计方法,也为用户提供了更多的选择。针对微信订阅号服务对外网的要求也一并提出了解决方案,端口映射和反向代理,可供用户按情况选择。NodeMCU也是系统的亮点之处,MicroPython固件的烧录使其具有简单高效的开发环境,同时也统一了本次设计的系统的开发语言,降低了后期系统的调试和维护难度。
参考文献
[1] 唐彧,刘丽军.基于Raspberry Pi的智能家庭监控系统设计[J].福建电脑,2015,31(9):114?115.
TANG Yu, LIU Lijun. Design of intelligent home monitoring system based on Raspberry Pi [J]. Fujian computer, 2015, 31(9): 114?115.
[2] 朱磊.基于无线传感网的环境监测数据收集的设计与实现[D].苏州:苏州大学,2013.
ZHU Lei. Design and implementation of environmental monitoring data collection based on wireless sensor network [D]. Suzhou: Soochow University, 2013.
[3] 蔡燕敏,孔维通.基于树莓派网络监控系统的研究[J].实验室科学,2015,18(6):87?90.
CAI Yanmin, KONG Weitong. Research of network monitoring system based on Raspberry Pi [J]. Laboratory science, 2015, 18(6): 87?90.
[4] MONK S. Raspberry PI cookbook [M]. Sebastopol: OReilly Media Inc., 2014.
[5] 林巧生,赵育林.基于开源硬件和物联网云平台的远程控制应用[J].湖南工业大学学报,2016,30(1):64?69.
LIN Qiaosheng, ZHAO Yulin. Remote control application based on open?source hardware and cloud platform of Internet of Things [J]. Journal of Hunan University of Technology, 2016, 30(1): 64?69.
[6] 郑世珏,徐虹.基于Raspberry Pi的远程监测系统的设计与实现[J].微型机与应用,2014,33(19):105?107.
ZHENG Shijue, XU Hong. Design and implementation of remote monitoring system based on Raspberry Pi [J]. Microcomputer & its applications, 2014, 33(19): 105?107.
[7] KO P. Practical developing guide for Raspberry Pi [M]. Beijing: Tsinghua University Press, 2015.
[8] 樊振宇,戴小鹏,彭心雨,等.基于Raspberry Pi的智能家居監控系统的设计[J].福建电脑,2016,32(9):11?13.
FAN Zhenyu, DAI Xiaopeng, PENG Xinyu, et al. Design of smart home monitoring system based on Raspberry Pi [J]. Fujian computer, 2016, 32(9): 11?13.
[9] 刘城龙.基于监控的智能家居系统设计与实现[D].长春:吉林大学,2015.
LIU Chenglong. Design and implementation of smart home system based on monitoring [D]. Changchun: Jilin University, 2015.
[10] SHAH D, HARADI V. IoT based biometrics implementation on Raspberry Pi [J]. Procedia computer science, 2016, 79: 328?336.