树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

通过本篇教程,你将了解 Home Assistant 自动化概念,以及自动化的组成,并通过一些例子学习如何编写自己的自动化配置。( 官方文档与官方示例 )

公众号的用户,你可以点击文章底部「阅读原文」浏览器中阅读本文,以便在电脑端参考代码与链接。

提示:慎入!这是一篇非常无趣的基础技术文。

智能家居为人诟病的一点往往是它不够“智能”,而国内的厂家又爱拿“智能”、“云”、“物联网+”之类高大上的词语做噱头,当你将这些设备买回家后,你发现它没有想象中的那么好用,难免就会失望。目前的智能家居系统,与其强调“智能”(Smart),我认为不如 Home Assistant 中的描述的“自动化”(Automation)来的贴切,事实上,在 HomeKit 以及 米家 App 中的都是以“自动化”来命名它们的。

正是“自动化”的加入,使得 Home Assistant 不再呆板,在特定情况下,你甚至可以不再使用那些操作界面,让一切自动运转,真正的“智能”起来。以我自己举例,家中除了我,没人捣鼓这些东西,都是靠“自动化”设置,实现灯光、新风、监控、警戒、夜间空调等的日常使用。

一、自动化基础

HomeKit 新建自动化

为了让大家对相关概念有一个更直观的认识,我先以 HomeKit 为例做一个展示。

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲HomeKit 新建自动化

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲HomeKit 新建自动化

如图所示我新建了“星期日落日后就打开餐厅的落地灯”这样一个自动化(仅作示例),可见 iOS 的家庭 App 新建自动化非常直观。

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲HomeKit 自动化

在这个自动化中,我们的触发条件是一个时间,即“落日”并且限制在“星期日”,当到达这一时间点时,系统自动执行“打开餐厅落地灯”这一动作。这样一个最简单的自动化,由三个不同的部分组成:触发(Trigger)条件(Condition)动作(Action)

这里我们也可以看到一般为了简化操作与保证设置的可行性,如 HomeKit、米家、阿里智能,都仅提供了较少的触发条件与可执行项,这大大限制了我们发挥的余地。

自动化组成

触发:即触发自动化规则,比如到达特定的时间点、到达某一地点、天气变化、系统变化。

条件条件是可选的,可以将自动化规则限制为仅在特定情况下执行。如一周之中我们只在周日让这个自动化起作用。

动作:当规则被触发并满足所有条件,将被执行,如开灯、调节温度、激活场景。

以官方一个简单的 Home Assistant 自动化配置为例,格式如下:

 

对应流程如下:

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲自动化流程

这个自动化表示,在下雨天,下午到晚上有人在家的话,就打开灯。

自动化配置在 configuration.yaml 中,automation: 字段下,也可以使用 automation: !include automations.yaml 将所有自动化信息独立出来。

系统内部参数

在上篇 Home Assistant 的进阶设置中我们讲到过,Home Assistant 的每一个一个设备或服务,都是通过自身唯一的实例 ID(Entity ID)被系统调用的,而在自动化配置中,我们设置触发、条件、动作的对象,也是如此。 

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲获取设备 ID

在上图所示界面,我们可以获得一个设备或服务的ID(Entity ID)、状态(State)及附加属性(Attributes)。

▼设备参数

名称 描述 示例
Entity ID 实例的唯一标识符。 light.couch_lamp
State 设备的当前状态 on、off
Attributes 设备的的 brightness

这些实例状态变化,被用作触发源,而其实时状态用作判断能否执行条件

在 Home Assistant 中,所有设备或服务,包括灯、开关、人,甚至太阳等等,都被视为一个实例(Entity)。

所有的动作(Action)都被称作服务(Services),所有可执行的服务都可以在下图开发者工具(Developer Tools)中找到,包括自定义的设备与服务。比如上例中的 light.turn_on 能够打开系统中的任何灯,只需要添加类似 entity_id: light.couch_lamp 的指定参数即可。

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲Services 工具

二、自动化编辑器

0.45 版本之后,Home Assistant 还提供了一个自动化编辑器,在侧边栏找到 Configuration > Automations

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲自动化编辑器

继续以上个自动化为例,用图像界面编辑器添加,如下图所示:

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲自动化“Rainy Day”

自动化编辑器能够使得相关配置工作简化,它提供了触发、条件和动作的类别选择,但是你还需要在开发者工具(Developer Tools)中找到你需要的实例 ID(Entity ID)、状态(State)和服务(Service)的详细信息并手动填入编辑器。

注意:自动化编辑器 Data 参数采用 JSON 格式,与配置文件 YAML 语法有所不同,请按开发者工具(Developer Tools)中的示例编写。

因为自动化编辑器需要调用 automations.yaml 文件,需要采用 automation: !include automations.yaml 将自动化信息独立出来。

三、自动化详解

触发(Trigger)

触发是启动自动化的规则,可以为同一规则设置多个触发器。一旦触发,Home Assistant 将验证相关条件,并执行动作

事件触发

 

Home Assistant 触发

由 Home Assistant 的启动或停止来触发。

 

MQTT触发

收到来自 topic 的消息后触发。

 

数值触发

设备的状态达到预设范围时触发,如温度低于xx度。

 

状态触发

设备的状态变化来触发。

 

日升日落触发

顾名思义,日升或日落时触发,可设置提前或推迟时间。

 

模板触发

模板值为 True 时触发。

 

时间触发

在某时刻触发。

 

区域触发

到达或离开某地时触发,目前仅支持 OwnTracks 平台以及 iCloud 平台。

 

多个触发

触发其中一个,自动化就会被被执行。

 

条件(Condition)

条件是自动化规则的可选部分,用来限制触发后的执行,防止误操作。

逻辑关系

与(AND)

同时满足所有条件才执行。

 
或(OR)

只要满足一个条件就执行。

 
混合 AND 和 OR

示例:下雨或者温度低于20℃,同时有人在家时执行。

 

条件类型

数值条件
 
状态条件
 
日升日落条件
 
模板条件
 
时间条件
 
区域条件
 

示例

 

动作(Action)

动作通过服务或事件与其他内容进行交互。在服务中需要指定实例 ID(entity_id)和可选的参数(data)。

 

四、后期预告

说实话,没有想到大家有如此高的热情,毕竟除开一些演示图片,技术文当真是枯燥又无趣,而自动化这一篇更是其中的巅峰,还好到这里整个系列文章算是告一段落。

每个人的情况不同、设备不同,由于篇幅有限,基础篇章中我没有非常具体的讲一些设备和组件,当然我也不可能做到面面俱到,但是我希望通过之前的文章能够引领大家入门,能够让大家少走些弯路。除了官方文档、官方论坛,大家还可以到中文论坛瀚思彼岸进行 Home Assistant 相关讨论,其中有很多具体的设备接入与插件配置。

这个系列不会结束,但是应该不会如此密集地发文了,后期或许会做一两期个性化的内容,比如 Floorplan 或是 HADashboard,有机会再做智能音箱接入的内容。同时希望能与大家分享更多关于智能家居的内容,用心打造我们每一个人自己的智能家居与生活。

效果展示:



树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲Floorplan

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲Floorplan

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲HomeKit

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲Floorplan via Carlo

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲Floorplan via Carlo

PS:这种嵌入插座哪里能买得到……

当然,你也可以采用这样的形式:

树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

▲3D Floorplan




树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统(6):自动化

版权声明

本文所有文字著作权,所有图片、图形、设计方案的相关知识产权归公众号 “智能改造家” 所有。任何公司、组织、个人未经著作权人同意,均不得直接使用、允许使用本文任何内容或用户的知识产权。一经发现,著作权人将诉诸法律予以解决。



发表评论