Home Assistant 带倒计时显示的定时开关

Windix Feng
4 min readSep 30, 2023

--

我一直不太用 Home Assistant 的原因是总感觉不入门,特别是一些你总觉得应该很自然支持的功能,如果你去 google 就会发现总是长篇大论的通过非官方支持的方法才能弄出来,实在是麻烦。

不过最近的一些 Home Assistant 的改动确实让我觉得好用一些了,比如现在有了 Home Assistant Community Store / HACS 社区商店,让很多组件的安装容易了很多。

这里主要记录下我如何实现了带有倒计时显示,并且可以自定义时长的定时开关。

要求:

  • 你能够安装 HACS,需要 2023.6.0 之后的版本
  • 通过 HACS 安装这个 Repo: Timer Bar Card

原理:

我这边泳池的水泵是通过一个智能开关 switch.plug-pool-pump 来控制的。参考了 Timer Bar Card 官方的说明,它实现的原理是这同样的:

  • 一个脚本来实现开关的开,延时,关(我在里面增加了一个 helper 来自定义时长)
  • 将这个脚本绑定到开关上,然后调用 Timer Bar Card 实现倒计时显示

步骤:

首先先创建一个 Helper: Settings > Devices & Services > Helpers tab, 点右下角的 CREATE HELPER 按钮,类型选择 Number:

这里的含义是这个 plug-pool-pump-time 变量可以取最小值 10,最大值 120。 我们用它来记录开关的运行分钟数。

然后在 Automation 里面创建一个脚本 plug_pool_pump_timer_script 内容如下:

plug_pool_pump_timer_script:
alias: plug_pool_pump_timer_script
sequence:
- service: homeassistant.turn_on
data: {}
target:
entity_id: switch.plug_pool_pump
- delay:
hours: 0
minutes: '{{ states.input_number.plug_pool_pump_time.state | int }}'
seconds: 0
milliseconds: 0
- service: homeassistant.turn_off
data: {}
target:
entity_id: switch.plug_pool_pump
mode: single

在 UI 上看起来是这样的:

最后创建两个 card,一个是泳池开关本身:

我这边主要是把第一步创建的 helper: plug-pool-pump-time 加进去,会显示为一个滑杆 slider

然后再建一个新的 card 来放置倒计时器(新建时选择 Custom: Timer Bar Card),内容如下:

type: custom:timer-bar-card
entities:
- switch.plug_pool_pump
duration:
script: script.plug_pool_pump_timer_script
tap_action:
action: call-service
service: script.plug_pool_pump_timer_script
hold_action:
action: more-info

完成之后就是这个样子的:

然后当你开启 plug-pool-pump 开关的时候,就会有倒计时显示了。而且在点击开关之前,可以通过调整 plug-pool-pump-time 来控制时长(点了开关之后调整只对下次有效)。

Enjoy!

--

--

No responses yet