玩转智能家居 篇十二:Home Assistant自动化编写指南(三)

前面两篇文章分别介绍了 Home Assistant 自动化中的触发条件以及环境条件,触发条件在自动化编写中是必须配置的,而环境条件则是可选的。而今天要说的自动化动作和他们两个比起来,就要复杂得多,也是 Home Assistant 自动化的核心

动作

自动化的动作,是当触发条件被触发,环境条件得到满足后,Home Assistant 将要执行的任务。动作是Home Assistant自动化的核心部分,用于实现对设备实体的操作

点击添加动作按钮后,可以看到下拉菜单中列出的所有动作类型

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图1

这些动作可以帮我们实现什么有趣的功能?下面一起来看看

调用服务:这是最常见的动作类型。它会调用 Home Assistant 中的服务来控制设备。例如,可以调用light.turn_on服务来打开一个灯光,或者调用media_player.play_media服务在媒体播放器上播放特定的音乐。如果要查看并调试所有服务,可以在点击左侧开发者工具界面,在服务选项中查看并调试

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图2

等待指定时间(延迟):顾名思义该类型的动作会让Home Assistant等待一段时间,然后进行下一个动作。例如,设置一个动作为“关闭灯光,然后等待5分钟,再开启灯光”。你可以指定等待的具体时长,例如几小时、几分钟、几秒、几毫秒,分别对应下图的hh、mm、ss、ms

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图3

如果想要在动作中,再次限定执行条件,那么可以再次添加环境条件类型,这样只有满足了条件才会继续向下执行动作

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图4

播放媒体:通过音响或者电视播放指定的媒体资源,具体配置参数可以参考https://www.home-assistant.io/integrations/media_player官方文档

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图5

等待模版为真,这个类型就比较复杂了,在自动化的过程中,需要让某个动作等待一段时间,或者等待某个条件成立后再进行,就需要设置这个类型。里面涉及到模版语法、超时时间等复杂概念,后面有时间再说

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图6

其他的类型基本用不到,这里就不展开说明了。剩余的类型大部分都与脚本有关,而脚本则是用来简化自动化操作的,至于更复杂的自动化操作就直接写插件了

自动化

现在就可以结合 Home Assistant 里的所有实体,分别编辑触发条件环境条件动作这三个要素来编写适合自己家的自动化

如果更喜欢使用yaml格式来编辑整个自动化,那么可以点击整个自动化顶部的三个点来编辑自动化,再选择以YAML编辑选项

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图7

整个界面就会从图行界面切换为代码配置界面,这样对于习惯yaml的用户来说更为直观。并且使用YAML方式,当需要分享自动化或者想使用别人的自动化的时候,只需直接复制、粘贴即可

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图8

再来说说自动化的模式。在上面的自动化编辑中,可以看到在图形界面上有一个更改模式的选项,在YMAL界面同样可以看到mode:这样的字段。它们都是同一个意思,就是更改自动化执行的模式

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图9

Home Assistant 给自动化提供了四种模式:单点、重启、队列、并行,模式的不同,决定了同一个自动化被同时(追加)多次执行时应该怎样决断

先来看默认单点(single)模式,自动化触发后会执行一系列的动作,如果在执行过程中再次触发了自动化,那么新的触发将会被忽略。比如开门回家的时候,入户灯会持续打开一分钟再自动关闭,如果在这一分钟内,再次开门触发自动化,那么灯还是会按照原本的设定,只亮一分钟

重启(restart),如果配置了这个模式,在执行过程中自动化再次被触发,则会从头开始从新执行该自动化。打个比方,当客厅的运动传感器检测到有人时,播放一段音乐,然后持续5分钟。如果在这5分钟里,运动传感器又一次检测到有人,就会立即停止当前播放的音乐,然后重新开始播放,并再次持续5分钟。当然重新执行的自动化,必须要满足自动化中设置的触发条件才会重复执行

队列(queued)模式可以简单的理解为执行的自动化都要按照先后顺序进行排队,每次自动化被触发后,如果当前已经有一个自动化正在执行,那么新的触发会被排进一个"队列"中,等待当前自动化执行完毕后按照顺序再执行下一个。同时,我们还可以设置队列的最大长度,如果设置队列长度为2,那么当有第3个触发事件到来时,由于队列已经满了,这个触发事件会被忽略。默认的队列长度为10

最后的并行(parallel)模式则是每次自动化被触发后,都会创建一个新的实例来独立执行。比如设定了一个自动化:当有人按门铃时,灯会亮起持续5分钟。假设在这5分钟内,门铃被再次按下,那么原本的灯依旧会亮5分钟,而新的触发将启动另一个5分钟的定时,也就是说每次门铃被按下,灯都会重新开始亮5分钟

通过上面的说明,再来看官方的示意图就很容易理解了

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图10

如果要对自动化进行重命名,那么同样的点击右上角的三个点,选择重命名选项即可

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图11

有些时候,编辑的自动化非常复杂,环境条件和动作都非常多,一旦出了问题,都不知道从哪里下手解决,怎么办呢?可以在自动化列表界面,点击右侧三个点,对自动化的执行过程进行跟踪

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图12

在跟踪界面,点击顶部的时间栏,可以选择自动化最近5次的执行过程

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图13

点击左侧执行流程图的上下箭头,可以追踪每一步执行的细节。如果自动化设置有环境条件,点击图形的上的图标,可以看到自动化执行时,是否满足环境条件

而自动化执行成功或失败,都可以在 Trace Timeline 中看到执行的结果

玩转智能家居 篇十二:Home Assistant自动化编写指南(三)-图14

总结

通过自动化系列三篇文章的详细介绍,相信大家都会学会了如何编写自动化。每个家里的设备不一致,想要实现的效果也不一致,是需要慢慢在生活中去感受的,哪里可以优化,哪里可以配置自动化来节约复杂开关的操作等等,这样才能使生活更加便利、更加智能!

该内容正在参与【2023值得总结】征稿活动,飞天茅台、iPhone15、6000元现金等大奖疯狂派发中,快来分享你的年度好物,证明2023有在好好生活,赢取超级大奖!点击参与→


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

转载请说明出处 内容投诉内容投诉
南趣百科 » 玩转智能家居 篇十二:Home Assistant自动化编写指南(三)

南趣百科分享生活经验知识,是您实用的生活科普指南。

查看演示 官网购买