基于微信平台的学习型智能家居物联系统的设计与实现

2023-02-13

一、引言

我国正处于科技大发展的时代, 物联网等迅速发展并时刻影响着我们的生活。智能化、便捷化、健康化的生活是我们追求的生活之一。智能家居的发展便是其中的一种实现方式。

对于智能家居, 通常的解释是:融合了当下最先进的计算机通信技术、网络通信技术和家居环境的综合布线技术, 将家庭生活中不同种类的家用电器有机地结合在一起的综合智能控制系统, 通过综合管理, 使得家庭居住环境更舒适、安全、有效。智能家居的主要功能是采集外部控制命令与家庭环境变化的参数, 根据移动手持设备来智控制家用电器, 使得家庭具有自动化服务的功能, 所以家庭服务器是整个控制系统的核心。而将智能家居实际应用反映到现实生活中就是当人们离家在外, 可以通过手机、电脑等手持设备连接家庭智能网络系统远程控制家庭网络上的各种电子设备, 例如在下班回家的路上提前开启空调和热水器, 到达家门口, 通过磁性传感器或红外线, 系统会提前自动打开通道的灯和家居照明灯。

本文提出的基于微信平台的学习型智能家居物联系统, 是以家居智能化为目的, 使用微信公众号和微信硬件平台并通过数据库搭建与调用, 实现智能家居管理的云端化。微信公众平台可实时远程控制家电的工作状态, 记录和显示用户的日常习惯, 并可按照用户的日常习惯对家电进行自动控制, 实现智能家居管理的智能化。通过扫一扫关注微信家庭公众号, 使用户的微信号 (微信ID) 直接与家庭设备进行绑定, 只要关注一下微信号, 用户就能够享受到该系统所带来的便利与温馨的生活。绑定成功后, 在公众号里通过文字、语音聊天, 自定义菜单按钮, H5界面直接对我们定制的家庭设备进行远程管控。控制照明灯的开关状态、亮度, 风扇的转速。微信H5界面对家庭设备运行状态进行监管。用户一天对家电的使用情况, 通过调取用户习惯数据库已微信H5界面展示, 一目了然。本项目最终能够实现智能家居管理的智能化、云端化。

二、系统结构

该系统由安装有微信的便携设备, 微信服务器, 第三方服务器, 数据库, 家庭总机, 家庭的各个设备组成。家庭设备采集到用户的数据通过Wi Fi传递到家庭总机, 家庭总机再将数据转发到指定的云服务器, 云服务器将要显示的信息推送到微信以及网页, 如图1所示。

三、硬件部分

(一) 家庭网关

家庭总机包括:STM32微处理器模块, 3.3V电源模块、ESP8266无线WIFI模块、W5500以太网模块。家庭网关与设备采用Wi Fi来传递数据, 为了实现数据的一对多的全双工通信, 通过多片ESP8266芯片搭建客户机/服务器模型。家庭网关的W5500芯片作为服务器, 在局域网内设置一个固定的IP地址, 家庭设备的ESP8266作为客户机与主机建立TCP连接实现数据的全双工通信。W5500芯片内置以太网网络层协议, 降低了编码的难度, 增强了系统的稳定性。家庭网关采集各个设备的数据, 编码后通过HTTP协议发送请求将数据传递给服务器, 请求采用轮询的方式, 服务器可以实时接收到设备最新的状态, 如图2所示。

(二) 家庭设备

家庭设备的组成十分简单, 包括stm32c8t6芯片以及ESP8266Wi Fi芯片。设备接收到家庭网关的数据后会转化为相应的动作控制设备运行。

四、软件部分

(一) 搭建微信公众平台

微信公众平台提供了家庭设备、微信与第三方服务器数据通讯的功能, 用户能够在微信公众平台上对家庭设备的远程操控和实时的查看家庭设备的运行情况。微信公众平台能和微信服务器进行交互是因为引入了wechat中间件。Wechat负责接入认证和简单的消息回复等交互细节, 是开发者只需关注自己所要完成的开发业务即可。第三方服务器拿到消息后进行解包, 然后进行处理, 处理完成回复请求即可。wechat有三大功能:自动回复功能, 可以回复文本、图片、语音、视频、音乐、图文等;等待回复功能, 用于调查问卷、问答等场景;会话支持功能。结合三大功能, wechat可以应用在微信机器人、公交查询、校园助手、银行平台之类的工具平台, 也可以应用在物联网硬件设备平台上, 具体的业务逻辑需要我们结合数据库封装微信数据后台处理完成。要搭建一个微信远程控制的智能家居系统, 开发前有几个准备条件:首先要向微信公司申请公众号, 并且拿到appid和access_token, 这是每一个公众账号唯一的ID和token。其次要申请一个第三方服务器, 并且能与微信服务器进行连接。这里我们选择新浪的云服务器和mysql。接下来就是要将微信公众号进行接入认证, 在所购买的新浪云服务器上做相应的开发。微信与服务器之间采用XML格式进行数据传输, 具体的传输内容在微信硬件平台开发手册上有详细定义。当用户在微信公众号聊天界面输入内容发送时, 微信会采用文字发送API将文本信息发送给服务器, 以文本消息为例, 格式如下:

服务器收到该消息以后首先转换为数组形式, 从中提取用户的原始ID号对其验证, 验证通过后会确定Msg Type类型, 如果是文本会从Content标签中提取文本内容, 如果是语音消息会调用微信的语言识别API接口将语音转换为文本。

当服务器将数据发送给微信时, 首先需要将数据进行打包处理, 也就是将文本信息打包为xml格式, 设置Content为文本内容, Msg Type为“text”类型, To User Name填写该用户的原始ID号。执行流程图如图3所示。

(二) 公众号交互界面设计

采用用户微信公众号与用户直接交互, 方便用户的查看和控制, 免于安装APP。借助微信开放的接口API, 实现了基本文字回复, 聊天交互功能, 通过语音识别API, 可以实现指令化控制, 微信与服务器采用XML数据格式传送, 将设备状态或者控制参数发送到服务器上。我们还采用了微信二维码绑定机制, 通过设备ID号生成设备二维码记录设备ID信息, 当用户用微信扫二维码时, 微信会自动与该设备绑定并将用户信息设备信息发送到服务器中, 保证只有用户主人才能控制该设备。图4.1-4.4展示了微信公众号在不同的控制模式下的控制情况。

在微信公众平台上聊天式控制家电, 十分方便快捷, 为了满足不会文字输入的人群, 我们调用了语音语义接口API, 实现语音聊天控制。

为了让用户更好的与家电进行“互动”, 我们在公众号的菜单栏中设置了各种情景模式, 可以进行一键式管理全部的家电。为了使平台更具有人性化, 我们在公众平台中植入了聊天机器人。

(三) HTML5界面交互设计

为了实现设备状态的集中显示与控制, 我们还制作了HTML5交互式界面, 前端页面由HTML5和Java Script设计完成, Java Script使用了使用率较高的j Query库来实现网页界面的渲染和美化, ccs样式使用了扁平化的图标风格, 与界面的整体样式相互配合。

页面的窗体结构采用盒模型设计, 将数据和控制一一对应摆放在一行, 每个控件都放在一个div当中, 每个控件采用相同的border属性使布局更加快速整齐。在数据通信上采用AJAX异步通信方式, 将数据通过post方法发送到服务器。设备状态数据由定时器调用get方法请求获得, 以固定时间实时更新面板。

当用户点击链接按钮时, 会开启浏览器定时器, 指定时间内不断发送POST请求, 服务器会验证该用户是否被授权从而决定执行或者忽略该信息。当用户通过服务器验证以后, 服务器发送的内容会在网页的post回调函数内被读取, 并立即刷新状态显示div区域。

我们将HTML5交互式页面与微信采用了同样的原始ID验证机制, 保证了安全机制的统一性, 方便服务器管理。将页面直接内嵌入微信公众号中, 方便直接调用。

图5.1为HTML5控制页面, HTML5制作的控制页面可以在微信中直接打开, 并直接控制家庭设备, 操作简单, 更加人性化。通过HTML5页面用户可以控制家庭设备的一切可控参数, 并且通过一键设置进行智能化管理。并且, 图5.2界面记录了用户使用家电的习惯, 并将数据记录到数据库中, 在合适的时间和位置自动的启动设备。

HTML5页面采用HTML语言、CSS和Java Script编程, 通过Java Script的AJAX与服务器post交换数据, 并且采用定时器实时对数据进行刷新实现实时显示更新。HTML5+CSS+Java Script是现在比较常见的页面设计方案, 我们采用此方案可以保证页面的稳定性, 并且可以通过CSS实现更多风格的页面。由于我们技术和人力有限, 并没有在HTML5页面上添加更多的功能, 但HTML5拓展性很强, 可以添加更多的交互性的元素, 给今后产品的升级留下了很大的空间。

(四) 用户习惯数据的形成

现有的智能家电很大意义上是“物联家电”, 仅仅能实现互联互通, 远程遥控。我们通过对用户使用家电的数据进行采集与分析, 形成针对每个用户个体的使用习惯数据。通过这些数据系统可以辅助用户对家电的控制, 还可以使用大数据对用户习惯进行评价。用户习惯的采集分析方法主要有以下几步:

(1) 创建一个加密数据库来保存用户行为数据, 该数据库为每个家庭成员创建一个表。表有4个属性列, 分别为time (时间) 、ID (设备号) 、power (开关状态) 和state_value (设备属性) 。每当开关状态或者设备属性发生改变时, 系统将数据记录在表中。

(2) 创建一个保存用户习惯的加密数据库, 该数据库为每个家庭成员创建一个表来保存使用习惯。表有5个属性列, 分别为habit_time (习惯状态时间) 、ID (设备号) 、power (开关状态) 、state_value (设备属性) 和level (习惯评级) , 表中数据以habit_time为主键, 按照时间从小到大排序。系统通过统计计算出每个用户的使用习惯数据保存在表中。

(3) 系统将一天时间分成n等分, 每段时间有分钟, 在一天内某个时刻t (单位分钟) 用户对该家电进行操作, 服务器会将该时刻换算成时间段, 同此刻的家电状态一起存入表中;每记录k天统计一次, 首先统计出第一个时间段各个状态Si (i=1, 2, 3...n) 的次数Ci (i=1, 2, 3...n) , 接下来计算出每个状态次数所占总次数的比例, 该比例就是在第一个时间段内各个状态发生的概率, 其中最大概率PMAX对应的状态Si就是第一个时间段内最大可能性状态, 将其作为习惯状态保存下来, 同理, 计算并保存其余各个时间段的习惯状态。

(4) 每经过一段固定的时间 (默认为5天) , 系统执行一次步骤 (3) 的算法, 系统会对习惯数据进行加权得到习惯等级。最后系统将习惯数据推送到前端显示或者协助用户进行控制。

在计算用户习惯数据时需要注意的情况:

(1) 记录的数据量大小是评判是否为习惯的重要指标, 所以为了保证足够的记录量, 习惯数据算法执行的时间间隔要足够长 (一般要5天以上) 以确保足够多的数据参与计算。 (2) 数据在使用前需要进行筛选, 对记录的属性值有较大偏差的数据需要剔除, 确保数据的准确性。 (3) 用户的行为数据需要进行加密保护, 以及访问权限的设置, 确保用户隐私安全。

五、结论

随着互联网技术不断发展, 越来越多的智能化设备出现在人们眼前, 改变着人们的生活习惯。

本文介绍了一种基于微信平台的学习型智能家居物联系统, 通过对用户行为习惯的采集和分析获得用户的使用习惯, 使系统更加的智能。设备信息通过微信公众号这一独特便利的方式展现给用户。物联网和社交平台的深度融合是大势所趋。

摘要:本文介绍了一种基于微信平台的学习型智能家居物联系统, 该系统使家电设备通过总线或者WIFI与家庭总控制器连接通讯, 家庭总控制器通过智能网关 (HTTP请求) 与微信硬件平台的第三方服务器连接。这样借助微信硬件公众平台服务器能向用户的微信做推送家电状态信息, 日常的习惯, 用户又可以借助微信远程操控家电设备。服务器能够对用户个人使用习惯 (比如回家时间, 进门后接着打开空调等信息) 进行分析并储存, 待符合条件 (比如:时间, 位置) 后根据习惯便能自动打开相应设备, 无需人为操作。个人习惯又可以通过微信公众平台更改、记录、显示、分享、借鉴。这样一种人为监督与半监督式的管理使系统越来越智能化、人性化与个性化。本文还详细阐述了在智能家居的背景下个人习惯的提取算法。

关键词:微信,智能家居,个人习惯

上一篇:胰岛素泵输注门冬胰岛素强化治疗2型糖尿病疗效观察下一篇:少数民族地区构建ODR的困境及展望