@@ -0,0 +1,202 @@
|
||||
fun:
|
||||
|
||||
####################Таймеры###############################
|
||||
timer:
|
||||
vent_work:
|
||||
name: Вытяжка в ванной – время работы
|
||||
duration: "00:20:00"
|
||||
|
||||
vent_cooldown:
|
||||
name: Вытяжка в ванной – время отдыха
|
||||
duration: "01:00:00"
|
||||
|
||||
####################Автоматизации###############################
|
||||
|
||||
automation:
|
||||
|
||||
- alias: Вытяжка в ванной – умное включение
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
above: 50
|
||||
|
||||
- platform: state
|
||||
entity_id: binary_sensor.datchik_prisutstviia_vannaia_presence
|
||||
to: "on"
|
||||
for: "00:10:00"
|
||||
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: timer.vent_cooldown
|
||||
state: "idle"
|
||||
|
||||
- condition: or
|
||||
conditions:
|
||||
# Лето и влажность > 50
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ now().month in [6,7,8] }}"
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
above: 50
|
||||
|
||||
# Не лето и влажность > 60
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ now().month not in [6,7,8] }}"
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
above: 60
|
||||
|
||||
# Или присутствие
|
||||
- condition: state
|
||||
entity_id: binary_sensor.datchik_prisutstviia_vannaia_presence
|
||||
state: "on"
|
||||
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
|
||||
- alias: Вытяжка в ванной – старт таймера при включении
|
||||
mode: restart
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
to: "on"
|
||||
|
||||
action:
|
||||
- service: timer.start
|
||||
target:
|
||||
entity_id: timer.vent_work
|
||||
|
||||
- alias: Вытяжка в ванной – выключение и cooldown
|
||||
mode: restart
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: timer.finished
|
||||
event_data:
|
||||
entity_id: timer.vent_work
|
||||
|
||||
action:
|
||||
- service: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
|
||||
- service: timer.start
|
||||
target:
|
||||
entity_id: timer.vent_cooldown
|
||||
|
||||
|
||||
- alias: Вытяжка в ванной – периодическая проверка влажности
|
||||
mode: single
|
||||
trigger:
|
||||
# После перезапуска Home Assistant
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
|
||||
# Периодическая проверка каждые 5 минут
|
||||
- platform: time_pattern
|
||||
minutes: "/5"
|
||||
|
||||
condition:
|
||||
# Вентиляция сейчас выключена
|
||||
- condition: state
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
state: "off"
|
||||
|
||||
# Таймер отдыха закончился
|
||||
- condition: state
|
||||
entity_id: timer.vent_cooldown
|
||||
state: "idle"
|
||||
|
||||
# Влажность выше порога по сезонам
|
||||
- condition: or
|
||||
conditions:
|
||||
|
||||
# Лето → >50%
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ now().month in [6,7,8] }}"
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
above: 50
|
||||
|
||||
# Не лето → >60%
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ now().month not in [6,7,8] }}"
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
above: 60
|
||||
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
|
||||
|
||||
- alias: Вытяжка в ванной – резкий рост влажности
|
||||
mode: restart
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
||||
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% if trigger.from_state is none or trigger.to_state is none %}
|
||||
false
|
||||
{% else %}
|
||||
{% set from_s = trigger.from_state.state %}
|
||||
{% set to_s = trigger.to_state.state %}
|
||||
{% if from_s in ['unknown','unavailable','none','']
|
||||
or to_s in ['unknown','unavailable','none',''] %}
|
||||
false
|
||||
{% else %}
|
||||
{{ (to_s | float - from_s | float) >= 15 }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
action:
|
||||
- choose:
|
||||
|
||||
# Вытяжка уже работает → +10 минут
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
state: "on"
|
||||
sequence:
|
||||
- variables:
|
||||
remaining: "{{ state_attr('timer.vent_work','remaining') }}"
|
||||
|
||||
- service: timer.start
|
||||
target:
|
||||
entity_id: timer.vent_work
|
||||
data:
|
||||
duration: >
|
||||
{% if remaining is none %}
|
||||
00:10:00
|
||||
{% else %}
|
||||
{{ (as_timedelta(remaining) + timedelta(minutes=10)) }}
|
||||
{% endif %}
|
||||
|
||||
# Вытяжка выключена → включить на 20 минут (игнор cooldown)
|
||||
default:
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
||||
|
||||
- service: timer.start
|
||||
target:
|
||||
entity_id: timer.vent_work
|
||||
data:
|
||||
duration: "00:20:00"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user