自带的计时器就可以
homeassistant:
customize:
# timer.timer_task:
# friendly_name: 延迟倒计时
# input_text.timer_task_time:
# friendly_name: 设置延迟时间
# icon: mdi:timer-cog-outline
# script.timer_task_cancel:
# friendly_name: 取消倒计时
# icon: mdi:timer-off
automation.timer_task:
friendly_name: 延迟任务自动化
icon: mdi:av-timer
timer:
timer_task:
name: 延迟任务计时器
duration: '00:00:00'
restore: true
# icon:
input_text:
timer_task_time:
name: 设置延迟任务时间
initial: 00:00
pattern: '([01][0-9]|2[0-3]):[0-5][0-9]'
icon: mdi:timer-cog-outline
input_boolean:
timer_task_action:
name: 延时任务执行操作
icon: mdi:power
input_select:
timer_task_device:
name: 延时任务执行设备
options:
- = = = =
- 风扇
- 空调
- 电热毯
- 电蚊香
initial: '= = = ='
icon: mdi:form-select
# script: # 此处取消是由前端卡片中的 互动-点击行为-执行动作实现
# timer_task_cancel:
# sequence:
# - action: timer.cancel ## 取消倒计时
# entity_id: timer.timer_task
# # - delay: "00:00:01"
# - action: input_text.set_value ## 时间框恢复默认值
# target:
# entity_id: input_text.timer_task_time
# data:
# value: "00:00"
# - action: input_select.select_option ## 设备选择框恢复默认值
# target:
# entity_id: input_select.timer_task_device
# data:
# option: "= = = ="
automation:
- alias: "timer_task"
description: "倒计时开关选定设备的自动化"
mode: single
triggers:
- event_type: timer.finished # 此处不可使用 timer.started 否则会立即关闭设备
event_data: # 文档:https://www.home-assistant.io/integrations/timer/#events
entity_id: timer.timer_task
trigger: event
id: 计时器执行触发
alias: 计时器执行触发
- entity_id: input_text.timer_task_time
trigger: state
id: 设置时间后触发
alias: 设置时间后触发
- trigger: template
value_template: "{{ states('input_select.timer_task_device') != "= = = =" }}"
id: 选择设备后触发
alias: 选择设备后触发
- trigger: state
entity_id:
- timer.timer_task
to: idle
id: 计时器结束触发
from: active
for:
hours: 0
minutes: 0
seconds: 1
conditions: []
actions:
- choose:
# 分支1:启动计时器
- conditions:
- condition: trigger
id:
- 选择设备后触发
- 设置时间后触发
- condition: template
value_template: "{{ states('input_text.timer_task_time') != '00:00' }}"
alias: 时间输入框不等于"00:00"
- condition: template
value_template: "{{ states('input_select.timer_task_device') != '= = = =' }}"
alias: 设备选择框不等于"= = = ="
sequence:
- service: timer.start
data_template:
entity_id: timer.timer_task
duration: "{{ states('input_text.timer_task_time') }}"
# 分支2:计时器执行触发——设备控制(开/关)
- conditions:
- condition: trigger
id: 计时器执行触发
- condition: template
value_template: "{{ states('input_select.timer_task_device') != '= = = =' }}"
alias: 设备选择框不等于"= = = ="
sequence:
- variables:
device: "{{ states('input_select.timer_task_device') }}"
action_state: "{{ states('input_boolean.timer_task_action') }}"
service: >
{% if device == '风扇' %}
button.press
{% elif device == '空调' %}
climate.{{ 'turn_on' if action_state == 'on' else 'turn_off' }}
{% elif device in ['电热毯','电蚊香'] %}
switch.{{ 'turn_on' if action_state == 'on' else 'turn_off' }}
{% endif %}
target_entity: >
{% if device == '风扇' %}
button.gree_fan_1_dian_yuan
{% elif device == '空调' %}
climate.lumi_mcn02_e418_air_conditioner
{% elif device == '电热毯' %}
switch.broadlink1_s2
{% elif device == '电蚊香' %}
switch.broadlink1_s1
{% endif %}
- service: "{{ service }}"
target:
entity_id: "{{ target_entity }}"
# 分支3:计时器结束触发——恢复默认值
- conditions:
- condition: trigger
id: 计时器结束触发
sequence:
- service: input_select.select_option
target:
entity_id: input_select.timer_task_device
data:
option: "= = = ="
alias: 执行选择框恢复默认值
# - service: input_text.set_value
# target:
# entity_id: input_text.timer_task_time
# data:
# value: "00:00"
# alias: 时间框恢复默认值
|