0 引言
随着科技的发展,人们对居住条件的要求逐渐提高,传统的只有居住功能的家居已经不能满足人们对居住环境的要求,智慧化和数字化是未来家居的发展趋势。随着物联网技术的不断发展,智能家居成为新的研究热点和应用领域。近几年,微信已经被广泛普及使用,它可以保证用户的真实性,所以可以将微信与智能家居相结合,通过密钥进行身份认证,认证通过后用户便可与智能设备之间进行数据交换。基于此,本文将微信公众号和CC3200芯片相结合,使用云服务器存储数据,实现了用户远程操控家居设备、获取家居环境状态的功能,系统可靠性高、实用性好、控制方便,具有较好的应用前景。
1 系统设计方案
系统框图如图1所示。用户首先需要接入网络并且关注云家居公众号,之后通过密钥绑定家居控制系统,就可以在公众号中发送文本、语音消息,或者点击公众号中的菜单实现以下功能:远程控制家居设备,例如台灯、风扇、空调等;查询设备状态,例如获取台灯状态、风扇转速、空调温度等;获取传感器数据,例如室内温湿度、天然气浓度值等。

系统分为服务器端和客户端:服务器端为微信服务器和阿里云服务器;客户端为微信公众号和CC3200 LaunchPad开发板,这两个客户端都可以向服务器提交数据和下载数据。
微信服务器定义了公众号菜单,并且把微信客户端发送的消息以可扩展标记语言(Extensible Markup Language,XML)形式的数据发送到阿里云服务器;阿里云服务器根据指令更新数据库,同时接收开发板上传的传感器数据,将数据存入数据库。
当微信公众号请求数据时,阿里云服务器将响应消息打包成XML数据,并通过微信服务器转发到微信客户端;当开发板请求数据时,阿里云服务器将请求的数据通过HTTP协议响应给开发板。
2 系统硬件设计
系统硬件组成框图如图2所示。本系统采用CC3200作为主控芯片,该芯片是TI推出的集成高性能ARM Cortex-M4内核的微控制器,是业界首个具有内置Wi-Fi的MCU。CC3200芯片包括3大子模块:MCU子模块内核运行频率为80 MHz,具有多种外设;Wi-Fi网络处理器子模块支持站点STA、接入点AP和Wi-Fi Direct模式;电源管理子模块可以启用低功耗模式。

CC3200通过Wi-Fi连接到路由器,进而接入互联网,然后通过HTTP-GET的方式获取数据库中台灯等设备的状态,同时将传感器数据上传到阿里云服务器。
3 系统软件设计
软件设计包含3部分:CC3200微控制器程序设计涉及将设备联网进行数据的上传和下载、传感器数据的采集和显示;微信公众平台程序设计包含微信公众号菜单界面设计;阿里云服务器程序设计包括微信请求接口、CC3200数据交互接口。
3.1 CC3200微控制器程序设计
CC3200通过Wi-Fi连接到路由器,进而接入互联网,然后创建HTTP客户端,连接到HTTP服务器上,上传传感器状态并且获取最新的控制指令。
其中,开发板上传状态并获取指令流程图如图3所示。首先设置HTTP-GET的请求头,主机名Host为139.129.9.166,通过sprintf函数设置请求URL:sprintf(acSendBuff,"/WeChat/cc3200/upload_and_get.do?sequence=number1&temperature=%.2f&humidity=%d&MQ2Data=%d",temperature,humidity,MQ2Data),温湿度和天然气浓度通过此URL进行上传;之后发送HTTP-GET请求到阿里云服务器,服务器接收到请求后定位请求资源,然后将资源响应给开发板。

开发板收到HTTP响应后先判断状态行的状态代码是否等于200,若等于200就代表客户端请求成功,此时先逐行读取响应头部,直至到达响应头部的末尾,然后进行响应正文数据的处理。
处理响应正文数据过程为:响应正文为“light=off,fan=on,airconditionState=cold,airconditionTemp=26”,以获取台灯状态为例,通过strstr函数寻找“light=”字符串在响应正文中的位置(pcIndxPtr),然后将pcIndxPtr加上“light=”的长度得到台灯状态字符串的起始地址,进而得到台灯状态并更新。
3.2 阿里云服务器程序设计
3.2.1 微信请求接口设计
微信服务器把用户发送的消息(文本、语音、菜单)以XML代码形式转发到阿里云服务器,转发的URL为http://139.129.9.166/WeChat/wechat/index.do,微信请求接口程序流程图如图4所示。

具体过程如下:
(1)请求经过阿里云服务器的处理后分发到WeChatController.java文件中的index函数,此函数先将XML消息解析成Map,然后获取消息的类型MsgType:文本、语音、菜单消息分别对应text、voice、event。
(2)根据消息的类型分别路由到不同的函数进行处理:文本、语音和菜单消息分别对应函数onText、onVoice、onEvent,在这些函数中获取不同类型数据中的微信消息wxMsg,然后判断wxMsg中是否存在命令信息,比如开台灯、风扇状态等命令,若存在则将其转换为关键字key,例如L_ON、F_STATUS等。
(3)根据关键字调用WxAction类中相应操作函数:若关键字为L_ON,则调用函数do_l_on;如果关键字为F_STATUS,则调用函数do_f_status。
上述操作函数分为两种处理方式:若操作为开台灯等类别命令时,操作函数首先把命令保存到数据库,然后把需要回复的文本及对应语音URL打包成XML格式回应给微信服务器;若操作为获取台灯状态等类型命令时,操作函数首先从数据库里读取状态信息,然后打包回应给微信服务器。
3.2.2 CC3200数据交互接口程序设计
CC3200数据交互接口程序流程图如图5所示,具体过程为:CC3200的HTTP-GET请求经阿里云服务器处理后分发到CC3200Controller.uploadAndGet函数进行处理,从请求的URL中取出CC3200上传的温湿度和天然气浓度值,存入MySQL数据库;之后从数据库中读取台灯等设备的状态,通过HTTP协议响应给CC3200,从而可以更新设备状态。

3.3 微信公众号程序设计
微信公众平台上自定义菜单有助于丰富公众号的界面,让用户更好更快地理解公众号的功能。自定义菜单接口可实现多种类型按钮,比如click按钮、view按钮等。
其中,用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给阿里云服务器,并且带上按钮中所填写的key值,比如台灯状态等;用户点击view类型按钮后,微信客户端将会打开在按钮中填写的网页URL,比如本设计中用户可以通过点击公众号右下角的“用户手册”查看该公众号如何使用。
4 系统测试
液晶显示屏上显示的信息如图6所示,绑定设备和获取温湿度界面如图7所示,文本控制台灯和语音控制风扇界面如图8所示。



5 结论
本文将微信公众号和内置Wi-Fi的CC3200芯片加以结合,并利用云服务器存储数据,设计了一款云家居交互系统,用户使用微信公众号即可远程控制家居设备并获取家居环境状态。
系统优势在于:(1)数据处理代码部署在服务器上,系统更新升级只需在服务器上进行,用户不需要进行软件更新,体验性较好;(2)将家居设备联网,使用户随时都可以对家居设备进行控制,实现了智能化;(3)将微信和阿里云服务器巧妙地结合起来,为智能云家居提供了一个良好的范例。
