基于微信聊天机器人的智能家居系统
2022-06-22杨文涛郑天成汤志谦
杨文涛,龚 韦,郑天成,汤志谦
(1.华中科技大学 光学与电子信息学院,武汉 430074;2.武汉智鼎云网络科技有限公司,武汉 430070)
现代智能家居是以家庭住宅为依托,将计算机网络通信技术、传感器技术和自动控制技术等多项技术进行了一体化整合,使人们的家居生活更加舒适、安全、便捷[1-2]。 智能家居系统需要将多种智能家电设备、智能传感器以及智能网关,按照物联网(Internet of Thing,IoT)协议,实现数据共享与控制联动工作[3],并且通过因特网使智能家居系统与外部世界相连接,实现用户对智能家居系统的远程控制。
传统智能家居系统的交互通常采用基于程序窗体控件的点触方式来操控家居设备。 文献[4]设计了基于QT 智能网关的智能家居系统,用户控制家居设备需要在直接网关应用程序的控制界面进行手动操作。 文献[5]设计了基于无线蓝牙的智能家居系统,用户通过移动终端的APP 界面与家居设备进行交互。 这些智能家居系统存在一些问题:①采用点触界面控件的人机交互方式显得低效呆板、缺乏智能;②由于不同厂商提供的智能家居系统实施的标准和方案不统一,对应的用户客户端应用程序也互不相同,这不利于智能家居应用的普及和推广。
微信作为当今最流行的大众化即时通讯工具[6],拥有极其庞大的用户群体。 聊天机器人能够赋予机器设备进行语音或文字交流、 模拟人类对话的能力,从而提供了一种便捷的、智能化的人机交互方式[7]。 微信聊天机器人将微信即时通讯技术与聊天机器人技术2 种应用技术的优势充分融合在一起[8],为一些服务行业提供了自动客服、自动聊天等新型交互应用功能。
由此,针对传统智能家居系统不足,本文提出了一种基于微信聊天机器人的智能家居控制系统,用户无需安装各类客户端应用程序,只需通过微信聊天的方式就可以对智能家居系统进行高效、智能化的控制和管理,这将很大程度上提升用户的便捷性,从而提高用户对智能家居系统的亲和度和粘度。
1 系统结构
1.1 系统总体结构设计
智能家居系统通常采用基本的物联网架构,划分为感知控制层、网络通信层和应用服务层[9-10],如图1 所示。
图1 基于物联网的智能家居系统结构Fig.1 Smart home system structure based on IoT
在感知层中,智能家电和各类传感器等前端感知设备用于采集和上传数据,响应智能网关的操控指令。 智能家居系统常规的功能主要包括安全防盗、火灾报警、家用电器等。 温、湿度传感器分别采集室内温度和湿度数据。 安全部分主要包含烟雾和红外探测。 烟雾数据通过烟雾传感器采集。 红外探测用于红外传感器检测人体红外辐射,摄像头主要用于室内视频监控。
在网络层中,智能家居网关是家居智能化的核心,其主要任务是组建家居网络环境、数据协议转换和传输,以便集中实现对家居设备的网络化、智能化管理控制[11]。 智能网关对前端感知设备的传感器数据进行处理,进而实现系统的各种控制功能。
在应用层中,由云端提供各种应用服务,家庭成员用户可以利用智能手机、智能平板等终端设备接入智能家居节点,通过客户端应用程序向前端感知设备发送操控命令,实现对家居设备进行远程操控和管理。
1.2 智能网关设计
智能网关是整个智能家居的核心[12],除了网关通用功能如设备控制、物联网协议转换及网络通讯外,还集成了微信聊天机器人对智能家居系统的聊天控制。
本智能家居系统的智能网关设备采用天启智能AIO-3399J 核心板开发设计。 该平台具有性能优越,外设硬件资源丰富的特点,在其内部集成了多种外设接口。 另外,该板卡支持2.4 GHz/5 GHz 双频WiFi 网络接口,通过外接集成AP6356 WiFi 通信模块实现WiFi 网络通信。
在系统软件方面,网关设备采用开发板自带的Linux 操作系统和硬件驱动软件。运行于Linux 系统之上的智能家居系统应用层软件主要有MQTT 服务器、设备控制器、微信聊天机器人、主控应用程序和云服务客户端等。 智能家居网关设备的软硬件系统的设计总体结构如图2 所示。
图2 智能网关软硬件系统设计Fig.2 Design of software and hardware system of intelligent gateway
1.3 前端感知传感器设计
1.3.1 智能传感器
对于温湿度传感器和烟雾传感器、安防系统中的红外传感器和监控摄像头等都属于小型功能性的传感器,可以灵活地部署客厅、卧室、厨房阳台等处。 这些传感器通过无线网络,按照物联网协议将传感数据传送至网关[13]。 为此,本文选用NodeMCU模块设计和制作各类传感器节点。 NodeMCU 支持MQTT 物联网协议,同时搭载有ESP8266 WiFi 模块[14],能够将传感数据直接传送给智能网关。
具体来说,NodeMCU 开发板的GPIO 口连接传感器即可组成相应的各类智能传感器如DHT11 温湿度传感器、MQ-2 烟雾传感器,红外传感器HC-SR501等。此外,监控摄像头考虑采用RT-IoT Camera 可编程物联网摄像头,可以将视频直接通过WiFi 传输给智能网关。
1.3.2 智能家电设备
为了实现对家电设备统一管理, 本文采用NodeMCU+红外控制器组成的控制板实现对智能家电设备控制。其中,外接红外发射器SIR333,红外接收器VS1838 构成红外收发器,它们通过GPIO 端口连接至NodeMCU,组成了NodeMCU 红外控制板。NodeMCU 接收来自网关的控制指令,将指令转化为的红外编码格式数据发送至家电设备实现对其控制;反之,家电设备将工作状态信息也通过红外接口发送至控制板和网关。
2 系统软件设计
智能家居控制系统软件主要包括4 个部分:MQTT 服务器、设备控制器、微信聊天机器人、主控应用程序,各软件模块的相互关系如图3 所示。
图3 智能网关软件模块组成Fig.3 Software modules of intelligent gateway
2.1 MQTT 服务器
针对前端各类感知设备,通过MQTT 服务器构建了完整的消息转发系统,对传感数据进行实时发布和订阅主题消息[15]。 采用MQTT 物联网协议组建智能家居系统内部通讯网,有利于降低各个软件模块的耦合性,提高了系统的可靠性和扩展性。
为了简化开发过程,本文直接选用开源框架Mosquitto 搭建MQTT 服务器。 Mosquito 是一款实现了消息推送协议MQTT v3.1 的开源消息代理软件,提供轻量级的, 支持可发布/可订阅的消息推送模式。如图3 左上虚线框对应的MQTT 通讯部分所示,Mosquitto 作为MQTT 服务器实现消息代理。
2.2 设备控制器
设备控制器是智能网关的核心组件,负责管理前端感知设备,同时实现设备操作指令与MQTT 消息的相互转换和传输。 如图3 中左上虚线框对应的MQTT 通讯部分所示, 设备控制器作为MQTT 客户端,将聊天机器人或主控应用发送来的控制指令请求转化为MQTT 消息,通过MQTT 服务器发布给前端感知设备,前端感知设备接收到此订阅消息后执行对应的硬件操作;反之,前端感知设备将指令执行的结果转化为MQTT 消息推送给设备控制器,并最终传送给聊天机器人或主控应用。
2.3 微信聊天机器人
聊天机器人是家庭成员与前端感知设备沟通的桥梁,它能够将文字、语音、表情等聊天信息翻译成控制指令发送给设备控制器执行相应的操作。 聊天机器人主要包括微信接口、聊天引擎两个部分。
微信接口:采用ItChat-UOS 微信接口,它继承了ItChat 框架的优秀特性, 提供了实现微信聊天的各种接口方法。
聊天引擎:负责聊天任务调度、参数配置、指令解析与消息回传等。
家庭成员可利用智能手机的微信程序与智能网关中的微信聊天机器人聊天通讯,进而实现对智能家居的感知设备进行人-人交互, 取代了传统的基于窗体控件触控式的人-机交互方式。
2.4 主控应用程序
主控应用程序是基于Linux 的QT 开发的桌面应用程序,用户可以直接在智能网关设备显示屏上管理和操控各个前端感知设备,同时便于配置智能家居节点的系统参数,完成初始化工作。 主控应用程序基于HAL 固件库开发,程序主要包含驱动各模块运行、显示操作界面、配置WiFi 网络、操控和查看传感器设备工作状态。
3 系统实现
3.1 主控应用程序实现
主控应用程序是直接运行于网关设备上的对智能家居节点内的前端感知设备进行管理和操控的主程序。 启动后进入导航主界面, 显示卧室、客厅、厨房、阳台等生活场景区域等,如图4(a)所示。选择某个场景区域,可以显示对应的智能传感器或设备的运行状态。 如图4(b)所示,在客厅控制界面中显示空调的运行状态和模式, 监控冰箱的温度、对灯光照明进行控制操作。
图4 智能网关主控应用程序操作界面Fig.4 Main application operation interface of intelligent gateway
3.2 微信聊天控制实现
聊天机器人绑定一个微信账号,该帐号与其他用户构成一个智能家居节点家庭群。 当聊天机器人启动后,登录微信平台,获取家庭群中的聊天信息。聊天引擎将群内聊天信息进行解析成设备控制指令发送给设备控制器执行。 反之,聊天引擎将前端感知设备的传感数据或指令执行结果转换成聊天消息,推送至聊天群内。 下面以打开客厅智能空调为例, 分析基于微信机器人聊天的控制实现过程,流程如图5 所示,对应的步骤如下:
图5 微信聊天智能家居控制系统流程Fig.5 Flow chart of smart home control system based on Wechat
(1)家庭成员用户、微信聊天机器人(设定的一个微信账号)通过好友设置,组建一个“智能家居节点微信群”。
(2)运行聊天机器人程序,聊天机器人(名称为“小雨”)自动登录微信平台,上线后在微信群中发送问候语“Hi,我是小雨”。
(3)家庭成员用户User1 打开手机端的微信程序,登录上线后,在微信群中输入消息:“@ 小雨,打开客厅空调”, 该消息发送至包括聊天机器人在内的所有群用户。
(4)聊天引擎对一条消息进行指令解析。 解析成功,提取消息中的关键字“打开”、“客厅”、“空调”,将其翻译成一条控制指令KT_Open,并发送给设备控制器;如果解析失败,回到步骤3。
(5)设备控制器程序通过进程通讯方式,接收来自聊天机器人的控制指令后,将控制指令KT_ Open封装成MQTT 消息MT_ReqMsg,发送至Mosquitto服务器。
(6)Mosquitto 服务器将MT_Msg 消息转发出去,客厅空调控制器通过消息订阅方式获取本消息,并解析转化为客厅空调的操控指令KT_Open 执行。
(7)客厅空调控制器将指令KT_Open 执行结果KT_Status 数据封装成MQTT 消息MT_ResMsg 发送至Mosquitto 服务器发布。
(8)设备控制器利用订阅方式获取MT_ResMsg消息,解析得到KT_Status 数据。
(9)通过进程通讯方式,聊天机器人接收来自设备控制器的KT_Status 数据, 聊天引擎将其翻译转化为类似 “@User1 客厅空调打开成功”的聊天信息发送微信群中。
图6 显示了用户通过与微信机器人进行微信聊天,实现了“打开客厅空调”操作过程。
图6 在微信中打开客厅空调Fig.6 Switch operation to air conditioner on the living room in Wechat app
4 结语
针对传统智能家居系统控制方式采用点触操控界面存在繁琐、呆板、缺乏智能等问题,本文设计了基于微信聊天机器人的智能家居控制系统。 采用以自然语言为基础的人-人对话操控方式的智能家居系统具有智慧、高效、人性化的特点。 它不仅克服了传统智能家居系统在控制方式上的种种弊端,并且给用户带来了新奇的体验感受。