罗志富 陆 莹 杨程钧 蒙成举 陈东昕 梁珊珊 黄华振
(河池学院人工智能与制造学院,广西 宜州 546300)
随着社会的进步,人们的生活质量不断提高,越来越多的人开始追求高质量的生活。智能家居作为智能化发展的重要组成部分,在人们的生活中逐渐发挥着更重要的作用[1-2]。如今物联网和智能家居已深入人心,众多厂商相继推出基于ZWAVE、ZIGBEE、蓝牙、WiFi、SUB1G 等协议的智能家居系统[3]。这些厂商可独自形成完整的生态系统,但不同厂商的产品的设备接口、通信协议等有所不同,尚未形成统一的标准,不同品牌的设备的联动较为困难,这极大地制约了智能家居产品的推广与普及。Home Assistant 系统是一款基于Python 语言的智能家居开源系统[4-6],其支持接入众多厂商的智能家居设备,能非常方便快捷地连接各种外部设备,并能通过软件代码模块的添加与修改,按照需求来自动连接外部设备,从而轻松实现设备的语音、图像识别等自动控制功能,同时其软件还支持大部分操作系统,包括macOS、Linux、Windows 等,可实现协同控制与集中化管理,从而避免一种设备一个APP软件的繁杂安装过程,能极大节省控制系统的存储空间。目前,智能家居已逐渐进入人们的生活,但众多智能家居系统的互联互通问题依然难以解决。
基于此,本研究基于联网平台,在Windows 系统中搭建Home Assistant 环境,并以Home Assistant系统为核心,结合具体需求来搭建各种功能硬件模型,把搭建好的硬件功能模块接入到Home Assistant系统中,并通过Home Assistant系统对已接入的简易家用电器设备进行配置,从而进行集中化的控制管理,具有方便、智能、低成本等特点,使人们的居住体验和生活品质得到提高。
本研究设计的系统是以Home Assistant 云端服务器为上位机系统,下位机Cortex-A11ARM主控板是基于ubuntu的操作系统,控制系统结构框架如图1所示。
图1 微型家用电器智能控制系统结构框架图
Home Assitant系统通过对各类智能家居设备的自动化规则进行设置,从而使其智能联动。本研究设计的系统具有智能门禁、智能家电控制、智能窗帘控制、家居自动化设置等功能。智能门禁系统通过判断探测摄像头影像中是否存在人脸,并将其以图片的形式存放在指定的目录文件夹中,通过Home Assistant系统中自动化配置相关信息后,可实现对门禁的控制。智能家电控制系统既保留了传统的人工开(关)照明器,又能通过红外感应的方式来自动开(关)照明器。此外,还增加无线模块,可通过手机、平板或电脑进行开关操作,从而实现对家电设备的远程控制。智能窗帘控制系统通过气体传感器对室内气体的成分进行探测,并将采集到的信息发送到电脑系统中,通过自动化配置后,可对窗帘系统步进电机进行正反转的控制,从而实现窗帘的开、关动作。
该系统的控制中心是基于开源软件Home Assistant平台,系统选择的是hassos 镜像系统,该镜像系统是特别定制的高集成度、图形化操作、易于上手的Home Assistant操作系统,由ResinOS及Docker进行驱动,旨在简化Home Assistant 的配置操作,具体流程如图2所示。
图2 软件设计流程图
人脸识别开锁的伪代码实现如下。
本研究设计的简易家电控制系统是由中心管理平台、无线转发器、信息家电控制器、控制模块、智能控制开关、步进电机等组成。以Home Assistant 为中心管理平台,通过传感器模块、WiFi 通信协议与家庭智能终端进行通信,从而完成相关数据的采集和控制。该系统是基于云端服务平台,并采用HUAWEI1080P 摄像头模块来对人脸图像进行采集,ESP32 WiFi 通信模块用于实现无线通信功能,家电照明器控制使用6 路继电器模块来演示本系统的6 个照明器,如果有更多的电器,也可适当增加控制回路。窗帘、门禁系统的控制模块均采用磁吸继电器来对电机进行控制,从而实现带动窗帘、门锁开关的功能。系统硬件的架构如图3所示。
图3 系统硬件架构示意图
Home Assistant系统支持大部分操作系统,包括macOS、Linux、Windows 等。Home Assistant 的内核结构如图4 所示,主要负责家庭自动化系统中的家居控制模块。可分为四个部分。①事件总线。处理信息模块采集到的事件信息,并传送到Esp核心。②状态机。跟踪事件信息状态,并在状态更改时触发状态更改事件。③服务。在事件总线上侦听调用服务事件,并允许其他代码的注册服务。④计时器。在事件总线上定时发送一个时间更改事件。
图4 Home Assistant内核结构图
本研究设计的人脸检测与人脸识别系统是基于Dlib.face_recognition 库与安卓手机IP 摄像头的,从而实现人脸探测与人脸识别的功能,face_recognition的安装如图5所示。
图5 安装face_recognition
在Home Assistant 系统中安装搭建好face_recognition 库后,在Home Assistant 的配置文件configuration.yaml 中配置好安卓手机IP 摄像头、人脸探测和人脸识别的相关代码程序。在配置dlib 时,要指定使用相应的摄像头。其中,人脸探测的探测周期设为2 s。因为每隔2 s会判断一下摄像头的影像是否出现人脸,配置代码如图6所示。
图6 Dlib人脸探测与识别的配置代码截图
Home Assistant 系统通过直接控制步进电机的正反转,从而实现窗帘的开与关。步进电机通过ESPHome 接入到Home Assistant 系统中,要在ESPHome 的配置文件中配置服务,名称为control_stepper。然后将UploadESPHome.yaml 配置文件上传到ESP32 中。ESP32 与步进电机接好线路,在Home Assistant 系统的概览界面滑动窗帘控制滑条,实现对步进电机的控制。无线开关信号、窗帘控制信息是由ESPHome.yaml 系统进行信息交互,通过WiFi 可使HA 的APP 软件进行智能控制。具体的信息配置部分代码如下。
其他的电气设备控制系统可采用类似的方法,在ESPHome 的配置文件中配置服务,名称为control_stepper,然后将配置文件安装到ESP32 上,ESP32与继电器接好线路即可。
所有的智能家电系统硬件都按如图7 所示的电路进行连接。用数据线将ESP32 连接到电脑上,在ESPHome 中进行编译,并将ESPHome.yaml 固件文件上传到ESP32 开发板上。其中,舵机与红外传感器系统配置信息的部分代码如下。
图7 智能家电系统硬件连接图
在电脑网页登录访问Home Assistant 系统,添加集成,并将接入到Home Assistant 中的实体以卡片的形式存放在Home Assistant 的概览界面中,如图8所示。
图8 Home Assistant系统界面
在Home Assistant 概览界面中逐个点击卡片上的按钮,即可实现对家用电器的通断控制。例如,打开各个房间的灯和风扇,通过步进电机的正反转来控制继电器的通断,从而控制家电的通断、控制舵机的转动,并可调节WS2812B 灯带的状态及显示人体红外传感器是否触发等。
图9 为Home Assistant 中的总开关选项,图10为控制调节WS2812B 灯带,可实现灯带的开关、调节亮度、调节灯颜色、灯光闪烁效果选择等功能。
图9 家电控制开关
图10 WS2812B灯带调节
图11 为窗帘开关控制测试,滑动控制窗帘的滑条,步进电机逐步转动,即实现窗帘的开启与关闭效果。设置窗帘的自动化规则,从而实现自动开关窗帘,减少日常的人工干预,从而达到每日定时开关窗帘,测试结果与预期相符合。
图11 窗帘滑条开关
当前,智能家居并未在普通家庭中普及,这是因为产品的互联互通标准还存在很多问题,并没有形成统一的行业规范,这一直是该行业的痛点。本研究通过对Home Assistant 系统的基本原理和基于联网平台设计的简易家电系统控制配置过程进行研究,为开发设计新型智能型家居系统提供一定指导。