学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 毕业论文 > 在职硕士论文 > 工程硕士论文 > 软件工程硕士论文

智能家居系统软件设计与实现

来源:学术堂 作者:陈老师
发布于:2017-03-16 共6236字
  第四章 智能家居系统软件设计与实现
  
  在之前的章节中已经介绍了系统的整体架构,家电设备传感器节点设计,数据库的设计,运用到的关键技术和开发流程。完成了系统的整体框架。在这个基础上,将重点研究和设计智能家居系统的终端软件的功能模块。
  
  4.1 智能家居系统软件终端的功能设计导航
  

  根据对智能家居系统的功能需求分析,以及对各个模块的规划设计,初步得到智能家居系统的终端软件功能导航图。由图可知,本系统的主要模块是登录模块,智能控制模块,场景模式模块和安防报警模块,其中设备控制模块又分别包括添加房间,编辑房间和各房间家电控制三种功能。家电控制主要包括灯光控制,窗帘控制等电器的开关控制操作以及温湿度与可燃气体的监测等。图 4-1 为智能家居系统的软件终端导航图。
  
  4.2 智能家居系统软件终端的总体结构设计

        本文的基于 Android 的智能家居系统采用了 Android 开发中经典的 MVC 设计模式。
  
  MVC 是 Model View Controller 的缩写,分别代表模型,视图和控制器[70].MVC 模式的思想是将逻辑、数据以及界面显示三块分开进行代码的编写,把业务逻辑集中在一个结构中,这样做的好处就是,当需要对界面进行修改和用户交互进行更改进时,业务逻辑仍然可以保持原样,减少了很多的重复工作。对数据、业务逻辑进行处理放在 M 层中进行;对界面的结果进行显示则放在 V 层中,将图形界面进行渲染后展现给用户,使用户直观的得到智能家居系统终端软件的反馈结果;C 层是 M 层与 V 层之间的一个桥梁,当用户点击或者发送了各种各样的信息事件时,就由 C 层来接收,控制 V 层与 M 层之间的通信,这样就可以将业务逻辑与界面显示分开考虑。因此 MVC 设计模式具有低耦合的特点,各个代码块之间的影响较少。使得智能家居系统终端软件有了很好的可扩展和维护性。
  
  在本文的系统软件图形界面的交互设计中,包括了用于视图显示的 res 目录和逻辑业务处理的 src 目录,表现出了 MVC 模式设计理念。模块职责分层明确,可维护性强是 MVC模式的主要优点。除了要在设计模式上分层,更要对逻辑层进行分层。对软件项目中的代码进行管理规划才能够使其后期发挥理想的作用。这样可以提高代码结构的直观性并减少后期维护,提高开发效率。图 4-2 是 MVC 的模式设计图。
  
  1.模型层(Model):包含对智能家居系统的控制访问数据操作的方法。定义了房间的属性、电器的属性,还有对属性的操作方法。同时也定义了对数据库表的操作方法。函数之间的相互调用后返回对象实例,然后对数据库进行增删改查,提供基本操作方法及其他系统需要的方法。
  
  2.视图层(View):用户的操作界面。用户界面图形和 Activity 的布局文件存放在res/layout 目录中。
  
  3.控制层(Controller):该层自身并不会输出任何信息,而是用来接收事件,并且对模型层和视图层进行相应的调用来。控制层会接收信息事件然后决定由哪一个模型构建来处理事件,之后再决定由哪一个视图对返回的数据进行显示。用户通过 Activity 就能够与应用软件进行流畅的交互。
  
  在本系统终端软件中,各个模块的 Activity 控制程序通过调用模型层(Model)中的方法来读取房间,家电以及场景模式,动态生成控件后在移动终端界面显示给用户,并且对按钮和输入响应监听,将参数传给监听函数,然后进行响应,继而通过调用模型层中的方法对数据库中的数据进行增删改查等。
  
  本设计中手持终端软件的界面设计思路如下:
  
  首先在登录界面登录,输入正确的用户名和密码后,就会跳转到初始主界面。初始主界面有当前所有联网的电器设备列表,并有它们当前的开关状态和所属房间的信息。在这个界面上可以直接对电器的开关进行操作,还可以增添新的电器设备。初始主界面跟其他所有的界面都可以互相跳转。房间配置界面显示的是当前房间中所有联网的电器设备,可以对它们进行开关操作,也可以添加新的房间。从房间配置界面可以跳转到具体设备的控制界面,对电器设备进行进一步的设置,例如定时任务等。场景模式配置界面是对场景模式的一个具体设定,决定这个模式下电器的开关状态,也可以根据需要自定一个模式。家居安防界面显示了家中的温湿度值和可燃气体的状态,当可燃气浓度超标时将会对用户提出警示。界面间的具体跳转关系如图 4-3 所示。
  
  4.3 Android 平台开发环境的搭建
  
  本文中 Android 开发环境的搭建主要是基于 Windows 32 位操作系统,需要安装 Java开发包(Java Development Kit,JDK)并且配置相应的开发环境变量。以下是详细的搭建步骤[71]:
  
  1.JDK 的下载和安装
  
  在官网上下载相应的安装软件。根据安装向导更改默认路径,把文件安装在 D:\根目录下。
  
  在 JDK 安装完成后对其进行进一步的检测以确定软件成功安装,将 cmd 命令窗口打开,输入 java-version 并按 Enter 确定,查看版本信息。没有问题之后配置环境变量。在环境变量配置好的前提下,再次检测环境变量是否配置成功,检测方法与之前相同。
  
  2.下载安装 Eclipse
  
  在官方网站上下载 Eclipse IDE for Java Developers,本文选择 32 位处理器的版本。下载后对其进行解压,剪切 eclipse 文件夹到 D:\根目录即可。
  
  3.SDK 的下载和安装
  
  找到 SDK 下载页面,选择合适的 zip 文件进行下载,解压运行。打开的环境变量对话框中,对系统变量进行设置。之后利用 cmd 命令测试窗口进行 SDK 软件测试:打开 cmd命令窗口,输入测试命令 android–h,以此检验是否安装成功。
  
  4.安装 ADT
  
  下载ADT插件的最新版本,启动Eclipse,点击主菜单上的Help->Install New Software,再点击 Add,通过 Eclipse 安装 ADT 插件。安装完成之后,单击 Eclipse 主菜单Windows->Preferences 菜单项,在所示窗口的文本框中填入 Android SDK 的安装目录。
  
  5.创建 AVD(Android 虚拟设备)
  
  Android SDK 提供了 ADV,方便开发者直接在电脑上测试运行自己的 Android 应用程序,在 ADV 中可以选择不同的系统版本等参数来模拟手机。
  
  在 Eclipse 工具条上的按钮打开 Android SDK 和 AVD,单击该管理器左面的 Virtualdevices,管理器列出当前已有的 AVD 设备。
  
  单击 New 菜单项,在对话框中填写 AVD 设备的相关信息,SD Card 栏填写虚拟 SD 卡的大小,然后点击 Create AVD,管理器将开始形成 AVD 设备,生成新的 Android 虚拟器,如图 4-4 所示。
  
  到此为止基本完成了对 Android 开发环境的搭建及配置。在这个基础上即可着手开发Android 应用程序。
  
  4.4 智能家居系统的登录链接模块设计
  
  在对家电进行监控之前,用户首先需要进行登录验证,只有成功验证的用户才能进入到初始主界面。登录流程如图 4-5 所示。
  
  系统软件的开始界面即为登录界面,用户需要在界面中写入用户名和密码,经过系统验证后界面才会跳转,第一次使用还需要进行注册。然后点击登录键,手机将用户名与密码通过 2G/3G/4G/Wi-Fi 网络发送到服务器,等待反馈,验证成功后即进入到操作界面初始界面。图 4-6 为登录界面。
  
  4.5 智能家居系统软件终端的控制界面
  
  用户登录成功后进入主界面,智能控制终端与 SQLite 数据库交互查询后遵循规定的布局文件显示出的这些界面,即为智能家居控制界面。首先,智能控制终端应用对数据库进行访问,对文件是否存在进行判断,若文件不存在则需要创建文件。包括各种房间类、电器类、场景类等表。若文件已经存储在数据库中,接下来就要判断需不需要覆盖新文件。
  
  完成后即可对数据库进行其他的基本操作。最终的数据会显示为不同的电器图形、种类、开关以及传感器上传的数据等。如图 4-7 为控制界面的显示流程图。
  
  房间中所有连上智能家居系统的电器设备以及相关信息都会显示在初始主界面上,在进入初始主界面之前,软件终端就会从数据库中获取到这些信息。当用户点击刷新后,信息查询的请求就会被发送到数据库,对设备状态进行更新。控制终端得到数据库的查询结果后,将其中与设备状态的相关数据全部调取出来,然后将数据进行分配,最后显示在ListView 中,生成了电器设备的信息列表。登录后的初始主界面如图 4-8 所示。
  
  首先创建一个 ArrayList,用来存放数据库发送过来的全部数据,数据包括每个电器设备的名称、电器所在房间、电器设备状态、图标、电器设备 ID 和定时任务信息等,用一个Device类表示。然后创建Map,把这些属性放到Map里面,一个电器设备对应一个Map,并且存储着这个电器设备的全部数据。之后建立一个 Adapter 装载列表,通过 setAdapter()把电器设备的信息显示在列表上,这样就完成了一个 ListView 的信息列表。
  
  在初始主界面上具有添加设备和删除设备的功能,方便用户更改系统中的电器设备,体现系统的灵活性。单击界面下方中央的加号键,就会跳出如图 4-9 的对话框,以实现添加设备的功能。删除设备的功能在后文进行阐述。
  
  如图 4-9,在电器名称处点击下拉列表对电器名进行选择,在所属房间的地方单击下拉列表,可以选需要的房间。因为实际生活中同一种电器可能会有很多个,所以电器名称允许有重复。例如选择电器名称为电热水器,房间为卫生间,点击确定按钮后,就会在设备列表最底端出现这个新添加的热水器设备栏。所有新添加的电器设备都处于关闭的初始状态。
  
  4.6 场景模式配置界面
  
  为了体现出智能家居系统的便捷性,本系统设计了场景模式配置的功能。这样就可以同时对多个电器设备进行操控。例如,室内模式为打开灯光、排风扇、窗帘和热水器,用户需要回家时就可一键开启;户外模式就是关闭所有的电器;当要睡觉的时候用户还可以选择开启空调,关闭其他所有设备的休眠模式;需要休闲娱乐的时候可选择打开灯光、电视和影音设备的休闲模式。这几种模式的配置并非单一固定的,用户可对其中的电器开关根据自己的需要进行配置。场景模式的配置主要是为了减少居家生活的繁琐性操作,使各个电器互联起来,提供便捷的生活方式。
  
  点击初始主界面下端左边的配置键,将会跳出场景模式配置和房间配置两个菜单,选择场景模式配置后,就会显示场景模式配置界面。如图 4-10 所示。
  
  在模式配置界面中,显示的是当前选择的模式的电器配置状态,在此界面中可以查看到所有设定好的模式并进行选择,每一种模式的电器开关设定可以根据用户的需求自行更改。在模式配置中显示的设备列表为当下所有的电器设备的设备名称,所属的房间名和当前的开关状态等信息。单击模式选择项右侧的下拉列表,对其中的模式进行选择,选择完毕后再对下面配置列表中的电器的开关状态进行修改,点击最右边的开关按钮进行操作。当所有的电器都配置完之后,点击确定键完成模式配置。
  
  4.7 智能家居设备控制
  
  在初始主界面中,单击设备栏右端的开关按钮,即可对电器设备进行开关控制,而长按设备栏时,界面就会转换到该电器的具体控制界面。如图 4-11,在此界面中有修改电器设备的名称、更改开关状态、设置定时任务、删除此电器设备以及返回初始主界面等操作。
  
  在初始主界面跳转到设备控制界面的过程中,初始主界面使用 Intent 封装此电器的全部属性,然后传递到设备的具体控制界面,并依据用户对设备的信息数据更改而重新更新主界面的设备列表信息。在图 4-17 中可以看出,该界面除了可以对电器设备的信息状态自行更改,还可以删掉电器。点击最下端左侧的删除键就能实现。因此当用户点击返回主界面时,系统需要对操作进行判断,用户改动了哪些数据,或是选择了删除该设备,然后做出正确的响应。
  
  4.7.1 开关控制模块
  
  在前面已经简单介绍了电器设备的开关功能,在初始主界面的设备栏右端即是各个电器设备的快捷开关。而长按设备栏进入到设备的具体控制界面后,也有对设备进行开关控制的按钮。下面主要介绍定时开关功能。
  
  电器设备的定时开关功能是本系统中一个非常重要的功能。相比于普通的开关功能,对家用电器进行定时开启和关闭更能体现出智能家居的特点,用户利用定时功能,在到家前提前打开热水器和空调等电器,一到家就可以体验到适宜温度和烧好的洗澡水,更能感受家的温暖。由于定时功能需要经过一段时间才会执行操作,本系统将在 Service 中实现该功能。当用户单击定时任务键后,将跳出添加定时的界面,点击开启时间栏或关闭时间栏将弹出一个设定时间的对话框以供选择需要设置的时间。如图 4-12 所示。
  
  用户可以通过滑动界面上的数字条来分别选择时和分,点击星期栏中的日期将可以对任务进行为期一周的重复执行,若不选择则默认任务只执行一次。点击确定键设置电器设备开启的时间,或者点击“取消键”取消本次操作,设定电器设备关闭的时间同理。点击开启时间栏和关闭时间栏右端的按钮即可选择对此次任务的执行与否。例如若只想执行任务的开启,而不执行关闭的话,点击关闭时间的任务栏右端的按钮使其颜色变灰即可。点击完成按钮之后会再次回到设备控制界面,当前任务栏将显示定时任务的开启和关闭时间如图 4-13 所示。
  
  4.7.2 智能家居系统房间配置界面的设计
  
  在实际生活中,用户往往需要对某一个房间里的电器设备进行操作,如果在主界面上的设备列表中一个个寻找就比较麻烦。为了提高用户的使用体验,满足对一个房间的所有电器进行控制的需求,本系统设计了对单个房间进行控制的功能。点击初始主界面下方的设置键,选择房间配置,就会连接到这个界面。
  
  如图 4-14 所示,该界面的底端是所有房间的名称,上端右侧是一个添加按键,可以给用户添加新的房间,尽可能的满足用户的需求,长按单个房间的按钮也可删除该房间。点击添加按键,系统触发监听器响应,然后弹出添加房间的对话框 AddRoomDialog,在该对话框中对新房间进行相应的设置。点击确定后系统在数据库中插入新的 Room.
  
  本系统使用 Android 中的 TabHost 来显示多个视图,每一个房间就是一个 tab,并且每个房间的布局基本是相同的,显示房间中所有电器设备的相关信息。对设备的控制方法与初始主界面一样。点击设备栏右端的开关按钮,即可对设备进行开关控制。长按某个电器,就会跳转到该电器设备的具体操作界面。通过房间界面下方的选项卡,就可以对房间进行选择,切换显示不同房间中的电器设备。在房间切换过程中,系统会在 SQLite 数据库中对该房间内的设备及信息状态进行查询,并在列表中显示。
  
  4.7.3 智能家居安防界面设计
  
  在本智能家居系统的设计中还包括温湿度传感器和可燃气体传感器,可以实时的对各个房间读取相应的数据,为用户提供监控功能。在初始主界面的下端最右边就是安防界面的按钮,点击后跳转到如图 4-15 的系统安防界面。
  
  安防界面除了底端没有选项卡 TabWidget 以外,布局与房间配置界面是类似的。在界面中显示了房屋内所有的传感器列表,传感器的数据通过 Wi-Fi 模块发送到服务器中,智能控制终端从服务器获取到这些数据,比如传感器的名称、数值、开关状态以及所属位置。
  
  当传感器右端的按键呈开启状态,说明传感器正在工作,其测量的数据也会在界面中显示;当传感器无法正常工作,则无法显示相应的数据,右端的按键则呈现关闭状态。系统后台也会对传感器的数值进行判断,当超出预设的定值时,将会通过震动和通知显示警报消息。
  
  4.8 本章小结
  
  本章主要实现了智能家居系统的软件终端。首先分析了软件的功能设计,对软件终端的结构进行总体把握。接着用 Eclipse+ADT 的方案搭建开发软件终端所需的 Android 平台开发环境。设计了软件的登录模块、控制界面和场景模式配置界面,用户可以在控制界面控制所有的家电开关,在场景模式配置界面选择需要的模式并对模式进行相应的修改。之后又设计了家电的具体控制,包括定时任务等功能的实现,对家电以房间为单位进行分组控制,从而实现了房间配置界面,用户可对其中的家电进行修改或新建房间。最后实现了家居安防的功能,显示室内的温度湿度,并对室内的可燃气体浓度进行检测,若超出阈值则会跳出警告窗口进行报警。
相关标签:
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站