基于ZigBee技术的家电微信控制系统设计
2017-09-09梁荣龙黄同成
梁荣龙+黄同成
摘 要:设计一个基于ZigBee无线通信技术的家电微信控制系统。该系统组网方便,将嵌有无线传感器的家居、家电同互联网相连,可实现远程控制,提供舒适、方便和人性化的智能家居环境。阐述了系统的设计原则、模型分析和关键技术实现。
关键词:ZigBee技术;嵌入式开发;微信公众平台;智能家居
DOIDOI:10.11907/rjdk.171345
中图分类号:TP319
文献标识码:A 文章编号文章编号:1672-7800(2017)008-0069-04
0 引言
智能家居行业近几年来获得了迅速发展,中投顾问发布的《2016-2020年中国智能家居市场投资分析及前景预测报告》显示,智能家居产值2010年为50亿元,2014年上升至1 600亿元,2015年达到约2 300亿元,到2020年整个智能家居产值将突破万亿元。但是目前大多数家居控制系统只能通过相应的APP使用,并且只能在局域网中对家居进行控制,无法满足人们希望随时随地方便快捷地控制家电的需求[1]。而微信是人们使用最多的一款APP,如果把微信公众平台引入到智能家居控制中,用户无论使用哪种操作系统的手持设备,只要使用微信客户端关注并绑定一台智能设备,即可通过微信完成对设备的控制。本文提出一种基于ZigBee协议[2]、通过微信客户端进行控制的智能家居控制系统设计方案。
1 系统功能设计
基于ZigBee技术以及微信控制的智能家电系统主要借助微信公众平台提供的数据传输、消息推送等服务,搭建云服务器,对接微信提供的数据接口,同时在Web网页内扩展操作方式。
系统控制流程如图1所示。在微信公众平台上注册公众账号,基于该公众号信息开发云服务器,并通过微信公众平台API与微信公众平台进行数据交互,即可处理手机端向微信公众号发送的控制指令并作相应处理。另外,云服务器创建了一个Socket服务端,让部署在家庭中的WiFi模块可以通过Socket连接到云服务器上,获取控制指令消息,再通过串口转发到ZiGBee协调器;ZiGBee协调器通过ZiGBee网络与各ZiGBee节点进行广播通信,节点通过点播将结果返回给协调器;协调器再通过串口发送到WiFi模块,WiFi模块通过Socket发送到云服务器;云服务器通过微信公众平台消息接口把结果返回并展示给手机端用户。
用户发送文本消息通过验证绑定设备后,即可在微信公众号内部通过点击自定义菜单来控制设备。在此之前,需要在微信公众号注册以获得账号信息及填写接口配置信息,如图2所示。在通过认证后,才能接受微信推送。开发者提交验证申请时,微信服务器发送GET请求到填写的URL上(见图2示例中的doPost接口)。该请求携带的参数为:signature、timestamp、nonce、echostr,开发者通过对签名(即signature,该参数结合了开发者填写的token,见图2示例中的“weixinValidation”参数和请求中的timestamp参数、nonce参数)的校验,判断该请求是否来自微信服务器。应用服务器验证通过后,需要将echostr参数反馈给微信服务器,从而接入生效,成为开发者。
有了以上信息后,即可开发微信服务器响应程序,并将响应程序部署到tomcat下运行。本系统使用微信推送的消息主要包括[3]:①自定义菜单事件。微信公众平台提供自定义菜单服务,开发者根据系统需求上传一个JSON格式数据到微信提供的“自定义菜单创建接口”。本系统创建了一种菜单类型——click菜单类型,用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者[4];②普通文本消息。该接口主要用于用户验证并绑定设备时,微信用户给公众号发送消息,微信服务器将消息内容以XML格式发送到开发者填写的URL上[5]。如用户发送“注册:lisi2017”,应用服务器则根据消息格式验证并绑定相应设备。
2 关键技术及系统实现
2.1 关键技术
2.1.1 ZigBee技术
ZigBee无线通信技术是一种广泛应用于远程控制和工业控制的技术。其中,ZigBee的2.4G赫兹、915M赫兹和868M赫兹是目前为止应用最多的。它们的传递速度分别为:250Kbits、40Kpbs和20Kpbs,且有效范围为10~100m。为了更好地保护数据安全,ZigBee设置了3个不同的安全等级,用户可以根据自身的使用情况进行选择。另外,ZigBee的嵌入式技术是其它无线设备很少具备的,还集成了其它无线设备成本低、功耗低的优点,因此其更加受到工业领域的青睐[6]。
与其它无线通信技术相比,ZigBee技术有以下优势:
(1)廉价性。ZigBee使用的芯片价格仅在两美元左右,而且技术免协议专利费。
(2)功率消耗低。因为其独特的待机模式,使两节五号电池可在一个节点下使用两年之久。
(3)速率低。ZigBee在较低速率环境下工作,且其在不同频带间可以提供不同的数据吞吐率,用于满足不同速率传送数据的需要。
(4)高效性。为了节省功耗,不同的无线设备均设置了不同的休眠模式。其中WiFi休眠至工作模式需要3s,蓝牙需消耗3~10s,而ZigBee仅需15ms,其从节点连接到网络也仅需要30ms。
(5)数据传输量大。ZigBee可使用树状、星状和网状网络构造,通过一个主要节点对其它节点进行集中管理。一个主节点最多可管理254个子节点,同时主节点还可由上一层网络节点进行管理,最多可组成65 000個节点的大型网络。
(6)安全性高。ZigBee为适应不同安全要求,设计了三级安全模式,其中无安全设定、使用访问控制列表为防止非法获取数据的基础模式,而对称密码为釆用高级加密标准的高级安全设置。endprint
2.1.2 微信公众平台
微信公众平台是目前移动互联网上最受关注的平台之一,企业也可以通过公众号进行有效的品牌营销。通过公众平台可将生活服务、商户、大众媒体等全部整合起来。2013年11月,由海尔、腾讯联合推出的应用微信技术的家电——天樽空调,开创了家电领域运用微信控制电器的先例。2013年12月23日,互联网电视运营商未来电视、电子消费生产商创维与腾讯联合打造的“微信电视”在北京发布。本文实现了一种新的智能空调使用方式,借助微信公众平台的消息推送功能、微信公众号具有的Web网页扩展功能和开源的sip协议(会话发起协议),实现了一款在微信公众号内部和嵌入的Web网页里完成智能空调控制的系统[7-8]。用户无需下载APP,即可以实现与设备在微信内聊天式的双向互动。用户只需要在智能终端上安装一个微信客户端,然后关注该智能控制公众号后,即可实现对空调的控制。
2.2 系统框架及开发环境搭建
2.2.1 应用服务器开发环境
本系统采用Java开发应用服务器,使用Eclipse作为开发工具,可以很方便地通过搭建servlet来实现http服务,开发Java项目[9-13]。
为了运行Java程序,需要安装JDK,Java通过JVM实现跨平台运行,JVM包含在JDK中。安装好JDK后即可运行Eclipse,新建一个Maven project,选择maven-archetype-webapp原型,填写Group Id以及Artifact Id,按照提示完成新建。
2.2.2 应用服务器Tomcat
项目完成后要通过应用服务器进行发布,本文采用Apache Tomcat服务器[14]。Tomcat是一款由Apache、Sun等公司开发的开源软件。Tomcat中部署的应用程序是一个WAR(Web Archive)文件。Tomcat的目录结构如图3所示。
将项目war包复制到webapps文件夹下,然后启动Tomcat即可。需要注意的是,微信公众平台要求应用服务器必须在80端口接收数据,所以需要将Tomcat默认的服务端口8080修改为80端口。修改conf文件夹下的server.xml文件,将其中Connector的port修改为80,如图4所示。
现在即可通过Tomcat发布已经写好的项目了。更新war包,先删除Tomcat目录下的work/Catalina文件夹。因为这个文件夹中保留有项目的缓存,若不清理该文件夹,有可能出现代码不更新的情况。
2.2.3 Spring框架分析
Spring框架为POJO(Plain Old Java Object,简单Java对象)提供的各种服务共同组成了Spring的生命之树[15],如图5所示。组成整个Spring框架的各种服务实现被划分到多个相互独立却又相互依赖的模块当中。整个Spring框架构建在Core核心模块之上,它是整个框架的基础。本文中的应用服务器采用Spring作为系统基础架构,将各个事务处理线程连接起来。
2.3 系统实现
系统程序使用Spring MVC 框架搭建Maven项目。使用Spring框架有许多优点,Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦;Spring的AOP支持将一些通用任务,如安全、事务、日志等进行集中式管理,从而提供了更好的复用;Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问;Spring的高度开放性并不强制开发者完全依赖于Spring,而是可自由选用Spring框架的部分或全部。該系统程序主要接收微信公众平台转发的微信用户消息,微信用户向公众号发送消息时,公众平台将消息转发到一个URL上,该URL由开发人员配置。系统程序响应该URL请求,接收HTTP请求发送的数据,对数据进行协议解析,然后通过Socket连接发送控制指令到嵌入传感器及WiFi模块的智能硬件上,智能硬件接收到控制指令便执行相应操作。Zigbee基于802.15.4物理层协议、支持自组网、多点中继,可实现网状拓扑复杂的组网协议,加上其低功耗的特点,使得网络间的设备必须各司其职,有效地协同工作。因此,基于ZigBee技术的组网方式可以高效地实现多台家电集成控制。
2.4 系统测试
(1) 关注公众号,公众号将为用户推送“谢谢您的关注!”消息内容。用户点击自定义开关按钮“智能开关”时,若未通过验证则需先进行验证。
(2)验证注册,绑定设备。用户向公众号发送注册信息,如注册:lisi。若智能设备的单片机未通过网络连接到服务器,则公众号向用户推送“单片机未连接!”消息提示。此时用户需将设备打开并连接网络(本文使用WiFi透传作为通信链路,打开设备即自动连接WiFi以接入服务器),设备连接后用户发送注册信息(注册信息的验证名,如lisi,需与设备提供的验证名相同),公众号提示验证成功,如图6所示。
(3) 控制智能设备打开或关闭。验证成功后,用户点击自定义菜单“智能开关”,智能设备打开或关闭,公众号向用户推送“开关打开”或“开关关闭”消息,如图7所示。
经测试,用户可通过网络随时随地向公众号发送控制指令控制智能设备,智能设备处于可以连接网络的环境中。若部署在家中,可设置WiFi让智能设备连接网络,以方便控制。为了更全面地实现智能家居的功能,在家庭中部署一个ZigBee协调器,用来收集各ZigBee节点数据,以及转发用户发送的对各智能设备的控制指令,可以使用户控制更多设备。
3 结语
本文阐述了基于ZigBee网络的通过WiFi透传的微信家电控制系统的研发与实现。结合物联网智能家居发展情况,分析了智能家电控制需求,提出借助于微信公众平台提供的功能实现智能家电控制。探讨系统开发流程及开发过程中可能遇到的问题,如开发环境的搭建、开发工具的使用、编程过程中关键技术的分析等,以及项目的需求分析、功能分析和系统架构设计,编程实现了本控制系统,并对其进行了功能测试,结果可满足功能需求和设计要求。endprint
参考文献:
[1] 王志军.基于物联网技术的智能家居系统的实现研究[D].淮南:安徽理工大学,2012.
[2] 宋国鹏,周云峰,朱梦宇.基于Zigbee的智能家居系统[J].电子世界,2012(9): 94-96.
[3] 微信公众平台开发者文档:自定义菜单事件推送[EB/OL].https://mp.weixin.qq.com/wiki.
[4] 微信公众平台开发者文档:接收普通消息[EB/OL].https://mp.weixin.qq.com/wiki.
[5] 微信公众平台开发者文档:接收事件推送[EB/OL].https://mp.weixin.qq.com/wiki.
[6] 刘盛德,瞿雷.Zigbee技术及应用[M].北京:北京航空航天大学出版社,2007.
[7] 刘西杰,柳林.HTML、CSS、JavaScript网页制作从入门到精通[M].北京:人民邮电出版社,2012.
[8] [美]JONATHAN CHAFFER,KARL SWEDBERG.jQuery基礎教程[M].第4版.李松峰,译.北京:人民邮电出版社,2013.
[9] [美]BRUCE ECKEL.Java编程思想[M].第4版.陈昊鹏,译.北京:机械工业出版社,2007.
[10] [美]DAVID GOURLEY,BRIAN TOTTY,MARJPROE SAYER,et al.HTTP权威指南[M].陈涓,赵振平,译.北京:人民邮电出版社,2012.
[11] 林博辞.Ajax框架及JSON技术在J2EE架构中的研究与应用[D].大连:大连海事大学,2012.
[12] [加]BUDI KURNIAWAN.Servlet和JSP学习指南[M].崔毅,俞哲皆,俞黎敏,译.北京:机械工业出版社,2013.
[13] [美]BRIAN GOETZ,TIM PEIERLS,JOSHUA BLOCH,et al.Java并发编程实战[M].童云兰,等,译.北京:机械工业出版社,2012.
[14] JASON BRITTAIN.Tomcat:the definitive guide[M].Createspace,2007.
[15] Spring基础知识汇总[EB/OL].http://www.runoob.com/w3cnote/basic-knowledge-summary-of-spring.html.endprint