基于多线程的智能家居控制软件应用分析

2014-03-06 09:40袁晓磊张福东李帅华李剑锋
河北电力技术 2014年2期
关键词:线程智能家居短信

袁晓磊,彭 钢,马 瑞,张福东,李帅华,李剑锋

(国网河北省电力公司电力科学研究院,石家庄 050021)

家居的智能化技术[1-2]涉及到现代信息、网络、通信、计算机、自动控制等多项技术[3-6]。以下提出的智能家居系统是以ARM-Linux嵌入式架构为核心主机[7-9],对下通过无线射频网络或RS485网络与各家居子系统通信,实现设备控制和报警信息的采集;对上通过Internet网络或GPRS短信接收来自用户智能手机或平板电脑上运行的终端软件所发出的控制指令,上传报警信息,从而全面实现智能家居的灯光控制、家电控制、情景模式、安防报警等各项功能。在软件实现上,基于Linux多任务操作系统在一个进程中多个线程并发运行,按照功能划分的不同,每个线程实现一种特定功能;线程间通过全局变量数组传递信息,通过互斥(Mutex)保护共享数据的完整性,实现了软件功能的模块化以及软件运行的高效性和实时性。

1 系统硬件总体架构

智能家居主机共使用了3个CPU,主CPU采用基于ARM核的AT91SAM9263,运行Linux 2.6.3操作系统;2个从CPU都采用PIC16F1829。

主CPU具有片上的以太网控制器和多个异步串行口,通过以太网口接收来自Internet的用户控制指令;通过串口COM1将用户的控制指令发给设备控制从CPU,进而通过射频网络(如433 MHz)将控制命令传给各智能控制单元(智能插座、智能开关、智能电动窗帘、智能电动开窗器等);通过串口COM2与安防系统的从CPU通信,以接收来自射频网络(如315 MHz)的安防报警信息(门磁、红外、烟感、煤气泄露等);通过COM3口与GPRS模块通信,向用户手机发送安防报警短信或安防照相机拍照彩信,同时接收设备控制短信;通过COM4口与安防照相机通信,实现短信召唤拍照功能。智能家居主机系统架构如图1所示。

图1 智能家居主机系统架构

2 Linux控制进程架构

基于以上ARM主CPU架构,在Linux多任务操作系统上开发了智能家居控制软件进程,采用多线程并发运行方式,共创建了5个线程:主线程(起始线程/433 MHz射频控制命令发送)、433 MHz射频设备状态接收线程、315 MHz射频安防报警接收线程、UDP控制命令接收/设备状态更新线程、安防报警/短信控制线程。各线程通过进程中定义的int型全局数组变量交换数据,数组划分为3个不同的数据区:控制命令区、设备状态区、安防报警状态区,从而实现控制命令的下传和报警信息向用户终端(智能手机或平板电脑)的上传。Linux控制进程多线程软件架构如图2所示。

图2 Linux控制进程多线程软件架构

3 系统功能及实现

3.1 主线程

主线程是初始线程,由它完成所有硬件的初始化(包括COM1、COM2、COM3、COM4 4个串行口设置,UDP Socket的设置)、共享全局变量的初始化(包括控制命令区、设备状态区、安防报警状态区),然后创建其它4个线程,最后进入主循环,负责通过433 MHz无线射频网络向智能控制单元(如智能插座、智能开关、智能开窗通风设备等)发送控制指令,其软件控制流程如图3所示。

3.2 433 MHz射频设备状态接收线程

设备状态接收线程不断监视并读取COM1口的串口输入缓冲区,如果有正确的数据帧,进行解析,并将各设备状态(如灯的开关状态、智能插座的通断状态等)存入共享全局变量数组的设备状态区,供UDP状态上报线程读取并发往用户终端。线程的软件流程如图4所示。

3.3 315 MHz射频安防报警接收线程

安防报警状态接收线程不断监视并读取COM2口的串口输入缓冲区,如果有正确的数据帧,进行解析,并将各安防报警状态(如门磁、红外、烟感、燃气泄露等)存入共享全局变量数组的安防报警状态区,供UDP状态上报线程读取并发往用户终端。线程的软件流程如图5所示。

图3 主线程软件控制流程

图4 433 MHz射频设备状态接收线程软件流程

3.4 UDP控制命令接收/设备状态更新线程

UDP控制命令接收线程不断监视并读取UDP Socket的输入缓冲区,如果有正确的数据帧,进行解析,并将控制命令存入共享全局变量数组的控制命令区,供主线程读取并通过433 MHz射频对各类家居设备实施控制;另外,每隔固定间隔,通过UDP Socket写入设备状态帧,由远方智能终端接收后完成用户界面设备状态的更新。线程的软件流程如图6所示。

图5 315 MHz射频安防报警接收线程软件流程

图6 UDP控制命令接收/设备状态更新线程软件流程

3.5 安防报警/短信控制线程

安防报警/短信控制线程定时读取共享全局变量数组的安防报警状态区,并通过GPRS调制解调模块SIM900短信发往用户智能终端;同时,该线程也读取来自用户终端的短信命令,写入公共内存的命令区,供主线程读取、执行,如用户命令为彩信拍照,则通过COM4口启动安防照相机拍照,将图像数据通过SIM900以彩信的方式发往用户手机。线程的软件流程如图7所示。

图7 安防报警/短信控制线程软件流程

3.6 线程间共享数据保护

在控制进程中,多个线程有可能并发访问共享数据区,为了保护数据的完整性,采用了互斥(Mutex)机制保证同时只能有一个线程对共享数据区进行读写操作。

在进程中使用了静态分配的互斥量,其定义及初始化代码如下:

在各线程中,访问共享数据前,首先调用pthread_mutex_lock函数,对互斥量加锁,然后再对共享数据进行访问,访问结束,调用pthread_mutex_unlock函数,对互斥量解锁,其它线程才可对共享区访问,保证数据的完整性。

共享区访问代码如下:

4 应用情况及效果

该软件结构构成的核心主机,配套相应的智能家居外围设备,已在石家庄某楼盘实施应用。实施规模为60套房(2个单元,每个单元30套),每套房安装智能开关、智能插座等433 MHz射频控制设备和门磁、红外、烟气、煤气等315 MHz射频安防报警模块,每户安装安防彩信照相机一部,每户配主机一部,通过路由器接入Internet。

为了测试运行效果,在主机上运行了测试程序用于统计设备控制、短信报警、彩信报警的成功率(对于设备控制,收到被控设备反馈为成功,否则为失败;对于安防报警,报警信息发出后收到用户终端反馈为成功,否则为失败)。经过1年的运行,合并各主机的统计结果,得出数据如下:设备控制成功率>99.5%;短信报警成功率>99.6%;彩信报警成功率>99.1%。

由此可见,智能家居系统在该小区实际应用中运行稳定,设备控制、安防报警成功率高于99%,设备运行可靠。

5 结论

智能家居控制软件基于ARM-Linux构架,充分利用了操作系统的多任务能力,采用多线程并发运行方式,充分利用了CPU硬件资源,软件运行效率更高,对用户命令的响应以及状态更新更加实时。Mutex机制保证了线程间共享数据的完整性,系统软件运行稳定可靠。与当前智能家居、安防同类产品相比,该软件构架有以下优点:

a.软件构架在开发阶段采用了统一可复用结构[10],无缝融合了包括射频网络、串口网络、以太网在内的各种不同网络;软件采用模块化结构,扩展性强,不同线程负责不同功能,不同设备的通信代码按相同标准编写成库函数,可重复调用,设备信息、状态信息在公共内存区以关系数据库形式存在,为用户终端的客户端界面进行自由设备组态打下了坚实基础。

b.基于多线程的并发运行机制,使用一个SIM卡完成了短信报警、短信控制、彩信报警等多种功能,减少了电信资费,为用户提供了方便。

c.该软件结构在智能家居控制的实际应用中,性能稳定、功能可靠、扩展性强。

[1] 周 洪,胡文山,张立明,等.智能家居控制系统[M].北京:中国电力出版社,2006.

[2] 马鸿雁,张少军,张琼霖.无线网络的智能家居中的应用[J].北京建筑工程学院学报,2004,20(4):31-35.

[3] 焦尚彬,宋 丹,张 青,等.基于ZigBee无线传感器网络的煤矿监测系统[J].电子测量与仪器学报,2013,27(5):436-442.

[4] 李 源,祁 欣.基于GPRS的地表水远程在线监测系统研究[J].电子测量技术,2013,36(12):118-122,128.

[5] 周 伟,石为人,张洪德,等.无线传感器网络的分布式目标跟踪研究[J].仪器仪表学报,2013,34(7):1485-1491.

[6] 孙 伟,王建平,穆道明,等.基于服务质量的无线传感器网络MAC协议模型研究[J].电子测量与仪器学报,2013,27(4):372-380.

[7] 林 涛,耿 壮.多线程技术在嵌入式数据采集系统中的应用[J].自动化博览,2006,23(1):49-50.

[8] 田 泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版,2005.

[9] 马春鸣.基于ARM处理器的嵌入式系统实现[M].北京:北京邮电大学,2005.

[10] 胡 婷,于成铭.基于平台化的数据采集分析系统的设计与实现[J].国外电子测量技术2013,32(12):87-90.

猜你喜欢
线程智能家居短信
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
基于PLC的智能家居控制系统研究
道歉短信
基于Zigbee的无线通信技术在智能家居中的应用
代发短信
浅谈linux多线程协作
关于智能家居真正需求的探讨
智能家居更贴心
“八一”节日短信之一