嵌入式Web服务器在智能家居系统中的应用
2017-07-27张彬彬
张彬彬
摘要:智能家居的控制系统是一种结合了计算机通信技术,自动控制技术对与生活相关的家居设备进行实时的监控的系统。该文提出了一种智能家居控制系统的设计方案,用户可以通过浏览器IP地址访问的形式访问基于STM32f4微控制器和μC/OS-II操作系统搭建的嵌入式Web服务器,获取家居设备的实时运行状态,并对智能家居设备实时控制。此方案可以实现对智能家居设备的远程监控,有效节省用户的时间成本。
关键词:智能家居μC/OS-II实时操作系
;STM32;Web服务器
1背景
近些年来,智能终端设备的发展越来越快,人们在享受智能家居带来的便捷的同时,远程控制家居设备的状态也成为人们提高生活效率的追求。由于人们对于手机,电脑等智能控制设备性能的高要求,在客户端安装应用的方式显然会增加客户端的负担。因此,在服务器端编写好控制程序,当用户需要的时候直接加载好运行程序,不需要的时候也不会影响用户的设备性能,是一种解决此问题的好方案。
在智能家居控制系统中搭建好嵌入式web服务器,只要能连入Internet网,用户就可以通过浏览器访问IP地址的形式对智能家居设备的运行状态进行实时的监控,不仅可以节省用户智能设备的负担,而且了解智能家居实时状态,可以远程控制智能家居设备的运行,节省生活时间成本,提高生活效率。
2系统总体结构设计
2.1嵌入式Web服务器简介
嵌入式Web服务器就是在嵌入式设备中实现的小型Web服务器,对硬件的要求相对较低,可以通过Inter-net网络为用户提供服务。
2.2总体框架设计
智能家居的控制系统是智能家居控制网络的核心,是于互联网通信的关键部位。该系统可以提供外部的物理接口与智能家居设备相连接,并提供智能家居设备与控制设备的网络通信。
系统的总体框图如图1所示,该系统由嵌入式Web服务器、智能家居设备、用户智能设备上的浏览器三个部分组成。用户通过浏览器IP地址访问的形式对嵌入式Web服务器进行访问,嵌入式Web服务器把采集到的设备状态返还给用户,用户可以根据实际需要进行实时操作。
3嵌入式Web服务器的设计
嵌入式Web服务器是智能家居系统的核心控制组件,是与外部网络通信的桥梁。本文提到的嵌入式Web是基于STM32和μC/OS-II操作系统开发的,该系统的整体结构图如图2所示:
3.1μC/OS-H操作系统的移植
嵌入式实时操作系统的移植是嵌入式Web服务器开发的第一步,移植一个操作系统能使嵌入式Web服務器的开发更简便,更有效的利用硬件的存储空间。μC/OS-II操作系统是一款开源的,小巧的,可移植的实时操作系统,可进行多任务。在进行μC/OS-II操作系统的移植时,需要对μC/OS-II操作系统进行适当的修改。μC/OS-II操作系统的移植结构如图3所示:
从图中可知μC/OS-II移植结构的可知各部分的关系,μC/OS-II系统移植到硬件上的文件包括os_cpu.h、os_cup_c.c和os_cpu_a.asm这几个文件。移植文件需要大改动的就是头文件的修改,还有向量表中的PendSV_Handler和SysTick_Handler的改动。
3.2 TCP/IP协议栈的移植
TCP/IP协议是电子设备与Internet网络连接以及进行数据传输的标准,本文采用的是LwIP协议栈。LwlP是一款开源的TCP/IP协议栈,它的运行条件非常低,只需要10kb左右的RAM和40k左右的ROM,在嵌入式设备中使用不会占用太多的资源。LwlP考虑到移植的问题,把需要配置的文件放在了1wipl.4.1\arch文件目录下,在移植的时候需要对相关的设置进行修改。Lwip1.4.1\src\api文件中有操作系统调用应用层的API函数。Lwipl.4.1\src\core是1wip协议栈对于通信协议的实现。Lwip1.4.1ksrc\include\netif保存的是与底层硬件结合比较紧密的函数。这些文件都是c语言写的源文件,它们的头文件也存在与include文件中。在实际的应用过程中可根据实际的要求对这些文件进行修改。
3.3公共网关接口程序的开发
CGI(Common Gateway Interface)公共网关接口程序是运行在服务器上的外部程序与Web服务器之间的接口标准,是Web服务器与外部通信的关键。CGI可以处理网页表单的输入信息,服务器会产生相应的响应,使网页具有了交互功能。
CGI程序的运行过程:1)用户通过浏览器访问将页面的表单信息提交给Web服务器。2)服务器接收到表单数据后交给CGI程序。3)CGI程序对信息进行处理,把处理结果发送给服务器。4)服务器将结果返还给用户,用户通过浏览器查看结果。
4控制页面的设计
CGI程序与用户信息交换界面是嵌入在Web中的HTML文件,因此需要进行HTML文件的编程。考虑到页面内的信息将要对智能家居设备进行控制,HTML表单中提交的信息将以数值的形式将信息传送给智能控制设备,控制设备对智能家居设备进行相应的开关操作。
首先,在后台对表单提交的用户名进行校验,若通过信息验证,则返回html控制页面。用户提交表单信息后,获取表单中的name属性值,在后台进行验证。验证通过后,用户可以在控制界面对硬件进行控制,点击按钮,触发页面脚本文件,与后台进行交互。控制界面如图4所示。
用户和服务器交互有三种方式:1)地址栏URL地址的方式;2)超链接的方式;3)表单提交的方式。用户传输表单数据是form标签中submit按钮提交的,form上传数据的方式有两种,分别是form的get属性和post属性。Form的属性method可以选择提交的方式,action属性指向后台的地址。Get提交方式信息会直接出现在地址栏中,对提交信息一目了然,且地址栏存储有限,不适合提交大量数据。Post提交方式提交信息不回出现在地址栏中,可以提交大体积数据,因此更安全。考虑到用户提交的信息量不是太大,用户使用的设备也为个人私有设备,采用get提交方式就可以提交用户操作的数据。该登录控制系统是在局域网络下面进行的,若要在Internet网络下访问,还必须申请一个代理IP地址,国内的服务器代理阿里云与腾讯云都比较便宜,后续的外网访问也可以实现。
5结束语
在互联网高速发展的今天,大部分行业都在向互联网靠拢,都在发展互联网+产品。因此,在如今人们生活节奏如此快的情况下,智能家居的远程控制极大地减少了用户的时间成本。伴随着智能终端的快速发展,终端的出现形式也各不相同,有手机、电脑、平板、穿戴智能设备、VR设备等。无论智能终端的形式怎样变化,只要有浏览器的地方链接Internet网络就能访问智能家居,这种方式的改变将极大提高人们的生活舒适度。在后续的功能扩展中,也可以加入更多的智能家居设备。