资源描述
智能家居软件用户手册
目录
一、 设计思路 1
二、 系统架构 1
(1) Client Layer 1
(2) Server Layer: 2
(3) Sensor Layer: 2
(4) External Equipment(外接设备): 3
三、 通信协议说明 3
四、 文件传输与管理 3
五、 使用说明 4
1. 程序启动 4
(1) 运行server端程序 4
(2) 运行client端程序 4
2. 系统操作 5
(1) 系统登录 5
(2) 系统注销 7
(3) 系统退出 7
3. 数据监控 7
(1) 启动监控 7
(2) 监控操作 8
(3) 报警操作 9
(4) 通道数据 10
(5) 报警数据 11
(6) 云端数据 12
(7) 窗口管理 12
六、 结语 13
34 / 36
基于嵌入式的智能家居系统
软件手册
一、 设计思路
随着智能家居产业的兴起,小型化服务器、多功能数据监测及控制系统,已经成为智能家居系统发展的一种趋势,建立集服务、控制、监控、报警于一身的低成本智能家居系统,将在未来的市场中占有巨大的优势。
基于此,系统设计阶段,即第三轮代码编写阶段,软件架构便明确的设计为,基于嵌入式系统的、利用TCP通信作为接口的Server/Client模式。Server程序作为嵌入式系统内长期运行的服务程序,无需面板显示功能,因此Server程序设计为无面板的黑盒;Client程序作为用户程序,通过LAN或Internet链接到Server,对服务器进行访问、设置等等,展现智能家居系统的全部功能。
对于Server而言,其本身除提供Client端的数据访问外,还应具有传感器数据采集等等功能,通过“链接”在Server端的传感器,实时的监控家居环境。对于家庭环境,基于无线网络的监控系统,将大大的提高系统的安装灵活性。因此Server及Sensor之间的通信,将主要通过无线网络来完成。在Server于Sensor的通信中,由于Server无需实时的采集全部Sensor的数据,只需定时获取相关信息,因此在这一个层面的通信中,Sensor将作为“服务器Server”,而Server将作为“客户端Client”,Server主动的链接Sensor获取数据,而在获取数据后断开及Sensor的链接,这样便可实现Server对多个Sensor的定时监控。
除了传统的传感器数据采集,近些年视频监控及图像识别,在各个领域内的应用越来越广泛。如若智能家居系统及视频监控相结合,既能满足对家庭环境的远程视频查看,又能利用图像识别功能,在儿童监护、老人防摔、家庭防盗、人脸识别等等方面发挥更大的作用。因此将视频监控系统集成及系统内,也是系统设计较早便考虑的方面。
二、 系统架构
根据设计思路,系统架构由“三个层次”以及“外接设备”构成,我们将这三个层次分别命名为:Client Layer、Server Layer、Sensor Layer。
(1) Client Layer
由客户端程序构成,运行于一台独立的PC,其及Server Layer通过LAN或Internet进行通信,实现命令的发送和数据的读取;
(2) Server Layer:
由服务器软件及myRIO部分功能构成,程序分别运行于一台PC和myRIO,两个程序间的数据通信以“共享变量”来实现。这里额外要说的是,设计的初衷是将Server Layer的全部程序运行于myRIO中,这样便实现了真正的嵌入式,但是及NI工程师沟通后,得到目前myRIO不支持数据库功能的结论,因此不得不将myRIO及PC混合使用,来实现数据的存储。在实际的使用中,Server内部的通信将在内存中直接完成,可以舍弃全部共享变量;
(3) Sensor Layer:
由Sensor程序构成,其运行于myRIO内,其及Server Layer通过无线网络的TCP或UDP进行通信,将采集到的传感器数据,通过网络发送给Server Layer。在实际的使用中,可以用无线通信模块及数据采集模块代替myRIO,以降低采购成本;
Client 3
PC
Client 2
PC
Client 1
PC
Interface
External
Equipment
External
Equipment
Interface
PC
myRIO
Server
Sensor 1
myRIO
Sensor 2
myRIO
Sensor 3
myRIO
Sensor 4
myRIO
结构图
(4) External Equipment(外接设备):
直接连接于Server Layer或通过网络连接于Server Layer的设备,包括摄像头、麦克风等等设备,可实时的采集家庭内的数据或发出报警信息,并通过LAN或Internet及Client Layer连接,实现数据的远程传输。
三、 通信协议
对于三层数据传输的架构,针对性的制定了2套不同的通信协议,分别用于Client Layer及Server Layer间的通信,以及Server Layer及Sensor Layer之间的通信,我们这里分别命名为User Protocol和Sensor Protocol。
(1) User Protocol
该协议用于Client Layer及Server Layer间的通信,Server Layer作为服务器,监听特定的端口,Client Layer作为客户端,链接Server Layer,建立连接后,实现数据的通信。当需要断开链接时,Client Layer发送断开命令,Server Layer将链接断开。
该协议共分为5大部分,利用了三个不同的端口进行不同数据的通信。基本按照第三轮至第五轮的顺序,依次添加了不同部分的协议,这也是基于通信协议的优势,只要协议制定合理,其扩展能力很强,可以满足各种不同功能的需要。
三个端口中,Port 1主要用于常规命令的发送和反馈信息的回复,可以实现小规模数据的通信;Port 2主要针对Monitor模块中的实时数据查看功能,当监测的窗口较多时,数据通信量较大,单独利用一个端口实现数据的传输,可以提高系统的反应速度;Port 3主要针对视频传输数据,其目的及Port 2相同,减少Port 1的数据通信量。
(2) Sensor Protocol
该协议用于Server Layer及Sensor Layer之间的通信,包括UDP协议和TCP协议两个部分,其中对于TCP通信,Sensor Layer为服务器,Server Layer为客户端,实现Server Layer对多个Sensor的数据采集。
UDP协议主要用于Sensor的探测,利用UDP可以跨网段传输的特性,在未设置IP地址的前提下便可将网络内的Sensor信息监测到,增加系统配置配置的灵活性。在添加设备时可以利用该功能自动查找可用的Sensor,方便系统设置。
TCP协议主要用于Sensor数据的获取,该协议为各个Sensor的通用协议,这样便可方便Server的数据采集。
四、 数据管理
所有的数据都存储在Server中,这样无论Client端在何处登录,都可以读取到同样的数据。对于图像、音乐等较大的文件数据,以文件的形式在指定文件夹内进行存储,对于传感器采集的数据,则在数据库中进行管理。
软件的架构设计应该以数据的流向作为轴线,进行功能的设计和代码的编写,因此本系统将Server作为数据的核心,Client及Sensor的数据都以Server为基准进行上传和下载。软件针对不同的模块,引入了面向对象编程,将属性及数据结构匹配,提高了程序的扩展性,同时及数据结合更加紧密。
五、 使用说明
程序需要安装LabVIEW2014开发环境,myRIO开发包,wsncloud云端服务器插件,Access2007数据库驱动。运行项目Stage05_ZhangChao.lvproj项目文件,弹出如下对话框,依次运行myRIO.vi、Server.vi、Client.vi。
1. 程序启动
(1) 运行myRIO程序
首先打开NI-myRIO-1900设备下的myRIO.vi,运行该程序,首先要部署共享变量,如下图所示:
启动成功后,程序运行如下图所示:
myRIO程序
其中stop按钮用于退出myRIO程序,该按钮实际只在调试中有效,实际运行时程序部署到myRIO中,按钮失去作用;Clients connected表示myRIO中的sensor服务器当前连接的客户端个数。当server从sensor采集数据时,该控件显示不为0,当server采集结束后,该控件变为0。
(2) 运行server程序
打开server虚拟文件夹下的server.vi,运行服务器程序,由于server及myRIO之间要通过共享变量进行数据通信,因此程序首先部署共享变量,如下图所示:。
程序运行后如下图所示。
server程序
其中stop按钮用于停止server程序,vision alarm按钮用于控制视频报警的开启和关闭,Clients connected表示Server中的服务器当前连接的Client个数。
(3) 运行Client程序
打开Client虚拟文件夹下的Client.vi,运行客户端程序,程序运行后如下图所示。
2. 系统操作
(1) 系统登录
点击菜单,如下图所示:
或者将鼠标移动至界面的底端,在弹出的按钮框中点击login按钮,如下图所示:
弹出Login对话框,输入IP地址,Name默认ZhangChao,通过该账号可登陆系统,用户也可以在setting中新建账号,将在后面详细介绍,如下图:
点击ok按钮,进入password界面输入密码,默认密码为5600。点击“#”确认输入内容,并将账号和密码发送至服务器,及服务器数据库内的账号信息进行比对;点击“*”清空输入内容。当鼠标悬停在“#”及“*”会有功能提示。
同样,将鼠标移动至界面底端,会弹出按钮对话框,点击logout断开及服务器的连接,点击exit按钮,退出程序;
登录成功播放unlock提示音,登录失败播放error提示音,并显示相应的提示信息;登录成功后密码按键将变为禁用状态,菜单栏将增加operation菜单栏,用户可以继续进一步的操作;同时File菜单内的Login菜单由启用状态变为禁用状态,Logout、Home菜单由禁用状态变为启用状态。
登录失败
登录成功home界面及operation菜单栏
Logout菜单栏变化
登录成功后,home界面上由6个按钮组成,其及Operation菜单的功能是一一对应的,
(2) 系统注销
点击菜单栏,或在home、password界面上将鼠标移动至底端,点击弹出按钮对话框中的logout按钮,可在任意情况下断开及服务器的连接,并返回主界面,该功能可以方便可以连接不同的服务器,查看不同的资源。
(3) 系统退出
点击菜单栏、单击程序右上角的关闭对话框按钮、或在home、password界面上将鼠标移动至底端,点击弹出按钮对话框中的exit按钮,可在任意情况下断开及服务器的连接,同时关闭程序。
3. 相册Album
(1) 启动相册
在登录成功后,在home界面上点击Album按钮,或在Operation菜单栏下点击Open Album启动相册功能,如下图。
相册界面比登录界面大,其将以登录界面为重心,向四周放大面板;非空相册显示缩略图,空相册缩略将显示为no picture;启动相册后,菜单栏将增加Setting菜单。如下图所示。
Album List界面
相册支持适应窗口设置,可最大化窗口或手动拖拽改变窗口大小,相册内的相册、图片将根据窗口的大小自动调整位置,以保持显示的协调。如下图所示:
窗口自适应
(2) 相册操作
a) 新建相册
点击“New”按钮,弹出New Album对话框,输入及已有相册名称不同的名字,点击ok按钮,可创建新的相册。
创建相册
b) 删除相册
在任意相册的缩略图上点击鼠标右键,弹出快捷菜单,点击Delete菜单,将删除该相册及相册内的全部照片。
c) 退出相册
点击右下角的Home按钮,退出Album,返回Home界面。
d) 进入相册
用鼠标左键点击任意相册的缩略图,可进入该相册并查看相册内全部照片。
鼠标点击位置
Picture List界面
e) 上传图片
点击Upload Picture按钮,弹出文件选择对话,可选择一个或多个文件,点击ok按钮,将选中的文件全部上传至该Album。
f) 图片操作
在相册内任一图片的缩略图上点击鼠标右键,将弹出图片快捷菜单,如下图所示。点击Delete将删除该选中图片,点击Download,将下载该文件的原图至指定的地址。
g) 返回
点击右下角back按钮,将返回Album List。
(3) 图片操作
点击Picture List内任一图片的缩略图,可查看该图片的大图,如下图所示。
a) 手动查看
点击图片查看界面的左侧和右侧区域,如下图所示,可以切换显示相册内的不同图片,点击左右分别用来查看前一张图和后一张图。
b) 自动播放
点击右下角的play按钮,可以按设定的时间间隔循环播放相册内的全部图片。
c) 停止播放
进入自动播放后,界面内的播放按钮和暂停按钮将隐藏,此时鼠标左键点击界面任何一个位置便可推出自动播放。
d) 间隔设定
点击菜单栏内的Setting-Album Setting可弹出时间间隔设定对话框,手动输入时间间隔,单位毫秒,如下图所示。
e) 返回
点击右下角的back按钮,可返回Picture List。
4. 音乐播放
(1) 启动音乐
在登录成功后,点击music按钮或,点击Operation菜单栏下Open Music,启动相册功能,弹出音乐播放对话框,同时隐藏Setting菜单,如下图所示。音乐界面支持自适应窗口功能,可任意改变软件窗口大小。
(2) 音乐操作
a) 播放音乐
用鼠标左键双击tree中的音乐文件,或左键选中某音乐文件后,单击下方的播放按钮,即可播放服务器中的该音乐文件。点击暂停按钮和停止按钮可对音乐播放进行控制,调整volume滑块,可控制音量的大小,向左减小音量,向右增加音量。
b) 添加音乐集
点击New Collection按钮或在tree中右键单击选择New Collection菜单,可弹出增加音乐集对话框,如下图。
输入及已有音乐集名称不同的名字,点击ok按钮,可创建新的音乐集。
c) 上传音乐
首先应选择一个音乐集或音乐集内的一个音乐,表示将向该音乐集内上传音乐,点击Upload按钮或在tree中点击右键Upload Music菜单,弹出音乐选择对话框,可上传单个音乐或多个音乐至指定音乐集。
d) 删除音乐
首先应选中一个音乐集或音乐集中的某个文件,点击Delete按钮或右键单击tree选择Delete菜单项。如果选中的为音乐集,将删除该音乐集及其内的全部音乐文件,如果选中为某个音乐文件,则将删除该文件。最后列表将刷新。
e) 退出音乐
点击右下角的Home按钮,退出Album,返回Home界面。
5. 数据监控
(1) 启动监控
点击home界面上的monitor按钮或点击Operation菜单栏下的Open Monitor菜单启动数据监控,如下图。
监控界面分为三大部分,左侧为列表显示区域,右侧为功能显示区域以及按钮区域;进入monitor界面后,菜单栏将增加project和setting两个菜单,如下图所示。
当进入monitor界面后,面板将支持调整大小功能,可通过拖动或全屏的方式改变面板的大小。
monitor界面
(2) 监控操作
h) 新建设备
选择菜单Project-New Device,或用鼠标选中tree中的monitor project,点击New按钮,将弹出New Device对话框,输入及已有device名称不同的名字,选择通道个数,设置IP地址,端口号以及时间间隔等(需要根据实际的设备设置),点击ok按钮,可进入通道设置对话框。
New device
弹出通道设置对话框后,可通过选项卡对不同的通道进行设置,这里最多支持8个通道,选项卡数会根据通道数不同,而显示不同个数的选项卡。需要注意的是,各个通道的名称不能有重复,其他参数可根据实际情况设置。
New Channels
点击OK按钮,将添加设备,且在左侧列表显示区域monitor project下将增加该设备的列表以及各个通道的列表。如下图所示:
i) 删除设备
利用Project-Delete Device菜单可删除选中的device或某个channel,如果选中的为非monitor project下的设备,系统将弹出提示信息。删除设备后,左侧列表将刷新,同时sever端数据库将删除该设备的全部参数。
或选中monitor project下的设备,点击下方的delete按钮,将可删除选中的device或某个channel。
j) 配置设备
利用Project-Modify Device菜单,或选中某个设备后点击下方的modify按钮,可对现有的设备进行参数更改,选中device或channel,可对该device的参数以及各个通道的参数进行修改和保存,其界面及添加channel相同,不同在于其可对设备的参数进行修改,如下图所示。
Modify Device
(3) 报警操作
a) 新建报警
选择菜单Project-New Alarm,或用鼠标选中tree中的alarm project,点击New按钮,弹出New Alarm对话框,device 那么将显示monitor project内的全部设备,如果monitor project内无设备,报警将不法添加;Chanel Name显示内容将根据device name的不同显示为不同device对应的channel name列表。其他参数根据实际需要确定,点击OK按钮添加报警项目,同时列表的alarm project下将新建对应的报警项目。
New alarm
b) 删除报警
利用Project-Delete Alarm菜单可删除选中的报警设备,如果选中的为非alarm project下的设备,系统将弹出提示信息。删除设备后,左侧列表将刷新,同时server端数据库将删除该报警对应的全部数据。
或选中alarm project下的设备,点击下方的delete按钮,将可删除选中的alarm。
c) 配置报警
利用Project-Modify Alarm菜单,或选中某个alarm后点击下方的modify按钮,可对现有的报警进行参数更改,其界面及新建报警界面相同,不同在于其不能对报警的device和channel进行修改,如下图所示。
Modify Alarm
(4) 通道数据
双击列表monitor project下的Channel名称、或将Channel名称拖动至右侧功能区域空白处,将在右侧功能区域内打开MDI窗口,显示该通道的数据,可重复打开同一通道的数据,也可以打开不同通道的数据,如下图所示。
a) 实时数据
默认ChanelData窗口内显示的为实时数据,刷新速度由菜单栏中的RefreshRate设置,显示数据的个数为最近采集的10个数据,如下图所示。
RT graph
谱图可随窗口大小的改变而变化,左上角显示的为设备名称和通道名称,右上角提示当前谱图的类型,谱图横坐标为时间,纵坐标为幅值。
b) 历史数据
在谱图上单击鼠标右键,弹出菜单,选择history graph进入历史数据谱图界面,进入历史数据谱图后,弹出选择对话框,同时右上角名称变为history graph,如下图所示。
首先应在start time和end time上选择合理的时间段,点击OK按钮查询该时间段内的数据,并将数据显示在谱图中。
c) 数据导出
在谱图内单击鼠标右键,选择“Export Data to Excel列表”可将谱图内的数据导入至Excel表格,另行存储。
d) 关闭表格
点击鼠标右键,在弹出菜单中选择Close Panel,或将鼠标移动至右侧,在弹出的功能栏中点击×按钮,便可将当前表格关闭。
(5) 报警数据
双击列表alarm project下的Channel名称、或将Channel名称拖动至右侧功能区域空白处,将在右侧功能区域内打开MDI窗口,显示该通道的报警状态及报警数据,可重复打开同一通道的报警,也可以打开不同通道的数据,如下图所示。
a) 实时报警
默认AlarmData窗口内显示的为实时报警状态及最新的报警数据,刷新速度由菜单栏中的RefreshRate设置,如下图所示。
RT alarm
报警窗口可随窗口大小的改变而变化,左上角显示的为设备名称和通道名称,其下方为该通道的报警状态,无新报警时该图标显示为对号,如上图,有报警时该图标显示为错号,如下图,变为报警状态不能自动切换为非报警状态,此时点击该按钮,可将报警状态取消,这也符合报警的原则。
Alarm state
同时,在服务器端如果检测到报警状态,服务器将自动发送Email至指定的邮箱,用户可以通过查看邮件的方式,判断数据检测是否出现报警。
b) 历史报警
在表格上单击鼠标右键,弹出菜单,选择history alarm进入历史报警表格界面,进入历史报警表格后,弹出选择对话框,如下图所示。首先应在start time和end time上选择合理的时间段,点击OK按钮查询该时间段内的数据,并将数据显示在表格中。
c) 数据导出
在表格内首先应用鼠标左键选择需要导出的数据(圈选),然后单击鼠标右键,选择“导出至Excel列表”可将谱图内的数据导入至Excel表格,另行存储。
(6) 云端数据
集成了wsncloud云端数据管理,由于网络的原因,只有新建设备能够实现,且反应速度较慢,测试中不是每次都能建立成功。
点击Project-New Cloud可弹出新建云端设备对话框,对话框内全部信息必须输入完整,才能正确建立设备。建立成功后,将在tree列表下的cloud项后显示该设备的名称。
(7) 窗口管理
a) 刷新速度
点击setting-refresh rate菜单,弹出refresh rate对话框,如下图。该对话框用于设置device data以及alarm data窗口实时数据的刷新时间间隔,单位为秒。最小值可设为1秒,最大值为3600秒。由于查询数据需要占用大量的网络资源,且随着MDI窗口的增加,数据量也会成倍增加,因此此处不建议设置时间过短。监控不同于实时采集,其对数据的连续性要求也不需要过高。
b) 刷新列表
在tree上点击右键,点击Refresh菜单,将重新从server读取列表信息,刷新tree内各项(此功能不支持wsncloud列表刷新)。
c) 初始化云
在tree上点击右键,点击initialize cloud菜单,将从云端读取设备列表,显示在cloud project目录下,该功能耗时较长,不建议使用。
d) 窗口排列
随着MDI窗口数量的增加,窗口的管理能够提高程序的可用性,因此本软件设置了3种窗口的排列功能。分别为垂直排列、水平排列以及层叠排列。点击setting菜单下的Vertical、Horizontal、Cascade菜单,可分别实现上述3个功能,
Vertical:将各个MDI窗口按照打开顺序,从上至下排列在右侧功能显示区域内。如果垂直方向的高度不足以按各窗口的最小高度排列,则增加窗口显示的列数,如果水平方向不能满足窗口最小宽度,则系统提示排列空间不足的提示框;
Horizontal:将各个MDI窗口按照打开顺序,从左至右排列在右侧功能显示区域内。其功能及Vertical类似;
Cascade:按照窗口的原始大小,从左上至右下间隔25像素,依次排列各个窗口。
e) 窗口替换
拖动列表中Channel图标,至右侧功能显示区域的空白处,将打开新的窗口;如果将图标拖动至已有窗口中,该MDI窗口将显示在所有MDI窗口的最前面,以提示鼠标拖动至该窗口,释放鼠标将关闭该窗口,同时在固定的位置打开拖动通道的窗口代替原窗口。支持监控窗口和报警窗口互换。
6. 视频识别
(1) 启动监控
点击home界面上的camera按钮或点击Operation菜单栏下的Open Camera菜单启动视频监控,如下图。
Camera
界面由两排监视窗口构成,第一排为原视频,第二排为经过处理的灰度视频,在其中心有一片识别区域,用于判断当前视频中原本拜访的物体是不是存在。由于目前只有一个摄像头,因此这里只有第一列两个图像有显示。
当摄像头前检测区域能够检测到边沿时,server程序将不发出声音提示,当检测区域未能够检测到边沿时,server程序将发出报警提示音。可以通过单击server程序上的vision alarm按钮来控制是否发出声音报警。
(2) 退出监控
单击右下角的home按钮,退出监控界面。
7. 控制界面
该界面用于控制myRIO,并驱动myRIO实现一些功能,同时将作为服务器的myRIO本身自带的传感器信息实时的显示在界面中。
(1) Light控制
在light控制区域,有10个开关,分别控制PCB板上的6个LED以及myRIO本身自带的4个LED,编号分别为1~10。该功能用于模拟家用电器的开关、室内照明的开关等等以开关形式存在的家用电器。
(2) Position控制
滑动Position滑块,可控制Servo的转动,该功能可以模拟家庭中窗帘的开闭。
(3) Sensor monitor显示
显示3个柱状图,分别表示温度,光照和湿度的实时值,可以发现,改变position的位置时,即窗帘的位置发生变化时,传感器的显示值会跟随改变。
8. 系统设置
(1) 启动设置
点击home界面上的Setting按钮或点击Operation菜单栏下的Open sysSetting菜单启动系统设置,如下图。
(2) User操作
a) 新建账号
点击New User按钮,新建Client端登录账号。按钮点击后,界面动态移动后变化如下图。输入用户名和密码,点击OK按钮,可在server端新建账号,可在下次登录时使用该账户。点击Cancel按钮,界面恢复初始状态。
b) 修改密码
点击Change Password按钮,修改选中账户的密码。按钮点击后,界面动态移动后变化如下图。输入原始密码和修改后的密码,点击OK按钮,可在server端修改账户密码。点击Cancel按钮,界面恢复初始状态。
c) 删除密码
点击Delete User按钮,删除选中的用户。该功能无法对初始账户进行操作。
(3) Keypad操作
点击keypad按钮,进入Keypad界面,该界面是用于设置PCB板上的keypad登录密码,该功能用于模拟数字门锁功能,输入6位密码,点击OK按钮,keypad密码得到修改。
六、 结语
写到这里终于离结束不远了……
程序的优点就是采用了完善的TCP通信协议,在跨网段的数据通信中,完整的通信协议是保证数据传输正确的前提;但是这也成了程序编写的缺点,通信协议都是“一式两份”的,这难免造成开发效率的下降,因此也造成了我个人精力耗费比较大。
程序的缺点是目前还有一些bug未找到,由于没有充分的测试时间,在运行的过程中难免会遇到一些问题,而且由于功能的增加,这种风险也随之增大,还是希望以后能有更多的时间对程序进行充分的测试。
就先写到这吧,谢谢!
展开阅读全文