蒋文杰 聂盼红 张展
摘要:智能家居的发展逐渐进入深水区,基础应用在生活中比较常见,这种将多种家居设备连接起来统一管理的模式也将继续发展。该篇文章介绍了智能家居的概念以及管理系统的组成,阐述了所涉及的基本技术,提出了一套能够提供第三方兼容的统一云平台智能家居交互系统。
关键词:智能家居;Web;智能音箱;管理平台
中图分类号:TP311.1 文献标识码:A
文章编号:1009-3044(2021)02-0045-03
Abstract: The development of smart home gradually into the deepwater area, the basic application in life is more common, this will be connected to a variety of home equipment unified management mode will continue to develop. This paper introduces the concept of smart home and the composition of the management system, describes the basic technology involved, and puts forward a set of unified cloud platform intelligent home interaction system that can provide third-party compatibility.
Key words: smart home; Web; smart speakers; management platform
1 背景
隨着WIFI技术和蓝牙技术的发展,短距离、远距离通信设备的成本降低,功耗降低,性能增强,为智能家居提供了技术基础。再加上互联网的发展,利用硬件设备将各种家居进行设置,连接到管理平台,进而实现对设备的统一管理、远程监控,成为大趋势。根据对世界物联网的研究,尽管世界的物联网智能家居在不停地发展,但不同国家和地区的发展方向和特点都不一样,不是都符合我国的发展方向,我们需要遵循低碳、环保和开源节流的理念,从而获得更长久的发展。
目前我们面临的问题是,由于各个厂家没有达成统一合作,导致不同的品牌都大概率有自己的平台,对普通民众不太友好,平台过多导致智能家居发展受限,多个平台让日常操作过于烦琐。再加上传统家电的智能化覆盖还是问题,由第三方提供一个完整成熟统一的云平台,提供对各个品牌设备的兼容是市场下一阶段可能的发展目标。
针对上述问题,本文设计了一个能够提供第三方兼容的统一云平台智能家居交互系统。通过单片机和各种模块与家电相结合,实现传统家电智能化,然后通过统一平台进行设备的无线连接管理。同时,该系统可以通过Web网页和智能音箱实现对家居的控制。
2 系统总体设计
本系统由控制部分,设备管理部分,设备部分组成,该系统的整体框架如图1所示。
控制部分为两块,一块是Web控制,另一块是智能音箱控制,Web部分使用的是基于asp.net搭建的网页,智能音箱是基于树莓派使用Python借助网络API实现的。
设备管理部分负责控制部分和硬件部分的连接。起到存储信息,收集信息,转发命令的作用。通过它可以实现设备的动态管理。
硬件部分利用到了WIFI模块来无线连接和控制,根据不同的电器设备选择不同的控制方法,让设备具有通用性,方便对传统家电进行智能化改造。
3 控制系统设计
该系统主要提供设备控制的入口,由两部分独立模块组成,第一部分是一个基于树莓派的智能音箱,可以通过语音下达控制指令。第二部分是一个网页,通过验证用户名和密码实现登录,可以获取各个硬件设备的状态,对可操作设备下达指令。
智能音箱使用Python作为开发语言,Python是目前很流行的一种解释型编程语言。Python的语法十分简洁、易读,其倾向于让开发者使用更少的代码来实现预期的功能,所以相比别的高级语言它在开发速度和开发效率方面有着显著的优势,同时也不可避免地导致运行效率的下降。因为其语言特性,在开发复杂的程序时有许多的包可以调用,可以较为轻松地实现复杂的功能。音箱处理器使用树莓派,树莓派(Raspberry Pi)是英国树莓派基金会设计发售的基于Linux的单片机电脑,每一代树莓派均使用博通(Broadcom)的ARM架构处理器,配备丰富的接口,安装有支持以太网,WLAN,Bluetooth等协议的模块,具备一台PC所有基本的功能,同时可拓展性也极强。
网页构建使用ASP.NET,ASP.NET是开源的。这是一种跨平台、高性能、轻量级的 Web 应用构建框架。这里使用Web From传统事件驱动开发模型,对于每一个功能控件,都可以先在HTML页面设计好后,在后台使用C#实现服务器端对应的交互功能。微软将控件与后台事件代码的绑定过程透明化,使Web From的开发与Win From非常类似,将一些底层的原理部分类似于请求-处理-响应忽略了。
3.1 智能音箱
使用树莓派为中心处理器[1-2],为了满足需求,树莓派需要外接麦克风和扬声器,并连接网络,树莓派外部连接如图2。
树莓派作为一台微型计算机,工作潜力很大,在上面运行的系统为官方系统Raspbian,程序整体是通过Python编写的,首先运行的是SNOWBOY,这是KITT.AI开发的人工智能软件工具包,它会检测所设置的唤醒词,如果没有检测到,就会堵塞程序。如果检测到,会有一个反馈音频被播放出来,然后开始执行所安排的python程序入口函数,该函数会先启动录音功能,借助所安装的麦克风,录制5秒的音频,将音频通过百度提供的API发送过去,返回一个字符串,实现了语音转文字的功能,再根据关键词实现对文字的分解并生成指令,最后将生成的指令写入到所设置的MYSQL数据库中[3],最后根据指令运行反馈,通过扬声器进行结果反馈,完整流程如图3。
3.2 网页服务
该部分使用ASP.NET和C#构建网页,网页使用三层结构[4]。
总体功能体系如图4。
其中修改函数和查询函数的主要功能是通过使用上层提供的参数,生成对应的SQL语句,提交给下层运行,下层运行SQL后将结果返回,然后查询函数返回布尔信息,查询函数需要对返回数据进行进一步处理,然后返回字符串信息。
网页操作需要登录,在验证用户名密码登录后,页面主要分为两个部分,一部分是显示设备的基本信息,另一部分是对设备的控制。
显示的设备基本信息主要是设备编号、设备描述、设备状态。网页后台通过查询函数从数据库获取设备状态描述信息和设备在线状态,在前端网页上显示。为了确保能及时更新设备状态,这里采用页面的局部刷新。
控制设备时,根据不同的设备,控制选项也不同,其中最复杂的是空调的控制。后台会先通过查询函数,获取设备的详细状态信息,不同类型的设备所列出来的信息不同,然后只显示出可操作设备,为了方便操作,这里可以使用多选的操作,同时对多个设备进行控制。确认修改后后台会根据具体的修改,使用对应的修改函数,将数据更新到数据库中,根据后台的指令运行结果,会有对应的弹窗进行反馈,同时进行页面的刷新。
4 数据库
本次项目使用的是MySQL数据库,MySQL是一种开源的关系型数据库,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 Web应用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系数据库管理系统) 应用软件之一。
在数据库中,每个设备都有自己的编号作为唯一标识,使用了多张表,通过设备编号进行关联,将中文描述例如“开”“关”等,与实际的数字数据分隔开来,使设备管理获取指令更加便捷,增加兼容性。另一方面,为了降低网页端SQL语句的复杂度,使用视图来生成更方便的数据,用来提供给网页查询函数使用。
5 设备管理设计
该部分主体是一个C++程序,程序结构如图7。
该程序在Linux服务器上运行,通过Socket[5]与硬件设备建立TCP连接。监听端口后,函数会堵塞在这里,直到有新的连接。获得新的连接并验证成功后,将生成的Socket作为参数创建新的线程,每个连接成功的设备都会有一个对应的线程。线程创建之前,程序会将设备“上线”的信息更新到数据库[6]中,如果设备出现问题,TCP连接断开,程序会及时发现并将设备“下线”的信息更新到数据库中,最后主动关闭线程,实现了对设备基本信息的维护。同时,程序也将从数据库中获取到的指令信息发送给设备,设备接收后会自行处理。线程创建完成后,主程序会回到监听端口的部分,继续堵塞,直到有新的连接。
6 硬件控制
由于不同的家电设备需要不同的控制装置,所以难以统一化,需要具体设备具体安排,这里实现了对灯、空调、窗帘的控制作为例子展示。WIFI模块这里使用的是ai-thinker公司推出的一款无线WIFI模块ESP8266,由于其体积小、操作简单、功能强大等特点,现在常见于可穿戴设备和物联网应用中,在物联网领域被广泛使用。可以通过AT指令配置,和单片机上的串口进行通信,利用WIFI进行数据传输。开发WIFI的编译器使用的是ArduinoIDE,因为它对于NodeMCU(基于esp8266系列)的良好支持,这里使用它来开发固件。
6.1 灯
灯的控制主要是在电源方面,这里使用的是12V的LED灯,采用了继电器来控制,通过WIFI模块获取命令后通过引脚3.3V的电平实现高电平开灯,低电平关灯,以实现以低电压驱动高电压。
6.2 空调
空调控制大体分两种,一种是通过内部线路控制,另一种是通过外部的红外线控制。内部线路控制实施烦琐,走线也是问题,但是稳定性好,红外控制设置方便,但是容易被干扰,稳定性也有一定的问题,这里使用红外控制。空调通过用红外模块来进行控制,先学习遥控器的红外信号,进行分类编码,温度、风速等信息都存在于编码中,软件部分发送信息时,会将数据库中的信息进行编码后发送,然后WIFI模块接收信号验证编码的完整性后通过串口向红外模块发送信号编码,红外模块根据编码发送红外信号,进而实现对空调的控制。
6.3 窗帘
窗帘控制模块使用两个减速电机来带动窗帘的移动,这需要实时检测窗帘的开关状态。这里通过微动开关来感知窗帘的开合状态,WIFI收到指令后会根据微动开关[8]的返回结果来进行判断,确认是否需要运行电机,电机的运行不能依靠单片机提供电源,这里使用H桥,连接额外电源,由NodeMCU提供的两个引脚来实现电机正反转的控制,开始运行后,实时监测微动开关的反馈,并在窗帘达到预定位置后,根据微动开关的反馈停止操作。
6.4 硬件控制小结
这些模块通过WIFI[7]统一的链接到服务器上的接口程序,进而实现统一的通信和操作管理。而通过接口程序的中转,网页和智能音箱都能实现控制的操作。通过WIFI的便利性,基本上大部分的家具都能够搭配合适的控制模块,实现智能化控制,有效的兼容不同平台的设备。添加已有类型的新设备时,只需要在数据库中添加相应数据,不需要更新其他部分即可完成。
7 总结
为了适应性,一套完整的智能家居交互系统是需要兼顾硬件部分的兼容性和控制部分的兼容性,所以本文实现了以设备管理部分为核心的交互系统,通过硬件的多样性,增强普适性,可以实现对传统家电的智能化改造,再通过平台统一管理,可以在控制端进行统一的管理,而且控制的手段自由添加。虽然本文实现的系统还很粗糙,但是它具有未来更完备的智能家居系统的雏形。可以设想到,未来的智能家居还会进一步发展,依靠技术的进步和创新的想法,在这个雏形上可以发展得更加完善、方便、强大。
参考文献:
[1] 童晓渝,房秉毅,张云勇.物联网智能家居发展分析[J].移动通信,2010,34(9):16-20.
[2] 安莹,吴先梅,蓝俊欢,等.基于树莓派的智能语音控制系统的设计[J].电子世界,2018(16):169,171.
[3] 郑岚.Python访问MySQL数据库[J].电脑编程技巧与维护,2010(6):59-61.
[4] 毛德祥,罗荣阁.基于ASP.net技术的Web应用程序三层设计模型[J].微型电脑应用,2002,18(3):26-28,56-3.
[5] 郭东升,田秀华.Linux环境下基于Socket的网络通信[J].软件导刊,2009,8(1):116-118.
[6] 张丽.基于C语言访问的MySQL数据库[J].电子技术与软件工程,2016(22):165-166.
[7] 邱宏斌.一种基于ESP8266模块的物联网设计思路[J].电子世界,2017(7):157.
[8] 张富正.行程开关中的结构应用[J].中国新技术新产品,2012(24):76-77.
【通联编辑:谢媛媛】